{"id":29228420,"url":"https://github.com/restatedev/sdk-test-suite","last_synced_at":"2026-03-13T00:32:42.851Z","repository":{"id":251023970,"uuid":"835826722","full_name":"restatedev/sdk-test-suite","owner":"restatedev","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-12T16:25:38.000Z","size":419,"stargazers_count":2,"open_issues_count":7,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-12T20:50:23.906Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/restatedev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-07-30T15:52:25.000Z","updated_at":"2026-02-16T08:53:19.000Z","dependencies_parsed_at":"2026-01-14T15:00:53.206Z","dependency_job_id":null,"html_url":"https://github.com/restatedev/sdk-test-suite","commit_stats":null,"previous_names":["restatedev/sdk-test-suite"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/restatedev/sdk-test-suite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restatedev%2Fsdk-test-suite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restatedev%2Fsdk-test-suite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restatedev%2Fsdk-test-suite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restatedev%2Fsdk-test-suite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/restatedev","download_url":"https://codeload.github.com/restatedev/sdk-test-suite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restatedev%2Fsdk-test-suite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30451576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T21:31:01.033Z","status":"ssl_error","status_checked_at":"2026-03-12T21:30:43.161Z","response_time":114,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-03T10:10:54.562Z","updated_at":"2026-03-13T00:32:42.843Z","avatar_url":"https://github.com/restatedev.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Restate SDK test suite\n\nThis tool is a test suite/conformance suite runner for Restate SDKs.\n\n## Architecture\n\nThis tool requires the SDK developer to implement a well-defined set of services, specified [here](./src/main/kotlin/dev/restate/sdktesting/contracts), and package the application as docker container. \nFor an example implementation, look [here](https://github.com/restatedev/sdk-java/tree/main/test-services/src/main/kotlin/dev/restate/sdk/testservices).\n\nThe tool then starts for each test class Restate alongside with the service deployment container, and sends some requests to it.\n\nThe tool is split into test suite, test classes and test methods. \nA test suite is composed by multiple test classes, which itself is composed by multiple test methods. \nTest methods usually run in parallel wrt the other methods in the same class, and each individual class deploys an isolated docker network with its own runtime and its own service deployment container. \nTest suites run the same set of test classes, with different parameters of the runtime tuned.\n\n## CI usage\n\nCheck as example: https://github.com/restatedev/sdk-python/blob/main/.github/workflows/integration.yaml\n\n## Running locally\n\nYou need a JVM \u003e= 21, and the test tool. You can get the test tool from the [releases page](https://github.com/restatedev/sdk-test-suite/releases). If you're investigating a CI failure, you might need the exact tool version the CI is currently using (which is usually printed in the title of the CI task).\n\nTo run all the tests:\n\n```shell\njava -jar restate-sdk-test-suite.jar run \u003cTEST_SERVICES_IMAGE\u003e\n```\n\nTo run an individual test:\n\n```shell\njava -jar restate-sdk-test-suite.jar run --test-suite=\u003cSUITE\u003e --test-name=\u003cTEST_NAME\u003e \u003cTEST_SERVICES_IMAGE\u003e\n```\n\nTo change the runtime container image, use `--restate-container-image=\u003cRUNTIME_CONTAINER_IMAGE\u003e`.\n\nBy default, the tool will always pull images, unless they have the repository prefix `restate.local` or `localhost`. To always try to use the local cache, use `--image-pull-policy=CACHED`.\n\nAll the environment variables prefixed with `RUST_` and `RESTATE_` will be propagated to every deployed runtime container. \n\n### Exclusions\n\nSome SDKs might not implement all the features. For this purpose, the tool allows to configure the excluded test classes in an ad-hoc file. To run with the exclusions file:\n\n```shell\njava -jar restate-sdk-test-suite.jar run --exclusions-file exclusions.yaml \u003cTEST_SERVICES_IMAGE\u003e\n```\n\nAfter every run a new exclusions file is generated in the test report, with the failed/skipped tests.\n\n## Local debug\n\nYou can debug the service deployment by exposing it to a local port, and ask the tool to use a local port instead of deploying a container. To do so:\n\n* Run the service with your IDE and the debugger\n* Run `java -jar restate-sdk-test-suite.jar debug --test-suite=\u003cTEST_SUITE\u003e --test-name=\u003cTEST_NAME\u003e default-service=\u003cPORT\u003e`\n\nWhen the test starts, it will also print to console the environment variables the service deployment should be started with.\n\nUsing the `debug` command, you can also:\n\n* Expose the environment to your localhost (e.g. to use the CLI to introspect the state) and keep it up and running after the end of the test using:\n\n```shell\njava -jar restate-sdk-test-suite.jar debug \\\n  --local-ingress-port=8080 --local-admin-port=9070 --retain-after-end \\\n  --test-suite=\u003cTEST_SUITE\u003e --test-name=\u003cTEST_NAME\u003e \\\n  default-service=\u003cPORT\u003e\n```\n\nPlease note, some tests requiring to kill/stop the service deployment won't work with the `debug` command.\n\n## Building this tool\n\n```shell\n./gradlew shadowJar\n```\n\n## Releasing this tool\n\nJust push a new git tag:\n\n```shell\ngit tag v1.1 \ngit push --tags\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frestatedev%2Fsdk-test-suite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frestatedev%2Fsdk-test-suite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frestatedev%2Fsdk-test-suite/lists"}