Classify SDK tests for Cloud execution - #3033
Draft
THardy98 wants to merge 1 commit into
Draft
Conversation
THardy98
force-pushed
the
feat/cloud-test-namespace
branch
from
August 25, 2026 12:06
80d1c35 to
e951a65
Compare
THardy98
force-pushed
the
feat/cloud-test-filtering
branch
4 times, most recently
from
August 25, 2026 14:51
63b9ab2 to
ed1103c
Compare
THardy98
force-pushed
the
feat/cloud-test-namespace
branch
from
August 25, 2026 17:00
e951a65 to
21ae1f4
Compare
THardy98
force-pushed
the
feat/cloud-test-filtering
branch
from
August 25, 2026 20:17
ed1103c to
5e01735
Compare
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. Every exclusion also carries a required
CloudTestExclusionNoteexplaining its concrete limitation.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. Machine-enforced notes preserve reviewer context while keeping reason filtering idiomatic to JUnit.
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,380 tests discovered)./gradlew :temporal-sdk:testCloud(passed)./gradlew :temporal-sdk:test(one unrelatedMetricsTest#testStickyCacheSizetiming failure passed on isolated rerun)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, exclusion reasons, and required note metadata.