Skip to content

test(ffe): prove Node.js agentless EVP topologies - #7382

Draft
leoromanovsky wants to merge 2 commits into
exec/system-tests-agentless-side-effectsfrom
restack/7299-agentless-side-effects
Draft

test(ffe): prove Node.js agentless EVP topologies#7382
leoromanovsky wants to merge 2 commits into
exec/system-tests-agentless-side-effectsfrom
restack/7299-agentless-side-effects

Conversation

@leoromanovsky

Copy link
Copy Markdown
Contributor

Motivation

Node.js needs deterministic system tests for standalone sidecar, in-process wrapper, and no-relay direct EVP delivery. Each topology must produce the same exposure and aggregate evaluation semantics. The tests must also prove route discovery and prevent duplicate delivery.

This draft is stacked on #7299. The matching Node.js implementation is DataDog/dd-trace-js#9527.

Changes

  • Add a real in-process serverless-init topology beside the standalone sidecar and direct topologies.
  • Add programmable relay profiles for EVP v4, v2, unsupported discovery, definitive rejection, and ambiguous failure.
  • Capture local, direct, and relay traffic through separate telemetry interfaces.
  • Make the mock agentless backend return the JSON:API UFC response used by Node.js.
  • Add stable Node.js feature flag startup and flush handling for each supported weblog.
  • Assert one exposure event and one aggregate evaluation event in each topology.
  • Assert identical flag, variant, allocation, subject, and evaluation count fields across topologies.
  • Add focused self-tests for scenario wiring, authentication, route provenance, replay behavior, and backend responses.

Decisions

  • The tests use GET /info capability discovery. They do not infer support from an open port.
  • The in-process wrapper and standalone sidecar use the same EVP contract. Only the configured host changes.
  • Definitive local rejection can select direct fallback. Ambiguous outcomes must not create a direct duplicate.
  • Node manifest entries remain missing_feature until a published tracer artifact contains feat(openfeature): route serverless Feature Flags EVP telemetry dd-trace-js#9527.
  • OTLP route selection remains independent from EVP discovery.

Validation

  • FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_SIDECAR: 2 passed.
  • FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_IN_PROCESS: 2 passed.
  • FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_DIRECT_FALLBACK: 2 passed.
  • Focused TEST_THE_TEST: 23 passed.
  • ./format.sh --check: passed.
  • Node system-test image build with --docker-platform linux/amd64: passed.
  • Canonical log comparison produced identical EVP semantic fields for all three topologies.

@github-actions

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

tests/ffe/test_agentless_exposures.py                                   @DataDog/feature-flagging-and-experimentation-sdk @DataDog/system-tests-core
tests/ffe/test_agentless_flag_eval_evp.py                               @DataDog/feature-flagging-and-experimentation-sdk @DataDog/system-tests-core
tests/ffe/test_agentless_flag_eval_metrics.py                           @DataDog/feature-flagging-and-experimentation-sdk @DataDog/system-tests-core
tests/ffe/utils/telemetry.py                                            @DataDog/feature-flagging-and-experimentation-sdk @DataDog/system-tests-core
tests/test_the_test/scenarios.json                                      @DataDog/system-tests-core
tests/test_the_test/test_feature_flag_telemetry.py                      @DataDog/system-tests-core
tests/test_the_test/test_group_rules.py                                 @DataDog/system-tests-core
tests/test_the_test/test_mock_ffe_agentless_backend.py                  @DataDog/system-tests-core
utils/_context/_scenarios/__init__.py                                   @DataDog/system-tests-core
utils/_context/_scenarios/endtoend.py                                   @DataDog/system-tests-core
utils/_context/containers.py                                            @DataDog/system-tests-core
utils/build/docker/nodejs/express/app.js                                @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/express4-typescript/app.ts                    @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/express4.Dockerfile                           @DataDog/dd-trace-js @DataDog/system-tests-core
utils/build/docker/nodejs/fastify/app.js                                @DataDog/dd-trace-js @DataDog/system-tests-core
utils/docker_fixtures/_mock_ffe_agentless_backend.py                    @DataDog/system-tests-core
utils/interfaces/__init__.py                                            @DataDog/system-tests-core
utils/proxy/core.py                                                     @DataDog/system-tests-core
utils/proxy/ports.py                                                    @DataDog/system-tests-core

@datadog-prod-us1-6

datadog-prod-us1-6 Bot commented Jul 25, 2026

Copy link
Copy Markdown

Pipelines  Tests

⚠️ Warnings

🚦 6 Pipeline jobs failed

Testing the test | Test the test   View in Datadog   GitHub Actions

DataDog/system-tests | Debian_12_amd64.IN1C: [test-app-php-container-56]   View in Datadog   GitLab

DataDog/system-tests | Ubuntu_23_10_arm64.IN1C: [test-app-php-container-56]   View in Datadog   GitLab

View all 6 failed jobs.

ℹ️ Info

No other issues found (see more)

🧪 All tests passed
❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 4bb0f61 | Docs | Datadog PR Page | 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