Validate Java OpenFeature standalone and SSI modes - #7559
Draft
leoromanovsky wants to merge 4 commits into
Draft
Conversation
Exercise the bundled-provider and agent-injected deployment shapes through dedicated Java feature-flagging scenarios.
Contributor
|
|
|
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.
Motivation
Java customers need two explicit OpenFeature deployment choices: a standalone
dd-openfeatureruntime that works withoutdd-java-agent, and SSI injection for applications that carry only the OpenFeature SDK. The system-test suite previously exercised neither artifact boundary, so a provider accidentally supplied by the application classpath or an implicit dependency on the Datadog Agent could go unnoticed.Changes
This adds Java-only standalone and SSI feature-flagging scenarios backed by the existing mock UFC service. The spring-boot fixture now builds two artifacts from the same source: the standalone artifact contains
dd-openfeature, while the SSI artifact deliberately excludes it. Runtime selection starts standalone without-javaagent, or starts SSI with the local Java agent and tracing disabled. The/ffecontract reports deployment mode and provider identity, waits for injected-provider readiness, evaluates a real flag, and verifies that the mock backend received the UFC request. Both scenarios are registered in the end-to-end workflow and test activation map. Weblog metadata restricts both scenarios to the Java spring-boot target so generic CI matrices do not schedule them against unsupported libraries or weblogs.Decisions
Both scenarios remain agentless at the infrastructure level: no Datadog Agent container is present. This separates the Java agent used for SSI bytecode injection from the Datadog Agent service and proves that standalone does not load the Java agent at all. The application compiles against OpenFeature SDK 1.20.2 rather than the Datadog Provider type, so SSI cannot pass through a hidden compile-time provider dependency. These scenarios are intentionally excluded from tracer-release grouping until the deployment modes have established CI stability. This PR is downstream of DataDog/dd-trace-java#12252; the exact branch artifact is used for local cross-repository proof until that Java stack reaches
master.Validation
SYSTEM_TEST_BUILD_ATTEMPTS=3 ./build.sh java -i weblog -w spring-bootsdk-1.20.2.jaranddd-openfeature, while SSI containssdk-1.20.2.jarand nodd-openfeature../run.sh FEATURE_FLAGGING_AND_EXPERIMENTATION_JAVA_STANDALONE tests/ffe/test_java_openfeature_deployment_modes.py::Test_FFE_Java_OpenFeature_Standalone— 1 passed againstjava@1.66.0-SNAPSHOT+6b47adb9d3../run.sh FEATURE_FLAGGING_AND_EXPERIMENTATION_JAVA_SSI tests/ffe/test_java_openfeature_deployment_modes.py::Test_FFE_Java_OpenFeature_SSI— 1 passed againstjava@1.66.0-SNAPSHOT+6b47adb9d3../run.sh TEST_THE_TEST tests/test_the_test/test_manifest.py tests/test_the_test/test_version.py tests/test_the_test/test_ci_orchestrator.py tests/test_the_test/test_group_rules.py— 186 passed../format.shjava/prodSpring Boot instance 2 completed both standalone and SSI steps successfully under the production-version manifest treatment.java/devSpring Boot instance 2 runs both scenarios against current Javamaster(1.66.0-SNAPSHOT~2d8d93dd6b); both fail until the downstream Java stack above lands. The exact6b47adb9d3branch artifact passes both local scenarios as recorded above.