From 4c8153cd8ad65ac8a7f266ccae20f3a41ed4c186 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Wed, 1 Apr 2026 15:38:07 -0400 Subject: [PATCH 1/6] updating config helper to have descriptive exception in strict mode --- .../datadog/trace/config/inversion/ConfigHelper.java | 10 +++++++--- .../trace/config/inversion/ConfigHelperTest.java | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java b/utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java index 59c183a4700..3a8f7df5b9b 100644 --- a/utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java +++ b/utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java @@ -15,7 +15,7 @@ private ConfigHelper() {} /** Config Inversion strictness policy for enforcement of undocumented environment variables */ public enum StrictnessPolicy { - STRICT, + STRICT_TEST, WARNING, TEST; @@ -142,8 +142,12 @@ public String getEnvironmentVariable(String name) { ConfigInversionMetricCollectorProvider.get().setUndocumentedEnvVarMetric(name); } - if (configInversionStrict == StrictnessPolicy.STRICT) { - return null; // If strict mode is enabled, return null for unsupported configs + if (configInversionStrict == StrictnessPolicy.STRICT_TEST) { + throw new IllegalArgumentException( + "Unsupported configuration: " + + name + + " is not in GeneratedSupportedConfigurations. " + + "Add it to metadata/supported-configurations.json or remove the usage."); } } diff --git a/utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java b/utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java index aed77304eac..9696642c8ac 100644 --- a/utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java +++ b/utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java @@ -62,7 +62,7 @@ static void setUp() { testSupported, testAliases, testAliasMapping, new HashMap<>()); ConfigHelper.get().setConfigurationSource(testSource); strictness = ConfigHelper.get().configInversionStrictFlag(); - ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.STRICT); + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.STRICT_TEST); } @AfterAll @@ -177,7 +177,7 @@ void testUnsupportedEnvWarningNotInTestMode() { assertEquals("banana", ConfigHelper.env("DD_FAKE_VAR")); // Cleanup - ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.STRICT); + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.STRICT_TEST); } @Test From 2199aaef4d411dfacb1ef5513e510405555ec3d5 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Thu, 2 Apr 2026 16:49:34 -0400 Subject: [PATCH 2/6] init --- .../dd-trace-java.configure-tests.gradle.kts | 3 ++ .../config/inversion/ConfigHelperTest.java | 9 +++++ utils/test-utils/build.gradle.kts | 1 + .../trace/test/ConfigInversionExtension.java | 40 +++++++++++++++++++ .../org.junit.jupiter.api.extension.Extension | 1 + 5 files changed, 54 insertions(+) create mode 100644 utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java create mode 100644 utils/test-utils/src/main/resources/META-INF/services/org.junit.jupiter.api.extension.Extension diff --git a/buildSrc/src/main/kotlin/dd-trace-java.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.configure-tests.gradle.kts index a3158c37ca7..ad1d0a2d6ab 100644 --- a/buildSrc/src/main/kotlin/dd-trace-java.configure-tests.gradle.kts +++ b/buildSrc/src/main/kotlin/dd-trace-java.configure-tests.gradle.kts @@ -46,6 +46,9 @@ tasks.withType().configureEach { // Use a task-specific user prefs directory systemProperty("java.util.prefs.userRoot", layout.buildDirectory.dir("tmp/userPrefs/$name").get().asFile.absolutePath) + // Enable JUnit 5 auto-detection so ConfigInversionExtension (STRICT mode) is loaded automatically + systemProperty("junit.jupiter.extensions.autodetection.enabled", "true") + // Split up tests that want to run forked in their own separate JVM for generated tasks if (name.startsWith("forkedTest") || name.endsWith("ForkedTest")) { setExcludes(emptyList()) diff --git a/utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java b/utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java index 9696642c8ac..357da91fa64 100644 --- a/utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java +++ b/utils/config-utils/src/test/java/datadog/trace/config/inversion/ConfigHelperTest.java @@ -3,6 +3,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import datadog.trace.test.util.ControllableEnvironmentVariables; import java.util.ArrayList; @@ -167,6 +168,14 @@ void testInconsistentAliasesAndAliasMapping() { assertFalse(result.containsKey(NEW_ALIAS_TARGET)); } + @Test + void testStrictTestThrowsForUnsupportedConfig() { + env.set("DD_FAKE_VAR", "banana"); + + // STRICT_TEST mode should throw for unsupported DD_ variables + assertThrows(IllegalArgumentException.class, () -> ConfigHelper.env("DD_FAKE_VAR")); + } + @Test void testUnsupportedEnvWarningNotInTestMode() { ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST); diff --git a/utils/test-utils/build.gradle.kts b/utils/test-utils/build.gradle.kts index 1f975c4ad45..2afc50ccb5a 100644 --- a/utils/test-utils/build.gradle.kts +++ b/utils/test-utils/build.gradle.kts @@ -11,6 +11,7 @@ dependencies { api(project(":components:environment")) api(group = "commons-fileupload", name = "commons-fileupload", version = "1.5") + compileOnly(project(":utils:config-utils")) compileOnly(libs.junit.jupiter) compileOnly(libs.tabletest) compileOnly(libs.logback.core) diff --git a/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java b/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java new file mode 100644 index 00000000000..b39be2b3099 --- /dev/null +++ b/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java @@ -0,0 +1,40 @@ +package datadog.trace.test; + +import datadog.trace.config.inversion.ConfigHelper; +import datadog.trace.config.inversion.ConfigHelper.StrictnessPolicy; +import org.junit.jupiter.api.extension.AfterAllCallback; +import org.junit.jupiter.api.extension.BeforeAllCallback; +import org.junit.jupiter.api.extension.ExtensionContext; + +/** + * JUnit 5 extension that enforces {@link StrictnessPolicy#STRICT_TEST} mode on {@link ConfigHelper} + * during test execution. Any access to an unsupported configuration key will throw {@link + * IllegalArgumentException}. + * + *

Registered via {@code META-INF/services/org.junit.jupiter.api.extension.Extension} for + * automatic discovery. Requires {@code junit.jupiter.extensions.autodetection.enabled=true}. + */ +public class ConfigInversionExtension implements BeforeAllCallback, AfterAllCallback { + + private static final ExtensionContext.Namespace NS = + ExtensionContext.Namespace.create("dd", "config-inversion"); + + private static final String PREVIOUS_POLICY = "previousPolicy"; + + @Override + public void beforeAll(ExtensionContext ctx) { + StrictnessPolicy previous = ConfigHelper.get().configInversionStrictFlag(); + ctx.getStore(NS).put(PREVIOUS_POLICY, previous); + ConfigHelper.get().setConfigInversionStrict(StrictnessPolicy.STRICT_TEST); + } + + @Override + public void afterAll(ExtensionContext ctx) { + StrictnessPolicy previous = ctx.getStore(NS).get(PREVIOUS_POLICY, StrictnessPolicy.class); + if (previous != null) { + ConfigHelper.get().setConfigInversionStrict(previous); + } else { + ConfigHelper.get().setConfigInversionStrict(StrictnessPolicy.WARNING); + } + } +} diff --git a/utils/test-utils/src/main/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/utils/test-utils/src/main/resources/META-INF/services/org.junit.jupiter.api.extension.Extension new file mode 100644 index 00000000000..9aab3305e01 --- /dev/null +++ b/utils/test-utils/src/main/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1 @@ +datadog.trace.test.ConfigInversionExtension From 3f3d3888a0f9971b4df198afa6a7ed79078a8feb Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Fri, 3 Apr 2026 11:25:58 -0400 Subject: [PATCH 3/6] fixing test_base issues and adding drain to confighelpre --- .../trace/config/inversion/ConfigHelper.java | 16 +++++ .../trace/test/ConfigInversionExtension.java | 58 ++++++++++++++++--- 2 files changed, 65 insertions(+), 9 deletions(-) diff --git a/utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java b/utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java index 3a8f7df5b9b..e58c71fa664 100644 --- a/utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java +++ b/utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java @@ -2,11 +2,14 @@ import datadog.environment.EnvironmentVariables; import datadog.trace.api.telemetry.ConfigInversionMetricCollectorProvider; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,6 +52,9 @@ public String toString() { // Default to production source private SupportedConfigurationSource configSource = new SupportedConfigurationSource(); + // Collects unsupported config keys encountered in STRICT_TEST mode + private final Set unsupportedConfigs = ConcurrentHashMap.newKeySet(); + public static ConfigHelper get() { return INSTANCE; } @@ -75,9 +81,18 @@ void resetCache() { void resetToDefaults() { configSource = new SupportedConfigurationSource(); this.configInversionStrict = StrictnessPolicy.WARNING; + unsupportedConfigs.clear(); resetCache(); } + /** Returns and clears the set of unsupported config keys encountered in STRICT_TEST mode. */ + public List drainUnsupportedConfigs() { + List result = new ArrayList<>(unsupportedConfigs); + unsupportedConfigs.clear(); + Collections.sort(result); + return result; + } + public static Map env() { return get().getEnvironmentVariables(); } @@ -143,6 +158,7 @@ public String getEnvironmentVariable(String name) { } if (configInversionStrict == StrictnessPolicy.STRICT_TEST) { + unsupportedConfigs.add(name); throw new IllegalArgumentException( "Unsupported configuration: " + name diff --git a/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java b/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java index b39be2b3099..ed1b343450f 100644 --- a/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java +++ b/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java @@ -1,18 +1,20 @@ package datadog.trace.test; -import datadog.trace.config.inversion.ConfigHelper; -import datadog.trace.config.inversion.ConfigHelper.StrictnessPolicy; +import java.util.List; import org.junit.jupiter.api.extension.AfterAllCallback; import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.ExtensionContext; /** - * JUnit 5 extension that enforces {@link StrictnessPolicy#STRICT_TEST} mode on {@link ConfigHelper} + * JUnit 5 extension that enforces {@code StrictnessPolicy.STRICT_TEST} mode on {@code ConfigHelper} * during test execution. Any access to an unsupported configuration key will throw {@link - * IllegalArgumentException}. + * IllegalArgumentException} and be collected for assertion in {@link #afterAll}. * *

Registered via {@code META-INF/services/org.junit.jupiter.api.extension.Extension} for * automatic discovery. Requires {@code junit.jupiter.extensions.autodetection.enabled=true}. + * + *

Gracefully no-ops when {@code config-utils} is not on the classpath (e.g. in modules that only + * depend on {@code test-utils}). */ public class ConfigInversionExtension implements BeforeAllCallback, AfterAllCallback { @@ -20,21 +22,59 @@ public class ConfigInversionExtension implements BeforeAllCallback, AfterAllCall ExtensionContext.Namespace.create("dd", "config-inversion"); private static final String PREVIOUS_POLICY = "previousPolicy"; + private static final String AVAILABLE = "available"; + + private static boolean configHelperAvailable() { + try { + Class.forName("datadog.trace.config.inversion.ConfigHelper"); + return true; + } catch (ClassNotFoundException | NoClassDefFoundError e) { + return false; + } + } @Override public void beforeAll(ExtensionContext ctx) { - StrictnessPolicy previous = ConfigHelper.get().configInversionStrictFlag(); + boolean available = configHelperAvailable(); + ctx.getStore(NS).put(AVAILABLE, available); + if (!available) { + return; + } + Object previous = datadog.trace.config.inversion.ConfigHelper.get().configInversionStrictFlag(); ctx.getStore(NS).put(PREVIOUS_POLICY, previous); - ConfigHelper.get().setConfigInversionStrict(StrictnessPolicy.STRICT_TEST); + datadog.trace.config.inversion.ConfigHelper.get() + .setConfigInversionStrict( + datadog.trace.config.inversion.ConfigHelper.StrictnessPolicy.STRICT_TEST); } @Override public void afterAll(ExtensionContext ctx) { - StrictnessPolicy previous = ctx.getStore(NS).get(PREVIOUS_POLICY, StrictnessPolicy.class); + Boolean available = ctx.getStore(NS).get(AVAILABLE, Boolean.class); + if (available == null || !available) { + return; + } + + List unsupported = + datadog.trace.config.inversion.ConfigHelper.get().drainUnsupportedConfigs(); + + datadog.trace.config.inversion.ConfigHelper.StrictnessPolicy previous = + ctx.getStore(NS) + .get( + PREVIOUS_POLICY, + datadog.trace.config.inversion.ConfigHelper.StrictnessPolicy.class); if (previous != null) { - ConfigHelper.get().setConfigInversionStrict(previous); + datadog.trace.config.inversion.ConfigHelper.get().setConfigInversionStrict(previous); } else { - ConfigHelper.get().setConfigInversionStrict(StrictnessPolicy.WARNING); + datadog.trace.config.inversion.ConfigHelper.get() + .setConfigInversionStrict( + datadog.trace.config.inversion.ConfigHelper.StrictnessPolicy.WARNING); + } + + if (!unsupported.isEmpty()) { + throw new AssertionError( + "Unsupported configurations found during test. " + + "Add these to metadata/supported-configurations.json or opt out with StrictnessPolicy.TEST:\n " + + String.join("\n ", unsupported)); } } } From 0b458a3054036467af1f23e0c029bfbfff213609 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Fri, 3 Apr 2026 11:52:55 -0400 Subject: [PATCH 4/6] suppressforbidden --- .../trace/test/ConfigInversionExtension.java | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java b/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java index ed1b343450f..8932f7abaae 100644 --- a/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java +++ b/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java @@ -1,12 +1,15 @@ package datadog.trace.test; +import datadog.trace.config.inversion.ConfigHelper; +import datadog.trace.config.inversion.ConfigHelper.StrictnessPolicy; +import de.thetaphi.forbiddenapis.SuppressForbidden; import java.util.List; import org.junit.jupiter.api.extension.AfterAllCallback; import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.ExtensionContext; /** - * JUnit 5 extension that enforces {@code StrictnessPolicy.STRICT_TEST} mode on {@code ConfigHelper} + * JUnit 5 extension that enforces {@link StrictnessPolicy#STRICT_TEST} mode on {@link ConfigHelper} * during test execution. Any access to an unsupported configuration key will throw {@link * IllegalArgumentException} and be collected for assertion in {@link #afterAll}. * @@ -24,6 +27,7 @@ public class ConfigInversionExtension implements BeforeAllCallback, AfterAllCall private static final String PREVIOUS_POLICY = "previousPolicy"; private static final String AVAILABLE = "available"; + @SuppressForbidden private static boolean configHelperAvailable() { try { Class.forName("datadog.trace.config.inversion.ConfigHelper"); @@ -40,11 +44,9 @@ public void beforeAll(ExtensionContext ctx) { if (!available) { return; } - Object previous = datadog.trace.config.inversion.ConfigHelper.get().configInversionStrictFlag(); + StrictnessPolicy previous = ConfigHelper.get().configInversionStrictFlag(); ctx.getStore(NS).put(PREVIOUS_POLICY, previous); - datadog.trace.config.inversion.ConfigHelper.get() - .setConfigInversionStrict( - datadog.trace.config.inversion.ConfigHelper.StrictnessPolicy.STRICT_TEST); + ConfigHelper.get().setConfigInversionStrict(StrictnessPolicy.STRICT_TEST); } @Override @@ -54,20 +56,13 @@ public void afterAll(ExtensionContext ctx) { return; } - List unsupported = - datadog.trace.config.inversion.ConfigHelper.get().drainUnsupportedConfigs(); + List unsupported = ConfigHelper.get().drainUnsupportedConfigs(); - datadog.trace.config.inversion.ConfigHelper.StrictnessPolicy previous = - ctx.getStore(NS) - .get( - PREVIOUS_POLICY, - datadog.trace.config.inversion.ConfigHelper.StrictnessPolicy.class); + StrictnessPolicy previous = ctx.getStore(NS).get(PREVIOUS_POLICY, StrictnessPolicy.class); if (previous != null) { - datadog.trace.config.inversion.ConfigHelper.get().setConfigInversionStrict(previous); + ConfigHelper.get().setConfigInversionStrict(previous); } else { - datadog.trace.config.inversion.ConfigHelper.get() - .setConfigInversionStrict( - datadog.trace.config.inversion.ConfigHelper.StrictnessPolicy.WARNING); + ConfigHelper.get().setConfigInversionStrict(StrictnessPolicy.WARNING); } if (!unsupported.isEmpty()) { From 6405ab79648b6fd5acc8f449c63470c8e7865baf Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Mon, 6 Apr 2026 13:25:14 -0400 Subject: [PATCH 5/6] move ConfigInversionExtension to config-utils --- utils/config-utils/build.gradle.kts | 3 +++ .../trace/test/ConfigInversionExtension.java | 25 ------------------- .../org.junit.jupiter.api.extension.Extension | 0 utils/test-utils/build.gradle.kts | 1 - 4 files changed, 3 insertions(+), 26 deletions(-) rename utils/{test-utils/src/main => config-utils/src/testFixtures}/java/datadog/trace/test/ConfigInversionExtension.java (72%) rename utils/{test-utils/src/main => config-utils/src/testFixtures}/resources/META-INF/services/org.junit.jupiter.api.extension.Extension (100%) diff --git a/utils/config-utils/build.gradle.kts b/utils/config-utils/build.gradle.kts index 0280b703b5d..84f494596d8 100644 --- a/utils/config-utils/build.gradle.kts +++ b/utils/config-utils/build.gradle.kts @@ -1,5 +1,6 @@ plugins { `java-library` + `java-test-fixtures` id("dd-trace-java.supported-config-generator") } @@ -60,6 +61,8 @@ dependencies { implementation(libs.slf4j) implementation("org.snakeyaml", "snakeyaml-engine", "2.9") + testFixturesImplementation(libs.junit.jupiter) + testImplementation(project(":utils:test-utils")) testImplementation("org.snakeyaml:snakeyaml-engine:2.9") testImplementation("com.squareup.okhttp3:mockwebserver:${libs.versions.okhttp.legacy.get()}") diff --git a/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java b/utils/config-utils/src/testFixtures/java/datadog/trace/test/ConfigInversionExtension.java similarity index 72% rename from utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java rename to utils/config-utils/src/testFixtures/java/datadog/trace/test/ConfigInversionExtension.java index 8932f7abaae..5849755c1a6 100644 --- a/utils/test-utils/src/main/java/datadog/trace/test/ConfigInversionExtension.java +++ b/utils/config-utils/src/testFixtures/java/datadog/trace/test/ConfigInversionExtension.java @@ -2,7 +2,6 @@ import datadog.trace.config.inversion.ConfigHelper; import datadog.trace.config.inversion.ConfigHelper.StrictnessPolicy; -import de.thetaphi.forbiddenapis.SuppressForbidden; import java.util.List; import org.junit.jupiter.api.extension.AfterAllCallback; import org.junit.jupiter.api.extension.BeforeAllCallback; @@ -15,9 +14,6 @@ * *

Registered via {@code META-INF/services/org.junit.jupiter.api.extension.Extension} for * automatic discovery. Requires {@code junit.jupiter.extensions.autodetection.enabled=true}. - * - *

Gracefully no-ops when {@code config-utils} is not on the classpath (e.g. in modules that only - * depend on {@code test-utils}). */ public class ConfigInversionExtension implements BeforeAllCallback, AfterAllCallback { @@ -25,25 +21,9 @@ public class ConfigInversionExtension implements BeforeAllCallback, AfterAllCall ExtensionContext.Namespace.create("dd", "config-inversion"); private static final String PREVIOUS_POLICY = "previousPolicy"; - private static final String AVAILABLE = "available"; - - @SuppressForbidden - private static boolean configHelperAvailable() { - try { - Class.forName("datadog.trace.config.inversion.ConfigHelper"); - return true; - } catch (ClassNotFoundException | NoClassDefFoundError e) { - return false; - } - } @Override public void beforeAll(ExtensionContext ctx) { - boolean available = configHelperAvailable(); - ctx.getStore(NS).put(AVAILABLE, available); - if (!available) { - return; - } StrictnessPolicy previous = ConfigHelper.get().configInversionStrictFlag(); ctx.getStore(NS).put(PREVIOUS_POLICY, previous); ConfigHelper.get().setConfigInversionStrict(StrictnessPolicy.STRICT_TEST); @@ -51,11 +31,6 @@ public void beforeAll(ExtensionContext ctx) { @Override public void afterAll(ExtensionContext ctx) { - Boolean available = ctx.getStore(NS).get(AVAILABLE, Boolean.class); - if (available == null || !available) { - return; - } - List unsupported = ConfigHelper.get().drainUnsupportedConfigs(); StrictnessPolicy previous = ctx.getStore(NS).get(PREVIOUS_POLICY, StrictnessPolicy.class); diff --git a/utils/test-utils/src/main/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/utils/config-utils/src/testFixtures/resources/META-INF/services/org.junit.jupiter.api.extension.Extension similarity index 100% rename from utils/test-utils/src/main/resources/META-INF/services/org.junit.jupiter.api.extension.Extension rename to utils/config-utils/src/testFixtures/resources/META-INF/services/org.junit.jupiter.api.extension.Extension diff --git a/utils/test-utils/build.gradle.kts b/utils/test-utils/build.gradle.kts index 2afc50ccb5a..1f975c4ad45 100644 --- a/utils/test-utils/build.gradle.kts +++ b/utils/test-utils/build.gradle.kts @@ -11,7 +11,6 @@ dependencies { api(project(":components:environment")) api(group = "commons-fileupload", name = "commons-fileupload", version = "1.5") - compileOnly(project(":utils:config-utils")) compileOnly(libs.junit.jupiter) compileOnly(libs.tabletest) compileOnly(libs.logback.core) From 929d1c2def4c2dc6c751a9cdea356fb24684e58d Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Mon, 6 Apr 2026 13:33:02 -0400 Subject: [PATCH 6/6] simplifying extension --- .../trace/test/ConfigInversionExtension.java | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/utils/config-utils/src/testFixtures/java/datadog/trace/test/ConfigInversionExtension.java b/utils/config-utils/src/testFixtures/java/datadog/trace/test/ConfigInversionExtension.java index 5849755c1a6..d8ba0035cd2 100644 --- a/utils/config-utils/src/testFixtures/java/datadog/trace/test/ConfigInversionExtension.java +++ b/utils/config-utils/src/testFixtures/java/datadog/trace/test/ConfigInversionExtension.java @@ -17,28 +17,18 @@ */ public class ConfigInversionExtension implements BeforeAllCallback, AfterAllCallback { - private static final ExtensionContext.Namespace NS = - ExtensionContext.Namespace.create("dd", "config-inversion"); - - private static final String PREVIOUS_POLICY = "previousPolicy"; + private StrictnessPolicy previousPolicy; @Override public void beforeAll(ExtensionContext ctx) { - StrictnessPolicy previous = ConfigHelper.get().configInversionStrictFlag(); - ctx.getStore(NS).put(PREVIOUS_POLICY, previous); + previousPolicy = ConfigHelper.get().configInversionStrictFlag(); ConfigHelper.get().setConfigInversionStrict(StrictnessPolicy.STRICT_TEST); } @Override public void afterAll(ExtensionContext ctx) { List unsupported = ConfigHelper.get().drainUnsupportedConfigs(); - - StrictnessPolicy previous = ctx.getStore(NS).get(PREVIOUS_POLICY, StrictnessPolicy.class); - if (previous != null) { - ConfigHelper.get().setConfigInversionStrict(previous); - } else { - ConfigHelper.get().setConfigInversionStrict(StrictnessPolicy.WARNING); - } + ConfigHelper.get().setConfigInversionStrict(previousPolicy); if (!unsupported.isEmpty()) { throw new AssertionError(