From fa78cc1caf9d98d7c2b1ff899457971e859ee74e Mon Sep 17 00:00:00 2001 From: Leo Romanovsky Date: Thu, 12 Nov 2026 22:44:48 +0000 Subject: [PATCH 1/5] test(ffe): activate explicit agentless configuration for PHP --- .github/workflows/run-end-to-end.yml | 3 ++ manifests/php.yml | 7 ++++- tests/ffe/test_agentless_configuration.py | 28 +++++++++++++------ utils/_context/_scenarios/__init__.py | 2 ++ .../_context/_scenarios/agentless_endtoend.py | 10 +++++++ 5 files changed, 41 insertions(+), 9 deletions(-) diff --git a/.github/workflows/run-end-to-end.yml b/.github/workflows/run-end-to-end.yml index 477831b4bd6..0d52b5b11d3 100644 --- a/.github/workflows/run-end-to-end.yml +++ b/.github/workflows/run-end-to-end.yml @@ -311,6 +311,9 @@ jobs: - name: Run FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS scenario if: steps.build.outcome == 'success' && !cancelled() && contains(inputs.scenarios, '"FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS"') run: ./run.sh FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS + - name: Run FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT scenario + if: steps.build.outcome == 'success' && !cancelled() && contains(inputs.scenarios, '"FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT"') + run: ./run.sh FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT - name: Run FEATURE_FLAGGING_EVP_STRESS scenario if: steps.build.outcome == 'success' && !cancelled() && contains(inputs.scenarios, '"FEATURE_FLAGGING_EVP_STRESS"') run: ./run.sh FEATURE_FLAGGING_EVP_STRESS diff --git a/manifests/php.yml b/manifests/php.yml index 2c3ed35ceb0..3fb6bf8954f 100644 --- a/manifests/php.yml +++ b/manifests/php.yml @@ -1289,7 +1289,12 @@ manifest: component_version: <1.12.0 tests/docker_ssi/test_docker_ssi_appsec.py::TestDockerSSIAppsecFeatures::test_telemetry_source_ssi: v1.8.3 tests/docker_ssi/test_docker_ssi_crash.py::TestDockerSSICrash::test_crash: missing_feature (No implemented the endpoint /crashme) - tests/ffe/test_agentless_configuration.py: missing_feature (FFL-2705 tracks PHP agentless configuration-source implementation; FFL-2731 tracks the system-tests contract) + tests/ffe/test_agentless_configuration.py::Test_FFE_Agentless_Configuration: irrelevant (PHP requires explicit configuration source selection) + tests/ffe/test_agentless_configuration.py::Test_FFE_Agentless_Explicit_Configuration: + - weblog_declaration: + "*": v1.28.0-dev + laravel11x: incomplete_test_app + symfony7x: incomplete_test_app tests/ffe/test_dynamic_evaluation.py: - weblog_declaration: "*": v1.21.0-dev diff --git a/tests/ffe/test_agentless_configuration.py b/tests/ffe/test_agentless_configuration.py index fbc8b964fd3..f1c09b134f9 100644 --- a/tests/ffe/test_agentless_configuration.py +++ b/tests/ffe/test_agentless_configuration.py @@ -1,15 +1,14 @@ -"""Test default agentless UFC delivery before FFE evaluation.""" +"""Test implicit and explicit agentless UFC delivery.""" import json -from utils import features, scenarios, weblog +from utils import context, features, scenarios, weblog +from utils._context._scenarios.agentless_endtoend import FeatureFlaggingAgentlessEndToEndScenario from utils.mocked_backend.ffe import CONFIG_PATH -@scenarios.feature_flagging_and_experimentation_agentless -@features.feature_flags_agentless -class Test_FFE_Agentless_Configuration: - def setup_default_agentless_source(self) -> None: +class AgentlessConfigurationContract: + def setup_agentless_source(self) -> None: self.response = weblog.post( "/ffe", json={ @@ -21,11 +20,24 @@ def setup_default_agentless_source(self) -> None: }, ) - def test_default_agentless_source(self) -> None: + def test_agentless_source(self) -> None: assert self.response.status_code == 200, f"Flag evaluation failed: {self.response.text}" assert json.loads(self.response.text)["value"] == "on-value" - backend_status = scenarios.feature_flagging_and_experimentation_agentless.mock_backend_status() + assert isinstance(context.scenario, FeatureFlaggingAgentlessEndToEndScenario) + backend_status = context.scenario.mock_backend_status() assert backend_status is not None assert backend_status["requests_total"] >= 1 assert backend_status["last_path"] == CONFIG_PATH + + +@scenarios.feature_flagging_and_experimentation_agentless +@features.feature_flags_agentless +class Test_FFE_Agentless_Configuration(AgentlessConfigurationContract): + pass + + +@scenarios.feature_flagging_and_experimentation_agentless_explicit +@features.feature_flags_agentless +class Test_FFE_Agentless_Explicit_Configuration(AgentlessConfigurationContract): + pass diff --git a/utils/_context/_scenarios/__init__.py b/utils/_context/_scenarios/__init__.py index 7d1b59f7f21..caaa583f92e 100644 --- a/utils/_context/_scenarios/__init__.py +++ b/utils/_context/_scenarios/__init__.py @@ -113,6 +113,7 @@ from .agentless_endtoend import ( FeatureFlaggingAndExperimentationAgentless, FeatureFlaggingAndExperimentationAgentlessDirect, + FeatureFlaggingAndExperimentationAgentlessExplicit, FeatureFlaggingAndExperimentationAgentlessServerless, ) from .test_the_test import ( @@ -316,6 +317,7 @@ class _Scenarios: remote_config_mocked_backend_asm_dd = RemoteConfigMockedBackendAsmDd() feature_flagging_and_experimentation = FeatureFlaggingAndExperimentation() feature_flagging_and_experimentation_agentless = FeatureFlaggingAndExperimentationAgentless() + feature_flagging_and_experimentation_agentless_explicit = FeatureFlaggingAndExperimentationAgentlessExplicit() feature_flagging_and_experimentation_agentless_direct = FeatureFlaggingAndExperimentationAgentlessDirect() feature_flagging_and_experimentation_agentless_serverless = FeatureFlaggingAndExperimentationAgentlessServerless() feature_flagging_evaluation_telemetry_opt_out = FeatureFlaggingEvaluationTelemetryOptOut() diff --git a/utils/_context/_scenarios/agentless_endtoend.py b/utils/_context/_scenarios/agentless_endtoend.py index eecc0e75ce8..3b67aaada89 100644 --- a/utils/_context/_scenarios/agentless_endtoend.py +++ b/utils/_context/_scenarios/agentless_endtoend.py @@ -668,6 +668,16 @@ def __init__(self) -> None: super().__init__("FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS") +class FeatureFlaggingAndExperimentationAgentlessExplicit(FeatureFlaggingAgentlessEndToEndScenario): + """Validate explicitly selected agentless UFC delivery without a Datadog Agent.""" + + def __init__(self) -> None: + super().__init__( + "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT", + weblog_env={"DD_FEATURE_FLAGS_CONFIGURATION_SOURCE": "agentless"}, + ) + + class FeatureFlaggingAndExperimentationAgentlessDirect(FeatureFlaggingAgentlessEndToEndScenario): """Validate direct exposure delivery with agentless UFC and no local receiver.""" From 9a698909d967d66f0780402b1d9c19ba94952c16 Mon Sep 17 00:00:00 2001 From: Leo Romanovsky Date: Thu, 12 Nov 2026 23:47:28 +0000 Subject: [PATCH 2/5] test(ffe): include explicit agentless scenario in harness expectations --- .../test_compute_libraries_and_scenarios.py | 4 ++- tests/test_the_test/test_group_rules.py | 29 +++++++------------ 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/tests/test_the_test/test_compute_libraries_and_scenarios.py b/tests/test_the_test/test_compute_libraries_and_scenarios.py index f517c4b8424..149706436a5 100644 --- a/tests/test_the_test/test_compute_libraries_and_scenarios.py +++ b/tests/test_the_test/test_compute_libraries_and_scenarios.py @@ -954,7 +954,9 @@ def test_end_to_end_agentless_scenario_framework_file(self): 3600, "false", "DEFAULT,FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS," - "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_DIRECT,FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_SERVERLESS", + "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_DIRECT," + "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT," + "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_SERVERLESS", "", ) diff --git a/tests/test_the_test/test_group_rules.py b/tests/test_the_test/test_group_rules.py index 88a4458577e..a27ad690b9e 100644 --- a/tests/test_the_test/test_group_rules.py +++ b/tests/test_the_test/test_group_rules.py @@ -29,32 +29,23 @@ def test_tracer_release(): assert group not in opt_out_scenario.scenario_groups assert opt_out_scenario not in group.scenarios - dormant_agentless_scenario = scenarios.feature_flagging_and_experimentation_agentless - assert dormant_agentless_scenario.include_agent is False - assert dormant_agentless_scenario.use_proxy is False - assert scenario_groups.ffe in dormant_agentless_scenario.scenario_groups - assert scenario_groups.all not in dormant_agentless_scenario.scenario_groups - assert scenario_groups.end_to_end not in dormant_agentless_scenario.scenario_groups - assert scenario_groups.tracer_release not in dormant_agentless_scenario.scenario_groups - - agentless_exposure_scenarios = [ + agentless_scenarios = [ + scenarios.feature_flagging_and_experimentation_agentless, + scenarios.feature_flagging_and_experimentation_agentless_explicit, scenarios.feature_flagging_and_experimentation_agentless_direct, scenarios.feature_flagging_and_experimentation_agentless_serverless, ] - for exposure_scenario in agentless_exposure_scenarios: - assert exposure_scenario.include_agent is False - # the events go to the mocked backend, under the intake hostnames: no proxy in between - assert exposure_scenario.use_proxy is False - assert scenario_groups.ffe in exposure_scenario.scenario_groups - assert scenario_groups.all not in exposure_scenario.scenario_groups - assert scenario_groups.end_to_end not in exposure_scenario.scenario_groups - assert scenario_groups.tracer_release not in exposure_scenario.scenario_groups + for agentless_scenario in agentless_scenarios: + assert agentless_scenario.include_agent is False + assert agentless_scenario.use_proxy is False + assert scenario_groups.ffe in agentless_scenario.scenario_groups + for group in (scenario_groups.all, scenario_groups.end_to_end, scenario_groups.tracer_release): + assert group not in agentless_scenario.scenario_groups not_in_tracer_release_group = [ # list of scenario that will never be part of tracer release scenarios.fuzzer, - dormant_agentless_scenario, - *agentless_exposure_scenarios, + *agentless_scenarios, scenarios.mock_the_test, scenarios.mock_the_test_2, scenarios.test_the_test, From 1332165633fab1181d0b25f35d502a0129c84b1c Mon Sep 17 00:00:00 2001 From: Leo Romanovsky Date: Thu, 12 Nov 2026 23:56:14 +0000 Subject: [PATCH 3/5] test(ffe): contain explicit agentless events in mocked backend --- tests/test_the_test/scenarios.json | 5 ++++- .../test_compute_libraries_and_scenarios.py | 3 ++- .../test_mock_ffe_agentless_backend.py | 13 +++++++++++++ utils/_context/_scenarios/agentless_endtoend.py | 2 +- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/tests/test_the_test/scenarios.json b/tests/test_the_test/scenarios.json index d7fd1c895b5..ae83c4e8827 100644 --- a/tests/test_the_test/scenarios.json +++ b/tests/test_the_test/scenarios.json @@ -3378,9 +3378,12 @@ "tests/external_processing/test_apm.py::Test_ExternalProcessing_Tracing::test_correct_span_structure": [ "EXTERNAL_PROCESSING" ], - "tests/ffe/test_agentless_configuration.py::Test_FFE_Agentless_Configuration::test_default_agentless_source": [ + "tests/ffe/test_agentless_configuration.py::Test_FFE_Agentless_Configuration::test_agentless_source": [ "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS" ], + "tests/ffe/test_agentless_configuration.py::Test_FFE_Agentless_Explicit_Configuration::test_agentless_source": [ + "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT" + ], "tests/ffe/test_exposure_egress.py::Test_FFE_Exposure_Egress_Datadog_Agent::test_exposure_egress": [ "FEATURE_FLAGGING_AND_EXPERIMENTATION" ], diff --git a/tests/test_the_test/test_compute_libraries_and_scenarios.py b/tests/test_the_test/test_compute_libraries_and_scenarios.py index 149706436a5..14be3943b6b 100644 --- a/tests/test_the_test/test_compute_libraries_and_scenarios.py +++ b/tests/test_the_test/test_compute_libraries_and_scenarios.py @@ -828,7 +828,8 @@ def test_agentless_ffe_test_file(self): default_libs_with_dev, 3600, "false", - "DEFAULT,FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS", + "DEFAULT,FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS," + "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT", "", ) diff --git a/tests/test_the_test/test_mock_ffe_agentless_backend.py b/tests/test_the_test/test_mock_ffe_agentless_backend.py index eac82aebf59..07268f167ff 100644 --- a/tests/test_the_test/test_mock_ffe_agentless_backend.py +++ b/tests/test_the_test/test_mock_ffe_agentless_backend.py @@ -179,6 +179,19 @@ def test_default_agentless_scenario_leaves_source_selection_implicit() -> None: assert environment["DD_REMOTE_CONFIGURATION_ENABLED"] == "false" +@scenarios.test_the_test +@features.not_reported +def test_explicit_agentless_scenario_keeps_incidental_events_in_the_mocked_backend() -> None: + environment = ( + scenarios.feature_flagging_and_experimentation_agentless_explicit.weblog_infra.library_container.environment + ) + + assert environment["DD_FEATURE_FLAGS_CONFIGURATION_SOURCE"] == "agentless" + assert "DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED" not in environment + assert "DD_FEATURE_FLAGS_ENABLED" not in environment + assert environment["DD_SITE"] == "mocked-backend.invalid" + + @pytest.mark.parametrize("exposure_egress", ["direct", "sidecar"]) @scenarios.test_the_test @features.not_reported diff --git a/utils/_context/_scenarios/agentless_endtoend.py b/utils/_context/_scenarios/agentless_endtoend.py index 3b67aaada89..364a2559af2 100644 --- a/utils/_context/_scenarios/agentless_endtoend.py +++ b/utils/_context/_scenarios/agentless_endtoend.py @@ -674,7 +674,7 @@ class FeatureFlaggingAndExperimentationAgentlessExplicit(FeatureFlaggingAgentles def __init__(self) -> None: super().__init__( "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT", - weblog_env={"DD_FEATURE_FLAGS_CONFIGURATION_SOURCE": "agentless"}, + weblog_env={"DD_FEATURE_FLAGS_CONFIGURATION_SOURCE": "agentless", "DD_SITE": MOCKED_BACKEND_DOMAIN}, ) From fbb308d318ebc2fbcadc9a9ac3ce31a081b80136 Mon Sep 17 00:00:00 2001 From: Leo Romanovsky Date: Fri, 13 Nov 2026 01:19:17 +0000 Subject: [PATCH 4/5] test(ffe): reuse direct agentless scenario for PHP CDN coverage --- .github/workflows/run-end-to-end.yml | 3 -- tests/ffe/test_agentless_configuration.py | 2 +- tests/test_the_test/scenarios.json | 2 +- .../test_compute_libraries_and_scenarios.py | 9 ++---- tests/test_the_test/test_group_rules.py | 29 ++++++++++++------- .../test_mock_ffe_agentless_backend.py | 13 --------- utils/_context/_scenarios/__init__.py | 2 -- .../_context/_scenarios/agentless_endtoend.py | 10 ------- 8 files changed, 24 insertions(+), 46 deletions(-) diff --git a/.github/workflows/run-end-to-end.yml b/.github/workflows/run-end-to-end.yml index 0d52b5b11d3..477831b4bd6 100644 --- a/.github/workflows/run-end-to-end.yml +++ b/.github/workflows/run-end-to-end.yml @@ -311,9 +311,6 @@ jobs: - name: Run FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS scenario if: steps.build.outcome == 'success' && !cancelled() && contains(inputs.scenarios, '"FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS"') run: ./run.sh FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS - - name: Run FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT scenario - if: steps.build.outcome == 'success' && !cancelled() && contains(inputs.scenarios, '"FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT"') - run: ./run.sh FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT - name: Run FEATURE_FLAGGING_EVP_STRESS scenario if: steps.build.outcome == 'success' && !cancelled() && contains(inputs.scenarios, '"FEATURE_FLAGGING_EVP_STRESS"') run: ./run.sh FEATURE_FLAGGING_EVP_STRESS diff --git a/tests/ffe/test_agentless_configuration.py b/tests/ffe/test_agentless_configuration.py index f1c09b134f9..3fa37be1883 100644 --- a/tests/ffe/test_agentless_configuration.py +++ b/tests/ffe/test_agentless_configuration.py @@ -37,7 +37,7 @@ class Test_FFE_Agentless_Configuration(AgentlessConfigurationContract): pass -@scenarios.feature_flagging_and_experimentation_agentless_explicit +@scenarios.feature_flagging_and_experimentation_agentless_direct @features.feature_flags_agentless class Test_FFE_Agentless_Explicit_Configuration(AgentlessConfigurationContract): pass diff --git a/tests/test_the_test/scenarios.json b/tests/test_the_test/scenarios.json index ae83c4e8827..f9ec5603c23 100644 --- a/tests/test_the_test/scenarios.json +++ b/tests/test_the_test/scenarios.json @@ -3382,7 +3382,7 @@ "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS" ], "tests/ffe/test_agentless_configuration.py::Test_FFE_Agentless_Explicit_Configuration::test_agentless_source": [ - "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT" + "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_DIRECT" ], "tests/ffe/test_exposure_egress.py::Test_FFE_Exposure_Egress_Datadog_Agent::test_exposure_egress": [ "FEATURE_FLAGGING_AND_EXPERIMENTATION" diff --git a/tests/test_the_test/test_compute_libraries_and_scenarios.py b/tests/test_the_test/test_compute_libraries_and_scenarios.py index 14be3943b6b..728d085cee0 100644 --- a/tests/test_the_test/test_compute_libraries_and_scenarios.py +++ b/tests/test_the_test/test_compute_libraries_and_scenarios.py @@ -829,7 +829,7 @@ def test_agentless_ffe_test_file(self): 3600, "false", "DEFAULT,FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS," - "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT", + "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_DIRECT", "", ) @@ -842,8 +842,7 @@ def test_exposure_egress_test_file(self): 3600, "false", "DEFAULT,FEATURE_FLAGGING_AND_EXPERIMENTATION," - "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_DIRECT," - "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_SERVERLESS", + "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_DIRECT,FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_SERVERLESS", "", ) @@ -955,9 +954,7 @@ def test_end_to_end_agentless_scenario_framework_file(self): 3600, "false", "DEFAULT,FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS," - "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_DIRECT," - "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT," - "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_SERVERLESS", + "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_DIRECT,FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_SERVERLESS", "", ) diff --git a/tests/test_the_test/test_group_rules.py b/tests/test_the_test/test_group_rules.py index a27ad690b9e..88a4458577e 100644 --- a/tests/test_the_test/test_group_rules.py +++ b/tests/test_the_test/test_group_rules.py @@ -29,23 +29,32 @@ def test_tracer_release(): assert group not in opt_out_scenario.scenario_groups assert opt_out_scenario not in group.scenarios - agentless_scenarios = [ - scenarios.feature_flagging_and_experimentation_agentless, - scenarios.feature_flagging_and_experimentation_agentless_explicit, + dormant_agentless_scenario = scenarios.feature_flagging_and_experimentation_agentless + assert dormant_agentless_scenario.include_agent is False + assert dormant_agentless_scenario.use_proxy is False + assert scenario_groups.ffe in dormant_agentless_scenario.scenario_groups + assert scenario_groups.all not in dormant_agentless_scenario.scenario_groups + assert scenario_groups.end_to_end not in dormant_agentless_scenario.scenario_groups + assert scenario_groups.tracer_release not in dormant_agentless_scenario.scenario_groups + + agentless_exposure_scenarios = [ scenarios.feature_flagging_and_experimentation_agentless_direct, scenarios.feature_flagging_and_experimentation_agentless_serverless, ] - for agentless_scenario in agentless_scenarios: - assert agentless_scenario.include_agent is False - assert agentless_scenario.use_proxy is False - assert scenario_groups.ffe in agentless_scenario.scenario_groups - for group in (scenario_groups.all, scenario_groups.end_to_end, scenario_groups.tracer_release): - assert group not in agentless_scenario.scenario_groups + for exposure_scenario in agentless_exposure_scenarios: + assert exposure_scenario.include_agent is False + # the events go to the mocked backend, under the intake hostnames: no proxy in between + assert exposure_scenario.use_proxy is False + assert scenario_groups.ffe in exposure_scenario.scenario_groups + assert scenario_groups.all not in exposure_scenario.scenario_groups + assert scenario_groups.end_to_end not in exposure_scenario.scenario_groups + assert scenario_groups.tracer_release not in exposure_scenario.scenario_groups not_in_tracer_release_group = [ # list of scenario that will never be part of tracer release scenarios.fuzzer, - *agentless_scenarios, + dormant_agentless_scenario, + *agentless_exposure_scenarios, scenarios.mock_the_test, scenarios.mock_the_test_2, scenarios.test_the_test, diff --git a/tests/test_the_test/test_mock_ffe_agentless_backend.py b/tests/test_the_test/test_mock_ffe_agentless_backend.py index 07268f167ff..eac82aebf59 100644 --- a/tests/test_the_test/test_mock_ffe_agentless_backend.py +++ b/tests/test_the_test/test_mock_ffe_agentless_backend.py @@ -179,19 +179,6 @@ def test_default_agentless_scenario_leaves_source_selection_implicit() -> None: assert environment["DD_REMOTE_CONFIGURATION_ENABLED"] == "false" -@scenarios.test_the_test -@features.not_reported -def test_explicit_agentless_scenario_keeps_incidental_events_in_the_mocked_backend() -> None: - environment = ( - scenarios.feature_flagging_and_experimentation_agentless_explicit.weblog_infra.library_container.environment - ) - - assert environment["DD_FEATURE_FLAGS_CONFIGURATION_SOURCE"] == "agentless" - assert "DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED" not in environment - assert "DD_FEATURE_FLAGS_ENABLED" not in environment - assert environment["DD_SITE"] == "mocked-backend.invalid" - - @pytest.mark.parametrize("exposure_egress", ["direct", "sidecar"]) @scenarios.test_the_test @features.not_reported diff --git a/utils/_context/_scenarios/__init__.py b/utils/_context/_scenarios/__init__.py index caaa583f92e..7d1b59f7f21 100644 --- a/utils/_context/_scenarios/__init__.py +++ b/utils/_context/_scenarios/__init__.py @@ -113,7 +113,6 @@ from .agentless_endtoend import ( FeatureFlaggingAndExperimentationAgentless, FeatureFlaggingAndExperimentationAgentlessDirect, - FeatureFlaggingAndExperimentationAgentlessExplicit, FeatureFlaggingAndExperimentationAgentlessServerless, ) from .test_the_test import ( @@ -317,7 +316,6 @@ class _Scenarios: remote_config_mocked_backend_asm_dd = RemoteConfigMockedBackendAsmDd() feature_flagging_and_experimentation = FeatureFlaggingAndExperimentation() feature_flagging_and_experimentation_agentless = FeatureFlaggingAndExperimentationAgentless() - feature_flagging_and_experimentation_agentless_explicit = FeatureFlaggingAndExperimentationAgentlessExplicit() feature_flagging_and_experimentation_agentless_direct = FeatureFlaggingAndExperimentationAgentlessDirect() feature_flagging_and_experimentation_agentless_serverless = FeatureFlaggingAndExperimentationAgentlessServerless() feature_flagging_evaluation_telemetry_opt_out = FeatureFlaggingEvaluationTelemetryOptOut() diff --git a/utils/_context/_scenarios/agentless_endtoend.py b/utils/_context/_scenarios/agentless_endtoend.py index 364a2559af2..eecc0e75ce8 100644 --- a/utils/_context/_scenarios/agentless_endtoend.py +++ b/utils/_context/_scenarios/agentless_endtoend.py @@ -668,16 +668,6 @@ def __init__(self) -> None: super().__init__("FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS") -class FeatureFlaggingAndExperimentationAgentlessExplicit(FeatureFlaggingAgentlessEndToEndScenario): - """Validate explicitly selected agentless UFC delivery without a Datadog Agent.""" - - def __init__(self) -> None: - super().__init__( - "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_EXPLICIT", - weblog_env={"DD_FEATURE_FLAGS_CONFIGURATION_SOURCE": "agentless", "DD_SITE": MOCKED_BACKEND_DOMAIN}, - ) - - class FeatureFlaggingAndExperimentationAgentlessDirect(FeatureFlaggingAgentlessEndToEndScenario): """Validate direct exposure delivery with agentless UFC and no local receiver.""" From 209af1609d20bee6b539689f50b053f83a79d752 Mon Sep 17 00:00:00 2001 From: Leo Romanovsky Date: Fri, 13 Nov 2026 01:27:51 +0000 Subject: [PATCH 5/5] test(ffe): remove unrelated scenario-string formatting --- tests/test_the_test/test_compute_libraries_and_scenarios.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_the_test/test_compute_libraries_and_scenarios.py b/tests/test_the_test/test_compute_libraries_and_scenarios.py index 728d085cee0..41e70609bb7 100644 --- a/tests/test_the_test/test_compute_libraries_and_scenarios.py +++ b/tests/test_the_test/test_compute_libraries_and_scenarios.py @@ -842,7 +842,8 @@ def test_exposure_egress_test_file(self): 3600, "false", "DEFAULT,FEATURE_FLAGGING_AND_EXPERIMENTATION," - "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_DIRECT,FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_SERVERLESS", + "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_DIRECT," + "FEATURE_FLAGGING_AND_EXPERIMENTATION_AGENTLESS_SERVERLESS", "", )