一键导入
run-sdk-tests
// Run the Restate SDK conformance test suite locally against this SDK's Docker image. Use when the user wants to run sdk tests, run conformance tests, verify an implementation, or test against the test suite.
// Run the Restate SDK conformance test suite locally against this SDK's Docker image. Use when the user wants to run sdk tests, run conformance tests, verify an implementation, or test against the test suite.
Update the SDK test service implementations to match a new version of the e2e conformance contracts. Use when the user says "update sdk tests", "update test contracts", or gives a specific e2e release tag to update to.
When the user asks to add a new option/field/config to service, handler, endpoint, ServiceOptions, HandlerOpts, ObjectOptions, WorkflowOptions, or the discovery schema
When the user asks to add a new e2e test to the restate-e2e-services package
| name | run-sdk-tests |
| description | Run the Restate SDK conformance test suite locally against this SDK's Docker image. Use when the user wants to run sdk tests, run conformance tests, verify an implementation, or test against the test suite. |
| user-invocable | true |
The conformance test suite lives in a separate repo (restatedev/e2e). It's a Gradle/Kotlin test runner that starts Restate and the SDK service in containers and drives them through the ingress API.
# Build image + run all default suite tests
./.tools/run-sdk-tests.sh
# Skip rebuild if you haven't changed service code
./.tools/run-sdk-tests.sh --skip-build
# Test the restate-sdk-gen services
./.tools/run-sdk-tests.sh --gen
# Run a single test class (extra flags pass through to the runner)
./.tools/run-sdk-tests.sh --skip-build --test-suite=default --test-name=Combinators
.github/workflows/integration.yaml (single source of truth — no version to keep in sync manually)sdk-tests.jar from GitHub releases and caches it in tmp/ (version-pinned filename)java -jar sdk-tests.jar run ... directly — no Docker wrapper, Java runs on the hostIf you need more control, download the JAR and run it directly:
# Check current version
grep -m1 'uses: restatedev/e2e/sdk-tests@' .github/workflows/integration.yaml
# Run
RESTATE_CONTAINER_IMAGE=ghcr.io/restatedev/restate:main \
java -jar tmp/sdk-tests-<version>.jar run \
--sequential \
--image-pull-policy=CACHED \
--test-suite=default \
--test-name=Combinators \
--service-container-image=localhost/e2e-ts-test-services:local
| Flag | Purpose |
|---|---|
--test-suite=default | Which suite to run (default, alwaysSuspending, threeNodes, etc.) |
--test-name=ClassName | Run only one test class (requires --test-suite) |
--exclusions-file=path | YAML file listing tests to skip |
| Suite | Description |
|---|---|
default | Core tests, single node |
alwaysSuspending | Every invocation suspends between steps |
threeNodes | Multi-node cluster |
persistedTimers | Forces timer persistence |
lazyState | Disabled eager state loading |
Pass all (the default) to run every suite sequentially.
Test logs are written to ../e2e/sdk-tests/test_report/<timestamp>/<suite>/<TestClass>/:
testRunner.log — client-side request/response logs and test executionruntime_0.log — Restate server logdefault-service_0.log — SDK service container logA ✅ or ❌ per test is printed to stdout immediately.