Skip to content

Enable EVP flagevaluation system tests for Java#7158

Draft
leoromanovsky wants to merge 13 commits into
mainfrom
leo.romanovsky/ffe-evp-flagevaluation-enable-java
Draft

Enable EVP flagevaluation system tests for Java#7158
leoromanovsky wants to merge 13 commits into
mainfrom
leo.romanovsky/ffe-evp-flagevaluation-enable-java

Conversation

@leoromanovsky

@leoromanovsky leoromanovsky commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Motivation

tests/ffe/test_flag_eval_evp.py covers the EVP flagevaluation contract for server-side SDKs. Java has a passing focused local run against the implementation PR, including natural degradation over the production per-flag full-tier cap, so its manifest can move from missing_feature (FFL-2446) to the validated version.

Changes

  • Enables tests/ffe/test_flag_eval_evp.py for Java in manifests/java.yml at v1.64.0-SNAPSHOT.
  • Leaves the test implementation unchanged from Add EVP flagevaluation system tests #7146.
  • Keeps this as a sibling PR based on leo.romanovsky/ffe-evp-flagevaluation-system-tests, not stacked on other language enablement branches.

Decisions

  • This PR enables only Java; other languages are enabled by separate sibling PRs after their own local pass evidence.
  • Existing OTel metric coverage stays in tests/ffe/test_flag_eval_metrics.py.

Validation

  • Date: 2026-06-17
  • SDK PR: feat(openfeature): emit server-side EVP flagevaluation dd-trace-java#11639
  • SDK commit: 882384623d2a88bbbcaf506a2813b00490fd5bc7
  • system-tests commit: 3e4cf457e938b14babefb155e4ff68a64c80fd45
  • Command: ./build.sh java -w spring-boot
  • Result: PASS
  • Command: ./run.sh FEATURE_FLAGGING_AND_EXPERIMENTATION -k "test_flag_eval_evp"
  • Result: PASS, 8 passed, 2577 deselected in 83.08s
  • Runtime: Agent 7.80.1; library java@1.64.0-SNAPSHOT+882384623d; weblog spring-boot; Linux aarch64
  • Payload evidence from agent flagevaluation intake:
    • evp-count-flag: 1 event, total evaluation_count=5
    • evp-burst-aggregation-flag: 1 event, total evaluation_count=512
    • evp-high-cardinality-aggregation-flag: 128 events, total evaluation_count=128
    • evp-degradation-flag: 10,001 events, total evaluation_count=10050, with 10,000 full rows and one degraded bucket carrying evaluation_count=50

@github-actions

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

manifests/java.yml                                                      @DataDog/asm-java @DataDog/apm-java

@datadog-official

datadog-official Bot commented Jun 17, 2026

Copy link
Copy Markdown

Pipelines  Tests

Fix all issues with BitsAI

⚠️ Warnings

🚦 16 Pipeline jobs failed

Testing the test | System Tests (java, dev) / End-to-end #1 / jersey-grizzly2 1   View in Datadog   GitHub Actions

🧪 2 Tests failed

tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Basic.test_ffe_evp_flagevaluation_basic[jersey-grizzly2] from system_tests_suite   View in Datadog
AssertionError: Flag evaluation failed: 
assert 404 == 200
 +  where 404 = HttpResponse(status_code:404, headers:{'Content-Length': '0'}, text:).status_code
 +    where HttpResponse(status_code:404, headers:{'Content-Length': '0'}, text:) = <tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Basic object at 0x7fcb099e36b0>.r

self = <tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Basic object at 0x7fcb099e36b0>

    def test_ffe_evp_flagevaluation_basic(self) -> None:
>       assert self.r.status_code == 200, f"Flag evaluation failed: {self.r.text}"
E       AssertionError: Flag evaluation failed: 
...
tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Burst_Aggregation.test_ffe_evp_flagevaluation_burst_aggregation[jersey-grizzly2] from system_tests_suite   View in Datadog
AssertionError: Request 1 failed: 
assert 404 == 200
 +  where 404 = HttpResponse(status_code:404, headers:{'Content-Length': '0'}, text:).status_code

