Classify SDK tests for Cloud execution - #3033
Draft
THardy98 wants to merge 1 commit into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What was changed?
Temporal SDK tests are now eligible for Cloud execution by default. Tests that cannot run in the isolated Cloud namespace use JUnit 4 categories with one of three explicit reasons: they require a local server, require Cloud resources that CI does not provision, or still need Cloud-specific adaptation.
The new
:temporal-sdk:testCloudtask excludes that category hierarchy while leaving the normaltesttask unchanged. Cloud CI now runs the eligible task through the envconfig harness and per-run mTLS namespace introduced by #2998 and #3032 instead of selecting one workflow method by name.Straightforward compatibility issues were fixed rather than excluded: secondary clients and activity clients inherit the configured namespace and connection options, direct external clients preserve envconfig TLS and authentication, and test assertions use the active namespace. Nexus endpoint and custom search-attribute suites remain explicitly excluded until their required resources can be provisioned.
This PR is stacked on #3032 and should be retargeted to
mainafter the two lower PRs merge.Why?
A hand-picked Cloud smoke test does not show which parts of the SDK suite are compatible with Temporal Cloud. Runner-native categories keep eligibility beside each test, make exclusions reviewable, and allow new compatible tests to enter the Cloud lane automatically without maintaining a separate allowlist.
Breaking changes?
None. The category types and Gradle task are internal test infrastructure, and normal local test execution is unchanged.
Server PR
None.
How was this tested?
./gradlew :temporal-sdk:test --tests 'io.temporal.testing.CloudTestExclusionTest'./gradlew :temporal-sdk:testCloud --test-dry-run(1,394 tests discovered)./gradlew :temporal-sdk:testCloud(passed)./gradlew :temporal-sdk:test(passed)actionlint .github/workflows/ci.yml./gradlew spotlessApplygit diff --checkThe stacked lower PRs are green, including the live ephemeral-namespace Cloud lifecycle in #3032. This PR's CI run provides the full Cloud execution result.
Documentation
CONTRIBUTING.mddocuments the Cloud task, dry-run inventory, default eligibility policy, and exclusion reasons.