Skip to content

test(nodejs): enable agentless EVP exposure egress - #7703

Draft
leoromanovsky wants to merge 2 commits into
exec/system-tests-agentless-side-effectsfrom
leo.romanovsky/ffe-agentless-evp-nodejs-enablement-v4
Draft

test(nodejs): enable agentless EVP exposure egress#7703
leoromanovsky wants to merge 2 commits into
exec/system-tests-agentless-side-effectsfrom
leo.romanovsky/ffe-agentless-evp-nodejs-enablement-v4

Conversation

@leoromanovsky

@leoromanovsky leoromanovsky commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Motivation

We are shipping agentless CDN-delivered configuration to make customer deployments simpler. The SDK's core Feature Flags telemetry still needs a network path out of the process: automatically use a compatible running Agent or serverless-init relay when available, and fall back to direct EVP intake when no relay exists.

FFLSDK-191 activates Node.js against the shared cross-language contract in #7299 and makes the remaining signal gap explicit before rollout.

Changes

Capability Direct intake serverless-init Agent
Exposures Enabled and locally passing Enabled and locally passing Existing coverage
Flag evaluations Not emitted yet Not emitted yet Not emitted yet
Shutdown exposure flush Enabled and locally passing
  • Activate the Express 4 weblog at Node.js 7.0.
  • Add the test observer CA to the ordinary Node.js runtime trust configuration.
  • Make Node the container PID 1 and add an opt-in SIGTERM path that closes the server before the shared shutdown marker.

Decisions

  • Target test(ffe): add direct agentless EVP contract #7299 directly; do not depend on another language activation.
  • Keep this PR exposure-only. Node.js flag-evaluation emission and privacy remain tracked by FFLSDK-19, dd-trace-js#8902, and its privacy work.
  • Do not claim the language rollout complete until both signals, EVP identity, and the safe fallback transition are merged and activated.
  • Keep the shutdown hook test-only and opt-in.
  • Keep OTLP out of scope: these contracts validate EVP egress.

Validation

System-tests base: 9c753fbcbdcc6122eed15fd5af827671fbc0771c

System-tests candidate: a548cfc82bfcad980a4bedf98eb2ce3931117582

Node.js SDK candidate: 95ae311455bc8f2c7ca65d8524e996c844546e30 from dd-trace-js#10309

./run.sh TEST_THE_TEST \
  tests/test_the_test/test_nodejs_direct_evp_shutdown.py \
  tests/test_the_test/test_manifest.py
33 passed in 11.30s

The Express 4 weblog was rebuilt from the exact SDK candidate:

DataDog/dd-trace-js#95ae311455bc8f2c7ca65d8524e996c844546e30
Library: nodejs@7.0.0-pre
Weblog variant: express4
./run.sh FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_DIRECT \
  tests/ffe/test_exposure_egress.py::Test_FFE_Exposure_Egress_Agentless_Direct \
  tests/ffe/test_exposure_egress.py::Test_FFE_Exposure_Egress_Agentless_Direct_Shutdown
2 passed in 16.17s

./run.sh FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_SERVERLESS \
  tests/ffe/test_exposure_egress.py::Test_FFE_Exposure_Egress_Agentless_Sidecar
1 passed in 22.22s

This is local mock-intake proof of routing, credentials, identity, payload uniqueness, and shutdown behavior; it is not staging or production-intake proof.

Activate direct and sidecar exposure contracts for Express and add an opt-in ordinary-process shutdown lifecycle.

Environment: Datadog workspace
@github-actions

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

tests/test_the_test/test_nodejs_direct_evp_shutdown.py                  @DataDog/system-tests-reviewers
manifests/nodejs.yml                                                    @DataDog/system-tests-reviewers
utils/build/docker/nodejs/express/app.js                                @DataDog/system-tests-reviewers
utils/build/docker/nodejs/express4.Dockerfile                           @DataDog/system-tests-reviewers

@datadog-datadog-prod-us1

datadog-datadog-prod-us1 Bot commented Sep 11, 2026

Copy link
Copy Markdown

Pipelines  Tests

Unblock PR with BitsAI

⚠️ Warnings

Your PR has failed checks. Please review the issues below and take necessary action before merging.

🚦 19 Pipeline jobs failed

Testing the test | System Tests (nodejs, dev) / End-to-end #5 / express4 5 — ❌ 2 tests failed

View more details · View in GitHub Actions

❌ tests.ffe.test_exposure_egress.Test_FFE_Exposure_Egress_Agentless_Direct.test_exposure_egress[express4] from system_tests_suite
AssertionError: expected exactly one DD-EVP-ORIGIN header, got []

self = <tests.ffe.test_exposure_egress.Test_FFE_Exposure_Egress_Agentless_Direct object at 0x7f2d78588530>

    def test_exposure_egress(self) -> None:
        egress = feature_flagging_evp_egress()
        matching_requests = assert_exposure_side_effects_contract(
            egress.interface,
            self.responses,
            flag_key=self.flag_key,
...
❌ tests.ffe.test_exposure_egress.Test_FFE_Exposure_Egress_Agentless_Direct_Shutdown.test_exposure_egress_shutdown[express4] from system_tests_suite
AssertionError: expected exactly one DD-EVP-ORIGIN header, got []

self = <tests.ffe.test_exposure_egress.Test_FFE_Exposure_Egress_Agentless_Direct_Shutdown object at 0x7f2d7858ab70>

    def test_exposure_egress_shutdown(self) -> None:
        egress = feature_flagging_evp_egress()
        assert egress.route == "direct"
        assert_agentless_evp_topology(egress)
    
        scenario = context.scenario
...
DataDog/system-tests | php-app.amd64.DOC: [public.ecr.aws/lts/ubuntu:22.04, linux/amd64, 5.6] — 🔧 Needs a code fix, caused by this PR

View more details · View in GitLab

DataDog/system-tests | php-app.amd64.DOC: [public.ecr.aws/lts/ubuntu:22.04, linux/amd64, 7.1] — 🔧 Needs a code fix, caused by this PR

View more details · View in GitLab

View all 19 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: a548cfc | Docs | View more details | Give us feedback!

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