self = <tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Burst_Aggregation object at 0x7fcb099e3d10>

    def test_ffe_evp_flagevaluation_burst_aggregation(self) -> None:
        for index, response in enumerate(self.responses):
>           assert response.status_code == 200, f"Request {index + 1} failed: {response.text}"
E           AssertionError: Request 1 failed: 
...

Testing the test | System Tests (java, dev) / End-to-end #1 / ratpack 1   View in Datadog   GitHub Actions

🧪 2 Tests failed

tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Basic.test_ffe_evp_flagevaluation_basic[ratpack] from system_tests_suite   View in Datadog
AssertionError: Flag evaluation failed: 
assert 404 == 200
 +  where 404 = HttpResponse(status_code:404, headers:{'content-length': '0'}, text:).status_code
 +    where HttpResponse(status_code:404, headers:{'content-length': '0'}, text:) = <tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Basic object at 0x7f82f79b59a0>.r

self = <tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Basic object at 0x7f82f79b59a0>

    def test_ffe_evp_flagevaluation_basic(self) -> None:
>       assert self.r.status_code == 200, f"Flag evaluation failed: {self.r.text}"
E       AssertionError: Flag evaluation failed: 
...
tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Burst_Aggregation.test_ffe_evp_flagevaluation_burst_aggregation[ratpack] from system_tests_suite   View in Datadog
AssertionError: Request 1 failed: 
assert 404 == 200
 +  where 404 = HttpResponse(status_code:404, headers:{'content-length': '0'}, text:).status_code

self = <tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Burst_Aggregation object at 0x7f82f79b7650>

    def test_ffe_evp_flagevaluation_burst_aggregation(self) -> None:
        for index, response in enumerate(self.responses):
>           assert response.status_code == 200, f"Request {index + 1} failed: {response.text}"
E           AssertionError: Request 1 failed: 
...

Testing the test | System Tests (java, dev) / End-to-end #1 / resteasy-netty3 1   View in Datadog   GitHub Actions

🧪 2 Tests failed

tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Basic.test_ffe_evp_flagevaluation_basic[resteasy-netty3] from system_tests_suite   View in Datadog
AssertionError: Flag evaluation failed: 
assert 404 == 200
 +  where 404 = HttpResponse(status_code:404, headers:{'Content-Length': '0', 'Connection': 'keep-alive'}, text:).status_code
 +    where HttpResponse(status_code:404, headers:{'Content-Length': '0', 'Connection': 'keep-alive'}, text:) = <tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Basic object at 0x7f0fc89b4170>.r

self = <tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Basic object at 0x7f0fc89b4170>

    def test_ffe_evp_flagevaluation_basic(self) -> None:
>       assert self.r.status_code == 200, f"Flag evaluation failed: {self.r.text}"
E       AssertionError: Flag evaluation failed: 
...
tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Burst_Aggregation.test_ffe_evp_flagevaluation_burst_aggregation[resteasy-netty3] from system_tests_suite   View in Datadog
AssertionError: Request 1 failed: 
assert 404 == 200
 +  where 404 = HttpResponse(status_code:404, headers:{'Content-Length': '0', 'Connection': 'keep-alive'}, text:).status_code

self = <tests.ffe.test_flag_eval_evp.Test_FFE_EVP_Flagevaluation_Burst_Aggregation object at 0x7f0fc89c6300>

    def test_ffe_evp_flagevaluation_burst_aggregation(self) -> None:
        for index, response in enumerate(self.responses):
>           assert response.status_code == 200, f"Request {index + 1} failed: {response.text}"
E           AssertionError: Request 1 failed: 
...

View all 16 failed jobs.

ℹ️ Info

No other issues found (see more)

❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 3e4cf45 | Docs | Datadog PR Page | Give us feedback!

Base automatically changed from leo.romanovsky/ffe-evp-flagevaluation-system-tests to main June 17, 2026 15:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant