From 4c8153cd8ad65ac8a7f266ccae20f3a41ed4c186 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Wed, 1 Apr 2026 15:38:07 -0400 Subject: [PATCH 01/15] 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 f29cdf56b493b3cfeb791be200d6ea556c483b25 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Wed, 1 Apr 2026 16:00:51 -0400 Subject: [PATCH 02/15] enabling ConfigHelper strict mode by default for spock tests --- utils/test-utils/build.gradle.kts | 1 + .../trace/test/util/DDSpecification.groovy | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/utils/test-utils/build.gradle.kts b/utils/test-utils/build.gradle.kts index 1f975c4ad45..a1f9a4d0472 100644 --- a/utils/test-utils/build.gradle.kts +++ b/utils/test-utils/build.gradle.kts @@ -9,6 +9,7 @@ dependencies { api(libs.bytebuddyagent) api(project(":components:environment")) + compileOnly(project(":utils:config-utils")) api(group = "commons-fileupload", name = "commons-fileupload", version = "1.5") compileOnly(libs.junit.jupiter) diff --git a/utils/test-utils/src/main/groovy/datadog/trace/test/util/DDSpecification.groovy b/utils/test-utils/src/main/groovy/datadog/trace/test/util/DDSpecification.groovy index e7967d38006..2029fee16b1 100644 --- a/utils/test-utils/src/main/groovy/datadog/trace/test/util/DDSpecification.groovy +++ b/utils/test-utils/src/main/groovy/datadog/trace/test/util/DDSpecification.groovy @@ -1,6 +1,7 @@ package datadog.trace.test.util import datadog.environment.EnvironmentVariables +import datadog.trace.config.inversion.ConfigHelper import de.thetaphi.forbiddenapis.SuppressForbidden import java.lang.reflect.Constructor import java.lang.reflect.Field @@ -21,6 +22,7 @@ abstract class DDSpecification extends Specification { private static Constructor instConfigConstructor private static Field configInstanceField private static Constructor configConstructor + private static ConfigHelper.StrictnessPolicy previousStrictnessPolicy static { allowContextTesting() @@ -90,6 +92,17 @@ abstract class DDSpecification extends Specification { } } + private void enableStrictTestPolicy() { + previousStrictnessPolicy = ConfigHelper.get().configInversionStrictFlag() + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.STRICT_TEST) + } + + private void restoreStrictnessPolicy() { + if (previousStrictnessPolicy != null) { + ConfigHelper.get().setConfigInversionStrict(previousStrictnessPolicy) + } + } + private void saveProperties() { originalSystemProperties = new Properties() originalSystemProperties.putAll(System.properties) @@ -117,9 +130,11 @@ abstract class DDSpecification extends Specification { } saveProperties() + enableStrictTestPolicy() } void cleanupSpec() { + restoreStrictnessPolicy() restoreProperties() assert EnvironmentVariables.getAll().findAll { it.key.startsWith("DD_") }.isEmpty() From 1a3083092bf174267938c381ef84bed91bc23397 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Wed, 1 Apr 2026 22:21:37 -0400 Subject: [PATCH 03/15] updating test-utils to include config-utils dependency at runtime --- utils/test-utils/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/test-utils/build.gradle.kts b/utils/test-utils/build.gradle.kts index a1f9a4d0472..6ec6b9c66db 100644 --- a/utils/test-utils/build.gradle.kts +++ b/utils/test-utils/build.gradle.kts @@ -9,7 +9,7 @@ dependencies { api(libs.bytebuddyagent) api(project(":components:environment")) - compileOnly(project(":utils:config-utils")) + api(project(":utils:config-utils")) api(group = "commons-fileupload", name = "commons-fileupload", version = "1.5") compileOnly(libs.junit.jupiter) From da699c21efb205fe667f5c0f2d4cd6845f4420af Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Wed, 1 Apr 2026 22:59:03 -0400 Subject: [PATCH 04/15] overriding strictness for tests using fake env vars --- .../instrumentation/decorator/BaseDecoratorTest.groovy | 5 +++++ .../trace/agent/test/DefaultInstrumenterForkedTest.groovy | 5 +++++ .../datadog/trace/agent/tooling/InstrumenterIndexTest.groovy | 5 +++++ .../datadog/trace/agent/tooling/csi/BaseCallSiteTest.groovy | 5 +++++ .../agent/tooling/muzzle/MuzzleVersionScanPluginTest.groovy | 5 +++++ 5 files changed, 25 insertions(+) diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy index b2686d6257c..354a9c6bc4f 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy @@ -5,11 +5,16 @@ import datadog.trace.bootstrap.instrumentation.api.AgentSpan import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities import datadog.trace.bootstrap.instrumentation.api.Tags +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.test.util.DDSpecification import spock.lang.Shared class BaseDecoratorTest extends DDSpecification { + def setupSpec() { + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + @Shared def decorator = newDecorator() diff --git a/dd-java-agent/agent-installer/src/test/groovy/datadog/trace/agent/test/DefaultInstrumenterForkedTest.groovy b/dd-java-agent/agent-installer/src/test/groovy/datadog/trace/agent/test/DefaultInstrumenterForkedTest.groovy index 9be765964fe..a3500c61ede 100644 --- a/dd-java-agent/agent-installer/src/test/groovy/datadog/trace/agent/test/DefaultInstrumenterForkedTest.groovy +++ b/dd-java-agent/agent-installer/src/test/groovy/datadog/trace/agent/test/DefaultInstrumenterForkedTest.groovy @@ -2,6 +2,7 @@ package datadog.trace.agent.test import datadog.environment.EnvironmentVariables import datadog.trace.agent.tooling.InstrumenterModule +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.agent.tooling.bytebuddy.matcher.DDElementMatchers import datadog.trace.agent.tooling.bytebuddy.outline.TypePoolFacade import datadog.trace.test.util.DDSpecification @@ -12,6 +13,10 @@ class DefaultInstrumenterForkedTest extends DDSpecification { DDElementMatchers.registerAsSupplier() } + def setupSpec() { + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def "default enabled"() { setup: def target = new TestDefaultInstrumenter("test") diff --git a/dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/InstrumenterIndexTest.groovy b/dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/InstrumenterIndexTest.groovy index 09ee41ea1cd..4f220451c38 100644 --- a/dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/InstrumenterIndexTest.groovy +++ b/dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/InstrumenterIndexTest.groovy @@ -1,10 +1,15 @@ package datadog.trace.agent.tooling +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.test.util.DDSpecification import spock.lang.Shared class InstrumenterIndexTest extends DDSpecification { + def setupSpec() { + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + @Shared def unknownInstrumentation = new InstrumenterModule('unknown') {} diff --git a/dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/csi/BaseCallSiteTest.groovy b/dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/csi/BaseCallSiteTest.groovy index 8d611b92ca3..1bc45f31015 100644 --- a/dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/csi/BaseCallSiteTest.groovy +++ b/dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/csi/BaseCallSiteTest.groovy @@ -4,6 +4,7 @@ import datadog.trace.agent.tooling.bytebuddy.csi.Advices import datadog.trace.agent.tooling.bytebuddy.csi.CallSiteInstrumentation import datadog.trace.agent.tooling.bytebuddy.csi.CallSiteSupplier import datadog.trace.agent.tooling.bytebuddy.csi.CallSiteTransformer +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.test.util.DDSpecification import groovy.transform.CompileDynamic import net.bytebuddy.agent.builder.AgentBuilder @@ -31,6 +32,10 @@ import static net.bytebuddy.matcher.ElementMatchers.named @CompileDynamic class BaseCallSiteTest extends DDSpecification { + def setupSpec() { + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + protected CallSites mockCallSites(final byte type = BEFORE, final CallSiteAdvice advice, final Pointcut target, final String... helpers) { return Stub(CallSites) { accept(_ as CallSites.Container) >> { diff --git a/dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/muzzle/MuzzleVersionScanPluginTest.groovy b/dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/muzzle/MuzzleVersionScanPluginTest.groovy index 579c51bb8ed..48003a016e3 100644 --- a/dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/muzzle/MuzzleVersionScanPluginTest.groovy +++ b/dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/muzzle/MuzzleVersionScanPluginTest.groovy @@ -2,6 +2,7 @@ package datadog.trace.agent.tooling.muzzle import datadog.trace.agent.tooling.Instrumenter import datadog.trace.agent.tooling.InstrumenterModule +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.test.util.DDSpecification import net.bytebuddy.matcher.ElementMatcher @@ -20,6 +21,10 @@ import static datadog.trace.agent.tooling.muzzle.TestInstrumentationClasses.Vali class MuzzleVersionScanPluginTest extends DDSpecification { + def setupSpec() { + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def "test assertInstrumentationMuzzled advice"() { setup: def instrumentationLoader = new ServiceEnabledClassLoader(InstrumenterModule, From 650e7d5b7b4c467bd0d16230ae9fb8e6efef8b81 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Thu, 2 Apr 2026 09:20:31 -0400 Subject: [PATCH 05/15] test adding real env vars --- metadata/supported-configurations.json | 56 ++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/metadata/supported-configurations.json b/metadata/supported-configurations.json index 5b7f7fde880..4bed702e030 100644 --- a/metadata/supported-configurations.json +++ b/metadata/supported-configurations.json @@ -5921,6 +5921,14 @@ "aliases": [] } ], + "DD_TRACE_INTEGRATION_GRPC_SERVER_MATCHING_SHORTCUT_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "true", + "aliases": ["DD_INTEGRATION_GRPC_SERVER_MATCHING_SHORTCUT_ENABLED"] + } + ], "DD_TRACE_GSON_ENABLED": [ { "version": "A", @@ -6353,6 +6361,14 @@ "aliases": ["DD_INTEGRATION_HIBERNATE_MATCHING_SHORTCUT_ENABLED"] } ], + "DD_TRACE_INTEGRATION_HIBERNATE_CORE_MATCHING_SHORTCUT_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "true", + "aliases": ["DD_INTEGRATION_HIBERNATE_CORE_MATCHING_SHORTCUT_ENABLED"] + } + ], "DD_TRACE_INTEGRATION_HTTPASYNCCLIENT5_MATCHING_SHORTCUT_ENABLED": [ { "version": "A", @@ -6401,6 +6417,14 @@ "aliases": ["DD_INTEGRATION_HTTPASYNCCLIENT_MATCHING_SHORTCUT_ENABLED"] } ], + "DD_TRACE_INTEGRATION_APACHE_HTTPASYNCCLIENT_MATCHING_SHORTCUT_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "false", + "aliases": ["DD_INTEGRATION_APACHE_HTTPASYNCCLIENT_MATCHING_SHORTCUT_ENABLED"] + } + ], "DD_TRACE_INTERNAL_EXIT_ON_FAILURE": [ { "version": "A", @@ -7753,6 +7777,14 @@ "aliases": ["DD_INTEGRATION_MONGO_3_4_ENABLED", "DD_TRACE_INTEGRATION_MONGO_3_4_ENABLED"] } ], + "DD_TRACE_MONGO_3_6_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "true", + "aliases": ["DD_INTEGRATION_MONGO_3_6_ENABLED", "DD_TRACE_INTEGRATION_MONGO_3_6_ENABLED"] + } + ], "DD_TRACE_MONGO_ANALYTICS_ENABLED": [ { "version": "B", @@ -8193,6 +8225,14 @@ "aliases": ["DD_INTEGRATION_OPENTELEMETRY_EXPERIMENTAL_ENABLED", "DD_TRACE_INTEGRATION_OPENTELEMETRY_EXPERIMENTAL_ENABLED"] } ], + "DD_TRACE_OPENTELEMETRY_METRICS_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "true", + "aliases": ["DD_INTEGRATION_OPENTELEMETRY_METRICS_ENABLED", "DD_TRACE_INTEGRATION_OPENTELEMETRY_METRICS_ENABLED"] + } + ], "DD_TRACE_OPENTRACING_ENABLED": [ { "version": "A", @@ -8849,6 +8889,14 @@ "aliases": ["DD_INTEGRATION_REJECTED_EXECUTION_HANDLER_ENABLED", "DD_TRACE_INTEGRATION_REJECTED_EXECUTION_HANDLER_ENABLED"] } ], + "DD_TRACE_INTEGRATION_REJECTED_EXECUTION_HANDLER_MATCHING_SHORTCUT_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "true", + "aliases": ["DD_INTEGRATION_REJECTED_EXECUTION_HANDLER_MATCHING_SHORTCUT_ENABLED"] + } + ], "DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED": [ { "version": "A", @@ -9689,6 +9737,14 @@ "aliases": ["DD_TRACE_INTEGRATION_SPARK_ENABLED", "DD_INTEGRATION_SPARK_ENABLED"] } ], + "DD_TRACE_SPARK_LAUNCHER_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "false", + "aliases": ["DD_TRACE_INTEGRATION_SPARK_LAUNCHER_ENABLED", "DD_INTEGRATION_SPARK_LAUNCHER_ENABLED"] + } + ], "DD_TRACE_SPARK_EXECUTOR_ANALYTICS_ENABLED": [ { "version": "A", From 14e04054ab8f06521d4a9023b18f4d15d2fb3775 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Thu, 2 Apr 2026 10:09:44 -0400 Subject: [PATCH 06/15] updating tests using fake env vars and adding more env vars --- .../test/groovy/mule4/MuleForkedTest.groovy | 6 +++ .../mule4/MuleHttpServerForkedTest.groovy | 6 +++ .../src/test/groovy/WildFlyForkedTest.groovy | 7 ++++ metadata/supported-configurations.json | 42 ++++++++++++++++++- 4 files changed, 60 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleForkedTest.groovy b/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleForkedTest.groovy index 07f201d3cae..45e82a4bbe7 100644 --- a/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleForkedTest.groovy +++ b/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleForkedTest.groovy @@ -8,6 +8,7 @@ import static org.mule.runtime.api.util.MuleTestUtil.muleSpan import com.squareup.moshi.Moshi import com.squareup.moshi.Types import datadog.trace.agent.test.base.WithHttpServer +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.core.DDSpan @@ -20,6 +21,11 @@ import spock.lang.AutoCleanup import spock.lang.Shared class MuleForkedTest extends WithHttpServer { + // Opt out of strict config validation because this test loads HttpServerTestHandlerInstrumentation + // which uses the fake instrumentation name "mule4-http-server-test-handler" + void setupSpec() { + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } // TODO since mule uses reactor core, things sometime propagate to places where they're not closed @Override diff --git a/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleHttpServerForkedTest.groovy b/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleHttpServerForkedTest.groovy index c102754dc74..e1c39a1988e 100644 --- a/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleHttpServerForkedTest.groovy +++ b/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleHttpServerForkedTest.groovy @@ -4,9 +4,15 @@ import static org.mule.runtime.api.util.MuleTestUtil.muleSpan import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.agent.test.base.HttpServerTest +import datadog.trace.config.inversion.ConfigHelper import spock.lang.Shared class MuleHttpServerForkedTest extends HttpServerTest { + // Opt out of strict config validation because this test loads HttpServerTestHandlerInstrumentation + // which uses the fake instrumentation name "mule4-http-server-test-handler" + void setupSpec() { + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } // TODO since mule uses reactor core, things sometime propagate to places where they're not closed @Override diff --git a/dd-java-agent/instrumentation/wildfly-9.0/src/test/groovy/WildFlyForkedTest.groovy b/dd-java-agent/instrumentation/wildfly-9.0/src/test/groovy/WildFlyForkedTest.groovy index 6ababdb5f24..af482ce4eb9 100644 --- a/dd-java-agent/instrumentation/wildfly-9.0/src/test/groovy/WildFlyForkedTest.groovy +++ b/dd-java-agent/instrumentation/wildfly-9.0/src/test/groovy/WildFlyForkedTest.groovy @@ -1,5 +1,6 @@ import datadog.environment.JavaVirtualMachine import datadog.trace.agent.test.base.WithHttpServer +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.agent.test.naming.TestingGenericHttpNamingConventions import datadog.trace.agent.test.utils.OkHttpUtils import datadog.trace.api.DDSpanTypes @@ -17,6 +18,12 @@ import test.TestServlet JavaVirtualMachine.isJavaVersionAtLeast(22) }) class WildFlyForkedTest extends WithHttpServer implements TestingGenericHttpNamingConventions.ServerV0 { + // Opt out of strict config validation because this test loads ModulePatchInstrumentation + // which uses the fake instrumentation name "jboss-module-patch" + void setupSpec() { + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + @Override EmbeddedWildfly startServer(int port) { // create the archive diff --git a/metadata/supported-configurations.json b/metadata/supported-configurations.json index 4bed702e030..c5f33052af3 100644 --- a/metadata/supported-configurations.json +++ b/metadata/supported-configurations.json @@ -4785,6 +4785,14 @@ "aliases": [] } ], + "DD_TRACE_CICS_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "true", + "aliases": ["DD_TRACE_INTEGRATION_CICS_ENABLED", "DD_INTEGRATION_CICS_ENABLED"] + } + ], "DD_TRACE_CI_VISIBILITY_ENABLED": [ { "version": "A", @@ -7785,6 +7793,14 @@ "aliases": ["DD_INTEGRATION_MONGO_3_6_ENABLED", "DD_TRACE_INTEGRATION_MONGO_3_6_ENABLED"] } ], + "DD_TRACE_MONGO_3_8_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "true", + "aliases": ["DD_INTEGRATION_MONGO_3_8_ENABLED", "DD_TRACE_INTEGRATION_MONGO_3_8_ENABLED"] + } + ], "DD_TRACE_MONGO_ANALYTICS_ENABLED": [ { "version": "B", @@ -8145,6 +8161,14 @@ "aliases": ["DD_INTEGRATION_OPENSEARCH_TRANSPORT_ENABLED", "DD_TRACE_INTEGRATION_OPENSEARCH_TRANSPORT_ENABLED"] } ], + "DD_TRACE_OPENTELEMETRY_1_47_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "true", + "aliases": ["DD_TRACE_INTEGRATION_OPENTELEMETRY_1_47_ENABLED", "DD_INTEGRATION_OPENTELEMETRY_1_47_ENABLED"] + } + ], "DD_TRACE_OPENTELEMETRY_1_ENABLED": [ { "version": "A", @@ -8462,7 +8486,7 @@ "version": "A", "type": "boolean", "default": "false", - "aliases": [] + "aliases": ["DD_TRACE_INTEGRATION_PEKKO_SCHEDULER_ENABLED", "DD_INTEGRATION_PEKKO_SCHEDULER_ENABLED"] } ], "DD_TRACE_PERF_METRICS_ENABLED": [ @@ -8937,6 +8961,22 @@ "aliases": [] } ], + "DD_TRACE_RESILIENCE4J_ANALYTICS_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "false", + "aliases": ["DD_RESILIENCE4J_ANALYTICS_ENABLED"] + } + ], + "DD_TRACE_RESILIENCE4J_ANALYTICS_SAMPLE_RATE": [ + { + "version": "A", + "type": "decimal", + "default": "1.0", + "aliases": ["DD_RESILIENCE4J_ANALYTICS_SAMPLE_RATE"] + } + ], "DD_TRACE_RESILIENCE4J_ENABLED": [ { "version": "A", From b998bec98dee1dcd4c79bf0b65a8e52c05b014a3 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Thu, 2 Apr 2026 11:00:20 -0400 Subject: [PATCH 07/15] overriding test mode for elasticsearch and opensearch --- .../groovy/Elasticsearch2NodeClientTest.groovy | 3 +++ .../groovy/Elasticsearch2TransportClientTest.groovy | 3 +++ .../springdata/Elasticsearch2SpringRepositoryTest.groovy | 6 ++++++ .../springdata/Elasticsearch2SpringTemplateTest.groovy | 3 +++ .../src/test/groovy/Elasticsearch2NodeClientTest.groovy | 3 +++ .../test/groovy/Elasticsearch2TransportClientTest.groovy | 3 +++ .../springdata/Elasticsearch2SpringRepositoryTest.groovy | 4 ++++ .../springdata/Elasticsearch2SpringTemplateTest.groovy | 3 +++ .../src/test/groovy/Elasticsearch5NodeClientTest.groovy | 3 +++ .../test/groovy/Elasticsearch5TransportClientTest.groovy | 3 +++ .../src/test/groovy/Elasticsearch53NodeClientTest.groovy | 3 +++ .../test/groovy/Elasticsearch53TransportClientTest.groovy | 3 +++ .../springdata/Elasticsearch53SpringRepositoryTest.groovy | 4 ++++ .../springdata/Elasticsearch53SpringTemplateTest.groovy | 3 +++ .../src/test/groovy/Elasticsearch6NodeClientTest.groovy | 3 +++ .../test/groovy/Elasticsearch6TransportClientTest.groovy | 4 ++++ .../src/test/groovy/Elasticsearch73NodeClientTest.groovy | 3 +++ .../test/groovy/Elasticsearch73TransportClientTest.groovy | 4 ++++ .../src/test/groovy/OpensearchNodeClientTest.groovy | 3 +++ .../src/test/groovy/OpensearchTransportClientTest.groovy | 4 ++++ 20 files changed, 68 insertions(+) diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2NodeClientTest.groovy index 59bea7669e1..30fb8d314e0 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2NodeClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest @@ -30,6 +31,8 @@ class Elasticsearch2NodeClientTest extends InstrumentationSpecification { def client = testNode.client() def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2TransportClientTest.groovy index e04c446c81e..9ec9fd4dec2 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2TransportClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest @@ -33,6 +34,8 @@ class Elasticsearch2TransportClientTest extends InstrumentationSpecification { TransportClient client def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy index 2e98f8166b5..259fe1adbe5 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy @@ -3,6 +3,7 @@ package springdata import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.springframework.context.ApplicationContext @@ -20,6 +21,11 @@ class Elasticsearch2SpringRepositoryTest extends InstrumentationSpecification { @Shared DocRepository repo = applicationContext.getBean(DocRepository) + def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def cleanup() { def cleanupSpan = runUnderTrace("cleanup") { repo.refresh() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy index 62b1b909f07..0302e4b0062 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy @@ -3,6 +3,7 @@ package springdata import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.search.SearchResponse @@ -37,6 +38,8 @@ class Elasticsearch2SpringTemplateTest extends InstrumentationSpecification { ElasticsearchTemplate template def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2NodeClientTest.groovy index 6e419097bb9..f6f17af1bdc 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2NodeClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.naming.VersionedNamingTestBase import datadog.trace.api.Config +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -27,6 +28,8 @@ abstract class Elasticsearch2NodeClientTest extends VersionedNamingTestBase { def client = testNode.client() def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2TransportClientTest.groovy index a765a46a229..eac8f57b507 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2TransportClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.naming.VersionedNamingTestBase import datadog.trace.api.Config +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -35,6 +36,8 @@ abstract class Elasticsearch2TransportClientTest extends VersionedNamingTestBase TransportClient client def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy index 141d8476270..a9f3c9b46ce 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy @@ -3,6 +3,7 @@ package springdata import datadog.trace.agent.test.naming.VersionedNamingTestBase import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.springframework.context.ApplicationContext @@ -30,6 +31,9 @@ abstract class Elasticsearch2SpringRepositoryTest extends VersionedNamingTestBas } def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + // force putting the mapping here to avoid flakiness repo.index(new Doc()) cleanup() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy index 6d85d26507b..3102e6ab5c0 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy @@ -2,6 +2,7 @@ package springdata import datadog.trace.agent.test.naming.VersionedNamingTestBase import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.search.SearchResponse @@ -36,6 +37,8 @@ abstract class Elasticsearch2SpringTemplateTest extends VersionedNamingTestBase ElasticsearchTemplate template def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5NodeClientTest.groovy index 198ed0e0b3b..3b24ecf8c59 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5NodeClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest @@ -29,6 +30,8 @@ class Elasticsearch5NodeClientTest extends InstrumentationSpecification { def client = testNode.client() def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5TransportClientTest.groovy index f9e1637244a..4eb1fea8ac0 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5TransportClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest @@ -37,6 +38,8 @@ class Elasticsearch5TransportClientTest extends InstrumentationSpecification { TransportClient client def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53NodeClientTest.groovy index 06aedcae037..a697a042b94 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53NodeClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest @@ -29,6 +30,8 @@ class Elasticsearch53NodeClientTest extends InstrumentationSpecification { def client = testNode.client() def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53TransportClientTest.groovy index cf2afb15466..69ed4dce367 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53TransportClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest @@ -38,6 +39,8 @@ class Elasticsearch53TransportClientTest extends InstrumentationSpecification { String clusterName = UUID.randomUUID().toString() def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringRepositoryTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringRepositoryTest.groovy index c65155597cc..c3fc56ff6b3 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringRepositoryTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringRepositoryTest.groovy @@ -2,6 +2,7 @@ package springdata import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.springframework.context.annotation.AnnotationConfigApplicationContext @@ -55,6 +56,9 @@ class Elasticsearch53SpringRepositoryTest extends InstrumentationSpecification { } def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + repo.refresh() // lazy init cleanup() } diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringTemplateTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringTemplateTest.groovy index b7c2664da3b..5e50c4a7aa0 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringTemplateTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringTemplateTest.groovy @@ -3,6 +3,7 @@ package springdata import com.google.common.collect.ImmutableSet import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.search.SearchResponse @@ -47,6 +48,8 @@ class Elasticsearch53SpringTemplateTest extends InstrumentationSpecification { ElasticsearchTemplate template def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6NodeClientTest.groovy index 3845d1873eb..0e4b421338a 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6NodeClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest @@ -28,6 +29,8 @@ class Elasticsearch6NodeClientTest extends InstrumentationSpecification { def client = testNode.client() def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6TransportClientTest.groovy index 6df99841620..239a35959e0 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6TransportClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest @@ -36,6 +37,9 @@ class Elasticsearch6TransportClientTest extends InstrumentationSpecification { TransportClient client def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73NodeClientTest.groovy index 6d9e5b44900..174e512a50a 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73NodeClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest @@ -28,6 +29,8 @@ class Elasticsearch73NodeClientTest extends InstrumentationSpecification { def client = testNode.client() def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73TransportClientTest.groovy index 32a4ea411cd..a38e5fd6db7 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73TransportClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest @@ -36,6 +37,9 @@ class Elasticsearch73TransportClientTest extends InstrumentationSpecification { TransportClient client def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchNodeClientTest.groovy b/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchNodeClientTest.groovy index 488b808d600..10c4f7ea484 100644 --- a/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchNodeClientTest.groovy +++ b/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchNodeClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.opensearch.action.admin.cluster.health.ClusterHealthRequest @@ -34,6 +35,8 @@ class OpensearchNodeClientTest extends InstrumentationSpecification { } def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) aosWorkingDir = File.createTempDir("test-aos-working-dir-", "") aosWorkingDir.deleteOnExit() diff --git a/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchTransportClientTest.groovy b/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchTransportClientTest.groovy index 273802eb278..d3dfcc89d13 100644 --- a/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchTransportClientTest.groovy +++ b/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchTransportClientTest.groovy @@ -1,5 +1,6 @@ import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.opensearch.action.admin.cluster.health.ClusterHealthRequest @@ -41,6 +42,9 @@ class OpensearchTransportClientTest extends InstrumentationSpecification { } def setupSpec() { + // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + aosWorkingDir = File.createTempDir("test-aos-working-dir-", "") aosWorkingDir.deleteOnExit() println "AOS work dir: $aosWorkingDir" From 3e2ccfe9a9883eedeaaf24c5a6793938bb978e58 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Thu, 2 Apr 2026 11:10:45 -0400 Subject: [PATCH 08/15] adding final integration configs and overriding fake config tests --- .../src/test/groovy/MeasuredConfigTest.groovy | 6 +++ .../src/test/groovy/TraceConfigTest.groovy | 6 +++ metadata/supported-configurations.json | 40 +++++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/MeasuredConfigTest.groovy b/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/MeasuredConfigTest.groovy index c3f540b4d38..b25d601471b 100644 --- a/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/MeasuredConfigTest.groovy +++ b/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/MeasuredConfigTest.groovy @@ -1,9 +1,15 @@ import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import java.util.concurrent.Callable class MeasuredConfigTest extends InstrumentationSpecification { + // Opt out of strict config validation because dd.trace.methods uses class names + // which generate dynamic config keys like DD_TRACE_TRACE_CONFIG_PACKAGE_CLASSNAME_ENABLED + void setupSpec() { + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/TraceConfigTest.groovy b/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/TraceConfigTest.groovy index f1c0874e670..e6520ff38c3 100644 --- a/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/TraceConfigTest.groovy +++ b/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/TraceConfigTest.groovy @@ -1,9 +1,15 @@ import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.instrumentation.api.Tags import java.util.concurrent.Callable class TraceConfigTest extends InstrumentationSpecification { + // Opt out of strict config validation because dd.trace.methods uses class names + // which generate dynamic config keys like DD_TRACE_TRACE_CONFIG_TRACECONFIGTEST$DICTIONARYELEMENT_ENABLED + void setupSpec() { + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } @Override void configurePreAgent() { diff --git a/metadata/supported-configurations.json b/metadata/supported-configurations.json index c5f33052af3..8c4d346b10c 100644 --- a/metadata/supported-configurations.json +++ b/metadata/supported-configurations.json @@ -4785,6 +4785,22 @@ "aliases": [] } ], + "DD_TRACE_CICS_ANALYTICS_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "false", + "aliases": ["DD_CICS_ANALYTICS_ENABLED"] + } + ], + "DD_TRACE_CICS_ANALYTICS_SAMPLE_RATE": [ + { + "version": "A", + "type": "decimal", + "default": "1.0", + "aliases": ["DD_CICS_ANALYTICS_SAMPLE_RATE"] + } + ], "DD_TRACE_CICS_ENABLED": [ { "version": "A", @@ -8257,6 +8273,14 @@ "aliases": ["DD_INTEGRATION_OPENTELEMETRY_METRICS_ENABLED", "DD_TRACE_INTEGRATION_OPENTELEMETRY_METRICS_ENABLED"] } ], + "DD_TRACE_INTEGRATION_OPENTELEMETRY_METRICS_MATCHING_SHORTCUT_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "true", + "aliases": ["DD_INTEGRATION_OPENTELEMETRY_METRICS_MATCHING_SHORTCUT_ENABLED"] + } + ], "DD_TRACE_OPENTRACING_ENABLED": [ { "version": "A", @@ -8985,6 +9009,22 @@ "aliases": ["DD_TRACE_INTEGRATION_RESILIENCE4J_ENABLED", "DD_INTEGRATION_RESILIENCE4J_ENABLED"] } ], + "DD_TRACE_RESILIENCE4J_RETRY_ANALYTICS_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "false", + "aliases": ["DD_RESILIENCE4J_RETRY_ANALYTICS_ENABLED"] + } + ], + "DD_TRACE_RESILIENCE4J_RETRY_ANALYTICS_SAMPLE_RATE": [ + { + "version": "A", + "type": "decimal", + "default": "1.0", + "aliases": ["DD_RESILIENCE4J_RETRY_ANALYTICS_SAMPLE_RATE"] + } + ], "DD_TRACE_RESILIENCE4J_REACTOR_ENABLED": [ { "version": "A", From 92e6d269d9f37064a88dee2f34375fc7d1b456a7 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Thu, 2 Apr 2026 11:52:04 -0400 Subject: [PATCH 09/15] updating strictness in configurePreAgent --- .../src/test/groovy/MeasuredConfigTest.groovy | 6 +----- .../src/test/groovy/TraceConfigTest.groovy | 6 +----- .../groovy/Elasticsearch2NodeClientTest.groovy | 6 +++++- .../groovy/Elasticsearch2TransportClientTest.groovy | 6 +++++- .../springdata/Elasticsearch2SpringRepositoryTest.groovy | 4 +++- .../springdata/Elasticsearch2SpringTemplateTest.groovy | 6 +++++- .../src/test/groovy/Elasticsearch2NodeClientTest.groovy | 6 +++++- .../test/groovy/Elasticsearch2TransportClientTest.groovy | 6 +++++- .../springdata/Elasticsearch2SpringRepositoryTest.groovy | 6 +++++- .../springdata/Elasticsearch2SpringTemplateTest.groovy | 6 +++++- .../src/test/groovy/Elasticsearch5NodeClientTest.groovy | 6 +++++- .../test/groovy/Elasticsearch5TransportClientTest.groovy | 6 +++++- .../src/test/groovy/Elasticsearch53NodeClientTest.groovy | 6 +++++- .../test/groovy/Elasticsearch53TransportClientTest.groovy | 6 +++++- .../springdata/Elasticsearch53SpringRepositoryTest.groovy | 6 +++++- .../springdata/Elasticsearch53SpringTemplateTest.groovy | 6 +++++- .../src/test/groovy/Elasticsearch6NodeClientTest.groovy | 6 +++++- .../test/groovy/Elasticsearch6TransportClientTest.groovy | 6 +++++- .../src/test/groovy/Elasticsearch73NodeClientTest.groovy | 6 +++++- .../test/groovy/Elasticsearch73TransportClientTest.groovy | 6 +++++- .../mule-4.5/src/test/groovy/mule4/MuleForkedTest.groovy | 8 +++----- .../src/test/groovy/mule4/MuleHttpServerForkedTest.groovy | 6 +----- .../src/test/groovy/OpensearchNodeClientTest.groovy | 6 +++++- .../src/test/groovy/OpensearchTransportClientTest.groovy | 6 +++++- .../wildfly-9.0/src/test/groovy/WildFlyForkedTest.groovy | 8 +++----- 25 files changed, 107 insertions(+), 45 deletions(-) diff --git a/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/MeasuredConfigTest.groovy b/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/MeasuredConfigTest.groovy index b25d601471b..6ba58ea4a1c 100644 --- a/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/MeasuredConfigTest.groovy +++ b/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/MeasuredConfigTest.groovy @@ -5,15 +5,11 @@ import datadog.trace.bootstrap.instrumentation.api.Tags import java.util.concurrent.Callable class MeasuredConfigTest extends InstrumentationSpecification { - // Opt out of strict config validation because dd.trace.methods uses class names - // which generate dynamic config keys like DD_TRACE_TRACE_CONFIG_PACKAGE_CLASSNAME_ENABLED - void setupSpec() { - ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) - } @Override void configurePreAgent() { super.configurePreAgent() + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) injectSysConfig("dd.trace.methods", "package.ClassName[method1,method2];${ConfigTracedCallable.name}[call];${ConfigTracedCallable2.name}[*];") injectSysConfig("dd.measure.methods", "package.ClassName[method1,method2];${ConfigTracedCallable.name}[call];${ConfigTracedCallable2.name}[*];") } diff --git a/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/TraceConfigTest.groovy b/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/TraceConfigTest.groovy index e6520ff38c3..d5e556e1c36 100644 --- a/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/TraceConfigTest.groovy +++ b/dd-java-agent/instrumentation/datadog/tracing/trace-annotation/src/test/groovy/TraceConfigTest.groovy @@ -5,15 +5,11 @@ import datadog.trace.bootstrap.instrumentation.api.Tags import java.util.concurrent.Callable class TraceConfigTest extends InstrumentationSpecification { - // Opt out of strict config validation because dd.trace.methods uses class names - // which generate dynamic config keys like DD_TRACE_TRACE_CONFIG_TRACECONFIGTEST$DICTIONARYELEMENT_ENABLED - void setupSpec() { - ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) - } @Override void configurePreAgent() { super.configurePreAgent() + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) injectSysConfig("dd.trace.methods", "package.ClassName[method1,method2];${ConfigTracedCallable.name}[call];${ConfigTracedCallable2.name}[*];${Animal.name}[animalSound];${DictionaryElement.name}[*];${Floor.name}[setNumber];${Mammal.name}[*]") } diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2NodeClientTest.groovy index 30fb8d314e0..408d0dcdabe 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2NodeClientTest.groovy @@ -30,10 +30,14 @@ class Elasticsearch2NodeClientTest extends InstrumentationSpecification { def client = testNode.client() - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2TransportClientTest.groovy index 9ec9fd4dec2..cbd5b5e1b38 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/Elasticsearch2TransportClientTest.groovy @@ -33,10 +33,14 @@ class Elasticsearch2TransportClientTest extends InstrumentationSpecification { @Shared TransportClient client - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy index 259fe1adbe5..b39626c161f 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy @@ -21,7 +21,9 @@ class Elasticsearch2SpringRepositoryTest extends InstrumentationSpecification { @Shared DocRepository repo = applicationContext.getBean(DocRepository) - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) } diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy index 0302e4b0062..cb4002309eb 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/latestDepTest/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy @@ -37,10 +37,14 @@ class Elasticsearch2SpringTemplateTest extends InstrumentationSpecification { @Shared ElasticsearchTemplate template - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2NodeClientTest.groovy index f6f17af1bdc..cc066bcd822 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2NodeClientTest.groovy @@ -27,10 +27,14 @@ abstract class Elasticsearch2NodeClientTest extends VersionedNamingTestBase { def client = testNode.client() - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2TransportClientTest.groovy index eac8f57b507..fa2a5d76ccc 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/Elasticsearch2TransportClientTest.groovy @@ -35,10 +35,14 @@ abstract class Elasticsearch2TransportClientTest extends VersionedNamingTestBase @Shared TransportClient client - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy index a9f3c9b46ce..3f3e0853c66 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy @@ -30,10 +30,14 @@ abstract class Elasticsearch2SpringRepositoryTest extends VersionedNamingTestBas TEST_WRITER.waitUntilReported(cleanupSpan) } - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { // force putting the mapping here to avoid flakiness repo.index(new Doc()) cleanup() diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy index 3102e6ab5c0..d5227c37dfa 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-2.0/src/test/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy @@ -36,10 +36,14 @@ abstract class Elasticsearch2SpringTemplateTest extends VersionedNamingTestBase @Shared ElasticsearchTemplate template - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5NodeClientTest.groovy index 3b24ecf8c59..996f7e3d34e 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5NodeClientTest.groovy @@ -29,10 +29,14 @@ class Elasticsearch5NodeClientTest extends InstrumentationSpecification { def client = testNode.client() - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5TransportClientTest.groovy index 4eb1fea8ac0..82ed0d6d7a3 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.0/src/test/groovy/Elasticsearch5TransportClientTest.groovy @@ -37,10 +37,14 @@ class Elasticsearch5TransportClientTest extends InstrumentationSpecification { @Shared TransportClient client - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53NodeClientTest.groovy index a697a042b94..218f75e6454 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53NodeClientTest.groovy @@ -29,10 +29,14 @@ class Elasticsearch53NodeClientTest extends InstrumentationSpecification { def client = testNode.client() - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53TransportClientTest.groovy index 69ed4dce367..cb05afcc747 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/Elasticsearch53TransportClientTest.groovy @@ -38,10 +38,14 @@ class Elasticsearch53TransportClientTest extends InstrumentationSpecification { @Shared String clusterName = UUID.randomUUID().toString() - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringRepositoryTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringRepositoryTest.groovy index c3fc56ff6b3..82f22c908e0 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringRepositoryTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringRepositoryTest.groovy @@ -55,10 +55,14 @@ class Elasticsearch53SpringRepositoryTest extends InstrumentationSpecification { } } - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { repo.refresh() // lazy init cleanup() } diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringTemplateTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringTemplateTest.groovy index 5e50c4a7aa0..b047c5873cf 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringTemplateTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringTemplateTest.groovy @@ -47,10 +47,14 @@ class Elasticsearch53SpringTemplateTest extends InstrumentationSpecification { @Shared ElasticsearchTemplate template - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6NodeClientTest.groovy index 0e4b421338a..1171175820e 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6NodeClientTest.groovy @@ -28,10 +28,14 @@ class Elasticsearch6NodeClientTest extends InstrumentationSpecification { def client = testNode.client() - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6TransportClientTest.groovy index 239a35959e0..3fcc03496b5 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-6.0/src/test/groovy/Elasticsearch6TransportClientTest.groovy @@ -36,10 +36,14 @@ class Elasticsearch6TransportClientTest extends InstrumentationSpecification { @Shared TransportClient client - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73NodeClientTest.groovy index 174e512a50a..d3e192b3f82 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73NodeClientTest.groovy @@ -28,10 +28,14 @@ class Elasticsearch73NodeClientTest extends InstrumentationSpecification { def client = testNode.client() - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73TransportClientTest.groovy index a38e5fd6db7..b2a19e0ad2e 100644 --- a/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/elasticsearch-transport/elasticsearch-transport-7.3/src/test/groovy/Elasticsearch73TransportClientTest.groovy @@ -36,10 +36,14 @@ class Elasticsearch73TransportClientTest extends InstrumentationSpecification { @Shared TransportClient client - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { esWorkingDir = File.createTempDir("test-es-working-dir-", "") esWorkingDir.deleteOnExit() println "ES work dir: $esWorkingDir" diff --git a/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleForkedTest.groovy b/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleForkedTest.groovy index 45e82a4bbe7..2fb36652a66 100644 --- a/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleForkedTest.groovy +++ b/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleForkedTest.groovy @@ -21,11 +21,6 @@ import spock.lang.AutoCleanup import spock.lang.Shared class MuleForkedTest extends WithHttpServer { - // Opt out of strict config validation because this test loads HttpServerTestHandlerInstrumentation - // which uses the fake instrumentation name "mule4-http-server-test-handler" - void setupSpec() { - ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) - } // TODO since mule uses reactor core, things sometime propagate to places where they're not closed @Override @@ -36,6 +31,9 @@ class MuleForkedTest extends WithHttpServer { @Override protected void configurePreAgent() { super.configurePreAgent() + // Opt out of strict config validation because this test loads HttpServerTestHandlerInstrumentation + // which uses the fake instrumentation name "mule4-http-server-test-handler" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) injectSysConfig("integration.mule.enabled", "true") } diff --git a/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleHttpServerForkedTest.groovy b/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleHttpServerForkedTest.groovy index e1c39a1988e..c5b060a2f2b 100644 --- a/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleHttpServerForkedTest.groovy +++ b/dd-java-agent/instrumentation/mule-4.5/src/test/groovy/mule4/MuleHttpServerForkedTest.groovy @@ -8,11 +8,6 @@ import datadog.trace.config.inversion.ConfigHelper import spock.lang.Shared class MuleHttpServerForkedTest extends HttpServerTest { - // Opt out of strict config validation because this test loads HttpServerTestHandlerInstrumentation - // which uses the fake instrumentation name "mule4-http-server-test-handler" - void setupSpec() { - ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) - } // TODO since mule uses reactor core, things sometime propagate to places where they're not closed @Override @@ -62,6 +57,7 @@ class MuleHttpServerForkedTest extends HttpServerTest { @Override protected void configurePreAgent() { super.configurePreAgent() + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) injectSysConfig("integration.mule.enabled", "true") } diff --git a/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchNodeClientTest.groovy b/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchNodeClientTest.groovy index 10c4f7ea484..153a764ac71 100644 --- a/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchNodeClientTest.groovy +++ b/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchNodeClientTest.groovy @@ -34,10 +34,14 @@ class OpensearchNodeClientTest extends InstrumentationSpecification { false } - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { aosWorkingDir = File.createTempDir("test-aos-working-dir-", "") aosWorkingDir.deleteOnExit() println "AOS work dir: $aosWorkingDir" diff --git a/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchTransportClientTest.groovy b/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchTransportClientTest.groovy index d3dfcc89d13..42f23f38ea2 100644 --- a/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchTransportClientTest.groovy +++ b/dd-java-agent/instrumentation/opensearch/opensearch-transport-1.0/src/test/groovy/OpensearchTransportClientTest.groovy @@ -41,10 +41,14 @@ class OpensearchTransportClientTest extends InstrumentationSpecification { false } - def setupSpec() { + @Override + protected void configurePreAgent() { + super.configurePreAgent() // Opt out of strict config validation because this test loads a BreakTrace test instrumentation with fake name "test" ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def setupSpec() { aosWorkingDir = File.createTempDir("test-aos-working-dir-", "") aosWorkingDir.deleteOnExit() println "AOS work dir: $aosWorkingDir" diff --git a/dd-java-agent/instrumentation/wildfly-9.0/src/test/groovy/WildFlyForkedTest.groovy b/dd-java-agent/instrumentation/wildfly-9.0/src/test/groovy/WildFlyForkedTest.groovy index af482ce4eb9..4c2eb9663a3 100644 --- a/dd-java-agent/instrumentation/wildfly-9.0/src/test/groovy/WildFlyForkedTest.groovy +++ b/dd-java-agent/instrumentation/wildfly-9.0/src/test/groovy/WildFlyForkedTest.groovy @@ -18,11 +18,6 @@ import test.TestServlet JavaVirtualMachine.isJavaVersionAtLeast(22) }) class WildFlyForkedTest extends WithHttpServer implements TestingGenericHttpNamingConventions.ServerV0 { - // Opt out of strict config validation because this test loads ModulePatchInstrumentation - // which uses the fake instrumentation name "jboss-module-patch" - void setupSpec() { - ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) - } @Override EmbeddedWildfly startServer(int port) { @@ -46,6 +41,9 @@ class WildFlyForkedTest extends WithHttpServer implements Testi @Override protected void configurePreAgent() { super.configurePreAgent() + // Opt out of strict config validation because this test loads ModulePatchInstrumentation + // which uses the fake instrumentation name "jboss-module-patch" + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) // otherwise there are differences in setting the resource name across wildfly versions injectSysConfig("undertow.legacy.tracing.enabled", "false") } From 3582e00074884e61f986bf6e8c412d5df3ca76a1 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Thu, 2 Apr 2026 12:16:14 -0400 Subject: [PATCH 10/15] update config helper to guarantee throw an error that won't be caught --- .../test/InstrumentationSpecification.groovy | 9 +++++++ metadata/supported-configurations.json | 24 +++++++++++++++++++ .../trace/config/inversion/ConfigHelper.java | 16 +++++++++++++ .../trace/test/util/DDSpecification.groovy | 6 +++++ 4 files changed, 55 insertions(+) diff --git a/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/InstrumentationSpecification.groovy b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/InstrumentationSpecification.groovy index 0b9fb35e563..0fbfa70924e 100644 --- a/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/InstrumentationSpecification.groovy +++ b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/InstrumentationSpecification.groovy @@ -10,6 +10,8 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.CODE_ORIGIN_FO import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious import static datadog.trace.util.AgentThreadFactory.AgentThread.TASK_SCHEDULER +import datadog.trace.config.inversion.ConfigHelper + import ch.qos.logback.classic.Level import ch.qos.logback.classic.util.ContextInitializer import com.datadog.debugger.agent.ClassesToRetransformFinder @@ -426,6 +428,13 @@ abstract class InstrumentationSpecification extends DDSpecification implements A .hasNext(): "No instrumentation found" activeTransformer = AgentInstaller.installBytebuddyAgent( INSTRUMENTATION, true, AgentInstaller.getEnabledSystems(), this) + + // Assert no unsupported configs were encountered during agent install. + // This catches configs that were swallowed by InstrumenterIndex.buildModule()/loadModules(). + def unsupported = ConfigHelper.get().drainUnsupportedConfigs() + assert unsupported.isEmpty(): "Unsupported configurations found during agent install. " + + "Add these to metadata/supported-configurations.json or opt out with StrictnessPolicy.TEST:\n " + + unsupported.join("\n ") } protected String idGenerationStrategyName() { diff --git a/metadata/supported-configurations.json b/metadata/supported-configurations.json index 8c4d346b10c..e63b1dc6a33 100644 --- a/metadata/supported-configurations.json +++ b/metadata/supported-configurations.json @@ -8137,6 +8137,30 @@ "aliases": ["DD_TRACE_INTEGRATION_OKHTTP_ENABLED", "DD_INTEGRATION_OKHTTP_ENABLED"] } ], + "DD_TRACE_OPENAI_JAVA_ANALYTICS_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "false", + "aliases": ["DD_OPENAI_JAVA_ANALYTICS_ENABLED"] + } + ], + "DD_TRACE_OPENAI_JAVA_ANALYTICS_SAMPLE_RATE": [ + { + "version": "A", + "type": "decimal", + "default": "1.0", + "aliases": ["DD_OPENAI_JAVA_ANALYTICS_SAMPLE_RATE"] + } + ], + "DD_TRACE_OPENAI_JAVA_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "true", + "aliases": ["DD_TRACE_INTEGRATION_OPENAI_JAVA_ENABLED", "DD_INTEGRATION_OPENAI_JAVA_ENABLED"] + } + ], "DD_TRACE_OPENSEARCH_ANALYTICS_ENABLED": [ { "version": "A", 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/groovy/datadog/trace/test/util/DDSpecification.groovy b/utils/test-utils/src/main/groovy/datadog/trace/test/util/DDSpecification.groovy index 2029fee16b1..3e18712f52d 100644 --- a/utils/test-utils/src/main/groovy/datadog/trace/test/util/DDSpecification.groovy +++ b/utils/test-utils/src/main/groovy/datadog/trace/test/util/DDSpecification.groovy @@ -169,6 +169,12 @@ abstract class DDSpecification extends Specification { } void cleanup() { + // Assert no unsupported configs were encountered during the test + def unsupported = ConfigHelper.get().drainUnsupportedConfigs() + assert unsupported.isEmpty(): "Unsupported configurations found during test. " + + "Add these to metadata/supported-configurations.json or opt out with StrictnessPolicy.TEST:\n " + + unsupported.join("\n ") + environmentVariables.clear() restoreProperties() From e7b23e9c84873bf4d5f3e9b7e8174a569fd84d11 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Thu, 2 Apr 2026 13:03:03 -0400 Subject: [PATCH 11/15] configuring more fake config tests --- .../src/test/groovy/AgentTestRunnerTest.groovy | 3 +++ .../src/test/groovy/ConfigResetTest.groovy | 8 ++++++++ .../src/test/groovy/InstrumentOldBytecode.groovy | 9 +++++++++ .../TooManyInvocationsErrorListenerTest.groovy | 8 ++++++++ .../src/test/groovy/TraceCorrelationTest.groovy | 10 ++++++++++ .../context/FieldInjectionForkedTest.groovy | 10 ++++++++++ .../excludefilter/ExcludeFilterForkedTest.groovy | 8 ++++++++ .../locator/ClassInjectingForkedTest.groovy | 3 +++ ...ssInjectingLoadClassDisabledForkedTest.groovy | 3 +++ .../src/test/groovy/server/HttpProxyTest.groovy | 8 ++++++++ .../src/test/groovy/server/HttpServerTest.groovy | 9 +++++++++ .../groovy/synthetic/SyntheticForkedTest.groovy | 10 ++++++++++ .../src/test/groovy/utils/PortUtilsTest.groovy | 9 +++++++++ .../src/test/groovy/utils/ThreadUtilsTest.groovy | 8 ++++++++ metadata/supported-configurations.json | 16 ++++++++++++++++ .../provider/OtelEnvironmentConfigSource.java | 9 ++++++--- 16 files changed, 128 insertions(+), 3 deletions(-) diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/AgentTestRunnerTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/AgentTestRunnerTest.groovy index c21a1e0b7f1..4dcdb0dd9d7 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/AgentTestRunnerTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/AgentTestRunnerTest.groovy @@ -1,5 +1,6 @@ import com.google.common.reflect.ClassPath import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.agent.test.BootstrapClasspathSetupListener import datadog.trace.api.GlobalTracer import datadog.trace.api.Platform @@ -26,6 +27,8 @@ class AgentTestRunnerTest extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) injectSysConfig(TRACE_CLASSES_EXCLUDE, "config.exclude.packagename.*, config.exclude.SomeClass,config.exclude.SomeClass\$NestedClass") } diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/ConfigResetTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/ConfigResetTest.groovy index d0649db5008..6f4030d954d 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/ConfigResetTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/ConfigResetTest.groovy @@ -1,10 +1,18 @@ import datadog.environment.EnvironmentVariables import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.api.Config import spock.lang.Shared class ConfigResetTest extends InstrumentationSpecification { + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + @Shared def sharedInstance = checkStaticAssertions() diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/InstrumentOldBytecode.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/InstrumentOldBytecode.groovy index cc3f1e1f83d..daca6092110 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/InstrumentOldBytecode.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/InstrumentOldBytecode.groovy @@ -1,7 +1,16 @@ import com.ibm.as400.resource.ResourceLevel import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper class InstrumentOldBytecode extends InstrumentationSpecification { + + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def "can instrument old bytecode"() { expect: new ResourceLevel().toString() == "instrumented" diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/TooManyInvocationsErrorListenerTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/TooManyInvocationsErrorListenerTest.groovy index 03d0687e3a7..69e5b47b1b1 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/TooManyInvocationsErrorListenerTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/TooManyInvocationsErrorListenerTest.groovy @@ -1,10 +1,18 @@ import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.agent.test.TestClassShadowingExtension import org.spockframework.mock.* import org.spockframework.mock.runtime.MockInvocation class TooManyInvocationsErrorListenerTest extends InstrumentationSpecification { + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + @SuppressWarnings('GroovyAccessibility') void 'test that listener modifies failure'() { setup: diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/TraceCorrelationTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/TraceCorrelationTest.groovy index ba0d4f6efde..91aa98755c3 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/TraceCorrelationTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/TraceCorrelationTest.groovy @@ -1,4 +1,5 @@ import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.api.CorrelationIdentifier import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_128_BIT_TRACEID_LOGGING_ENABLED @@ -6,6 +7,13 @@ import static datadog.trace.api.config.TracerConfig.TRACE_128_BIT_TRACEID_GENERA class TraceCorrelationTest extends InstrumentationSpecification { + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def "access trace correlation only under trace"() { when: def span = TEST_TRACER.startSpan("test", "myspan") @@ -28,6 +36,8 @@ class Trace128bitCorrelationTest extends TraceCorrelationTest { @Override void configurePreAgent() { super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) injectSysConfig(TRACE_128_BIT_TRACEID_GENERATION_ENABLED, "true") injectSysConfig(TRACE_128_BIT_TRACEID_LOGGING_ENABLED, "true") } diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/context/FieldInjectionForkedTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/context/FieldInjectionForkedTest.groovy index 6736c3cc503..25dfc0fe52f 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/context/FieldInjectionForkedTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/context/FieldInjectionForkedTest.groovy @@ -2,6 +2,7 @@ package context import datadog.trace.agent.test.AbortTransformationException import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.agent.test.utils.ClasspathUtils import datadog.trace.api.InstrumenterConfig import datadog.trace.test.util.GCUtils @@ -32,6 +33,13 @@ import static context.FieldInjectionTestInstrumentation.ValidSerializableKeyClas class FieldInjectionForkedTest extends InstrumentationSpecification { + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + @Override void onDiscovery(String typeName, ClassLoader classLoader, JavaModule module, boolean loaded) { if (typeName?.endsWith("UntransformableKeyClass")) { @@ -219,6 +227,8 @@ class FieldInjectionForkedTest extends InstrumentationSpecification { class FieldInjectionDisabledForkedTest extends InstrumentationSpecification { void configurePreAgent() { super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) injectSysConfig("dd.trace.runtime.context.field.injection", "false") } diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/excludefilter/ExcludeFilterForkedTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/excludefilter/ExcludeFilterForkedTest.groovy index 25083625484..d536739c68a 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/excludefilter/ExcludeFilterForkedTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/excludefilter/ExcludeFilterForkedTest.groovy @@ -1,6 +1,7 @@ package excludefilter import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.bootstrap.FieldBackedContextStores import datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter @@ -18,6 +19,13 @@ import static excludefilter.ExcludeFilterTestInstrumentation.RunnableExcludedExe class ExcludeFilterForkedTest extends InstrumentationSpecification { + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def "test ExcludeFilter #runnable.class.name"() { expect: ExcludeFilter.exclude(RUNNABLE, runnable) == excluded diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingForkedTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingForkedTest.groovy index a456f873cf6..6df0d5eb259 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingForkedTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingForkedTest.groovy @@ -1,6 +1,7 @@ package locator import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import net.bytebuddy.agent.builder.AgentBuilder import net.bytebuddy.description.type.TypeDescription import net.bytebuddy.dynamic.DynamicType @@ -16,6 +17,8 @@ class ClassInjectingForkedTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) // Since this method is not at all configurePreAgent, but more like // configurePreAgentAndOhByTheWayBeforeEveryTest we need to not install diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingLoadClassDisabledForkedTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingLoadClassDisabledForkedTest.groovy index a9f36303a92..50598422da7 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingLoadClassDisabledForkedTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingLoadClassDisabledForkedTest.groovy @@ -1,6 +1,7 @@ package locator import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import net.bytebuddy.agent.builder.AgentBuilder import net.bytebuddy.description.type.TypeDescription import net.bytebuddy.dynamic.DynamicType @@ -19,6 +20,8 @@ class ClassInjectingLoadClassDisabledForkedTest extends InstrumentationSpecifica @Override protected void configurePreAgent() { super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) injectSysConfig("dd.resolver.use.loadclass", "false") diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpProxyTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpProxyTest.groovy index fb5d04791d2..3f7a5cc41cd 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpProxyTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpProxyTest.groovy @@ -1,6 +1,7 @@ package server import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.agent.test.server.http.HttpProxy import datadog.trace.agent.test.utils.OkHttpUtils import okhttp3.MediaType @@ -21,6 +22,13 @@ import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer }) class HttpProxyTest extends InstrumentationSpecification { + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + @AutoCleanup @Shared def proxy = new HttpProxy() diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpServerTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpServerTest.groovy index 84510eeab1d..16da158c2c2 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpServerTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpServerTest.groovy @@ -6,6 +6,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import datadog.communication.util.IOUtils import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.agent.test.utils.OkHttpUtils import okhttp3.MultipartBody import okhttp3.Request @@ -14,6 +15,14 @@ import spock.lang.Shared /* Don't actually need AgentTestRunner, but it messes up the classloader for AgentTestRunnerTest if this runs first. */ class HttpServerTest extends InstrumentationSpecification { + + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + @Shared def client = OkHttpUtils.client() diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/synthetic/SyntheticForkedTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/synthetic/SyntheticForkedTest.groovy index ffeb41b6196..0b9f545916e 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/synthetic/SyntheticForkedTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/synthetic/SyntheticForkedTest.groovy @@ -1,9 +1,17 @@ package synthetic import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper abstract class SyntheticForkedTestBase extends InstrumentationSpecification { + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def "test Synthetic methods"() { expect: SyntheticTestInstrumentation.Compute.result(i) == computed(i) @@ -25,6 +33,8 @@ class SyntheticForkedTest extends SyntheticForkedTestBase { @Override protected void configurePreAgent() { super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) System.setProperty("synthetic.test.enabled", "true") } diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/utils/PortUtilsTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/utils/PortUtilsTest.groovy index 511e6929557..88be11bf2df 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/utils/PortUtilsTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/utils/PortUtilsTest.groovy @@ -1,11 +1,20 @@ package utils import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.agent.test.utils.PortUtils import java.util.concurrent.TimeUnit class PortUtilsTest extends InstrumentationSpecification { + + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + def "expect waitForPortToOpen succeed"() { given: int port = PortUtils.randomOpenPort() diff --git a/dd-java-agent/instrumentation-testing/src/test/groovy/utils/ThreadUtilsTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/utils/ThreadUtilsTest.groovy index dbd0f8041ea..f6736550716 100644 --- a/dd-java-agent/instrumentation-testing/src/test/groovy/utils/ThreadUtilsTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/utils/ThreadUtilsTest.groovy @@ -1,6 +1,7 @@ package utils import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.config.inversion.ConfigHelper import datadog.trace.test.util.ThreadUtils import org.spockframework.runtime.ConditionNotSatisfiedError import spock.lang.FailsWith @@ -11,6 +12,13 @@ import java.util.concurrent.atomic.AtomicInteger class ThreadUtilsTest extends InstrumentationSpecification { + @Override + protected void configurePreAgent() { + super.configurePreAgent() + // Opt out of strict config validation - test module loads test instrumentations with fake names + ConfigHelper.get().setConfigInversionStrict(ConfigHelper.StrictnessPolicy.TEST) + } + @Shared def counter = new AtomicInteger() diff --git a/metadata/supported-configurations.json b/metadata/supported-configurations.json index e63b1dc6a33..346d7e92234 100644 --- a/metadata/supported-configurations.json +++ b/metadata/supported-configurations.json @@ -6705,6 +6705,22 @@ "aliases": ["DD_INTEGRATION_JAVA_HTTP_CLIENT_ENABLED", "DD_TRACE_INTEGRATION_JAVA_HTTP_CLIENT_ENABLED"] } ], + "DD_TRACE_FFM_NATIVE_TRACING_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "true", + "aliases": ["DD_TRACE_INTEGRATION_FFM_NATIVE_TRACING_ENABLED", "DD_INTEGRATION_FFM_NATIVE_TRACING_ENABLED"] + } + ], + "DD_TRACE_JAVA_LANG_22_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "true", + "aliases": ["DD_TRACE_INTEGRATION_JAVA_LANG_22_ENABLED", "DD_INTEGRATION_JAVA_LANG_22_ENABLED"] + } + ], "DD_TRACE_JAVA_LANG_APPSEC_ENABLED": [ { "version": "A", diff --git a/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/OtelEnvironmentConfigSource.java b/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/OtelEnvironmentConfigSource.java index bb90dddca45..da372851c80 100644 --- a/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/OtelEnvironmentConfigSource.java +++ b/utils/config-utils/src/main/java/datadog/trace/bootstrap/config/provider/OtelEnvironmentConfigSource.java @@ -316,9 +316,12 @@ private String getDatadogProperty(String sysProp) { *

Checks system properties and environment variables. */ private static String getProperty(String sysProp) { - String value = SystemProperties.get(sysProp); - if (null == value) { - value = ConfigHelper.env(toEnvVar(sysProp)); + // Always validate through ConfigHelper so STRICT_TEST mode can detect unsupported configs + String value = ConfigHelper.env(toEnvVar(sysProp)); + // System property takes precedence over environment variable + String sysPropValue = SystemProperties.get(sysProp); + if (sysPropValue != null) { + value = sysPropValue; } return value; } From b61815429e69c3e91b4835c285edcb52206c9116 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Thu, 2 Apr 2026 14:51:35 -0400 Subject: [PATCH 12/15] adding final configurations --- metadata/supported-configurations.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/metadata/supported-configurations.json b/metadata/supported-configurations.json index 346d7e92234..16f349da3d6 100644 --- a/metadata/supported-configurations.json +++ b/metadata/supported-configurations.json @@ -6705,6 +6705,22 @@ "aliases": ["DD_INTEGRATION_JAVA_HTTP_CLIENT_ENABLED", "DD_TRACE_INTEGRATION_JAVA_HTTP_CLIENT_ENABLED"] } ], + "DD_TRACE_TRACE_FFM_ANALYTICS_ENABLED": [ + { + "version": "A", + "type": "boolean", + "default": "false", + "aliases": ["DD_TRACE_FFM_ANALYTICS_ENABLED"] + } + ], + "DD_TRACE_TRACE_FFM_ANALYTICS_SAMPLE_RATE": [ + { + "version": "A", + "type": "decimal", + "default": "1.0", + "aliases": ["DD_TRACE_FFM_ANALYTICS_SAMPLE_RATE"] + } + ], "DD_TRACE_FFM_NATIVE_TRACING_ENABLED": [ { "version": "A", From 9d52790aaa401d7f557bc53a3294e3668efb6d62 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Thu, 2 Apr 2026 17:08:13 -0400 Subject: [PATCH 13/15] revert supported-configurations --- metadata/supported-configurations.json | 195 +------------------------ 1 file changed, 2 insertions(+), 193 deletions(-) diff --git a/metadata/supported-configurations.json b/metadata/supported-configurations.json index 6b1e04d7d71..3c38c9650d1 100644 --- a/metadata/supported-configurations.json +++ b/metadata/supported-configurations.json @@ -1,3 +1,4 @@ + { "version": "2", "supportedConfigurations": { @@ -4793,30 +4794,6 @@ "aliases": [] } ], - "DD_TRACE_CICS_ANALYTICS_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "false", - "aliases": ["DD_CICS_ANALYTICS_ENABLED"] - } - ], - "DD_TRACE_CICS_ANALYTICS_SAMPLE_RATE": [ - { - "version": "A", - "type": "decimal", - "default": "1.0", - "aliases": ["DD_CICS_ANALYTICS_SAMPLE_RATE"] - } - ], - "DD_TRACE_CICS_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "true", - "aliases": ["DD_TRACE_INTEGRATION_CICS_ENABLED", "DD_INTEGRATION_CICS_ENABLED"] - } - ], "DD_TRACE_CI_VISIBILITY_ENABLED": [ { "version": "A", @@ -5953,14 +5930,6 @@ "aliases": [] } ], - "DD_TRACE_INTEGRATION_GRPC_SERVER_MATCHING_SHORTCUT_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "true", - "aliases": ["DD_INTEGRATION_GRPC_SERVER_MATCHING_SHORTCUT_ENABLED"] - } - ], "DD_TRACE_GSON_ENABLED": [ { "version": "A", @@ -6393,14 +6362,6 @@ "aliases": ["DD_INTEGRATION_HIBERNATE_MATCHING_SHORTCUT_ENABLED"] } ], - "DD_TRACE_INTEGRATION_HIBERNATE_CORE_MATCHING_SHORTCUT_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "true", - "aliases": ["DD_INTEGRATION_HIBERNATE_CORE_MATCHING_SHORTCUT_ENABLED"] - } - ], "DD_TRACE_INTEGRATION_HTTPASYNCCLIENT5_MATCHING_SHORTCUT_ENABLED": [ { "version": "A", @@ -6449,14 +6410,6 @@ "aliases": ["DD_INTEGRATION_HTTPASYNCCLIENT_MATCHING_SHORTCUT_ENABLED"] } ], - "DD_TRACE_INTEGRATION_APACHE_HTTPASYNCCLIENT_MATCHING_SHORTCUT_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "false", - "aliases": ["DD_INTEGRATION_APACHE_HTTPASYNCCLIENT_MATCHING_SHORTCUT_ENABLED"] - } - ], "DD_TRACE_INTERNAL_EXIT_ON_FAILURE": [ { "version": "A", @@ -6713,38 +6666,6 @@ "aliases": ["DD_INTEGRATION_JAVA_HTTP_CLIENT_ENABLED", "DD_TRACE_INTEGRATION_JAVA_HTTP_CLIENT_ENABLED"] } ], - "DD_TRACE_TRACE_FFM_ANALYTICS_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "false", - "aliases": ["DD_TRACE_FFM_ANALYTICS_ENABLED"] - } - ], - "DD_TRACE_TRACE_FFM_ANALYTICS_SAMPLE_RATE": [ - { - "version": "A", - "type": "decimal", - "default": "1.0", - "aliases": ["DD_TRACE_FFM_ANALYTICS_SAMPLE_RATE"] - } - ], - "DD_TRACE_FFM_NATIVE_TRACING_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "true", - "aliases": ["DD_TRACE_INTEGRATION_FFM_NATIVE_TRACING_ENABLED", "DD_INTEGRATION_FFM_NATIVE_TRACING_ENABLED"] - } - ], - "DD_TRACE_JAVA_LANG_22_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "true", - "aliases": ["DD_TRACE_INTEGRATION_JAVA_LANG_22_ENABLED", "DD_INTEGRATION_JAVA_LANG_22_ENABLED"] - } - ], "DD_TRACE_JAVA_LANG_APPSEC_ENABLED": [ { "version": "A", @@ -7841,22 +7762,6 @@ "aliases": ["DD_INTEGRATION_MONGO_3_4_ENABLED", "DD_TRACE_INTEGRATION_MONGO_3_4_ENABLED"] } ], - "DD_TRACE_MONGO_3_6_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "true", - "aliases": ["DD_INTEGRATION_MONGO_3_6_ENABLED", "DD_TRACE_INTEGRATION_MONGO_3_6_ENABLED"] - } - ], - "DD_TRACE_MONGO_3_8_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "true", - "aliases": ["DD_INTEGRATION_MONGO_3_8_ENABLED", "DD_TRACE_INTEGRATION_MONGO_3_8_ENABLED"] - } - ], "DD_TRACE_MONGO_ANALYTICS_ENABLED": [ { "version": "B", @@ -8177,30 +8082,6 @@ "aliases": ["DD_TRACE_INTEGRATION_OKHTTP_ENABLED", "DD_INTEGRATION_OKHTTP_ENABLED"] } ], - "DD_TRACE_OPENAI_JAVA_ANALYTICS_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "false", - "aliases": ["DD_OPENAI_JAVA_ANALYTICS_ENABLED"] - } - ], - "DD_TRACE_OPENAI_JAVA_ANALYTICS_SAMPLE_RATE": [ - { - "version": "A", - "type": "decimal", - "default": "1.0", - "aliases": ["DD_OPENAI_JAVA_ANALYTICS_SAMPLE_RATE"] - } - ], - "DD_TRACE_OPENAI_JAVA_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "true", - "aliases": ["DD_TRACE_INTEGRATION_OPENAI_JAVA_ENABLED", "DD_INTEGRATION_OPENAI_JAVA_ENABLED"] - } - ], "DD_TRACE_OPENSEARCH_ANALYTICS_ENABLED": [ { "version": "A", @@ -8241,14 +8122,6 @@ "aliases": ["DD_INTEGRATION_OPENSEARCH_TRANSPORT_ENABLED", "DD_TRACE_INTEGRATION_OPENSEARCH_TRANSPORT_ENABLED"] } ], - "DD_TRACE_OPENTELEMETRY_1_47_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "true", - "aliases": ["DD_TRACE_INTEGRATION_OPENTELEMETRY_1_47_ENABLED", "DD_INTEGRATION_OPENTELEMETRY_1_47_ENABLED"] - } - ], "DD_TRACE_OPENTELEMETRY_1_ENABLED": [ { "version": "A", @@ -8329,22 +8202,6 @@ "aliases": ["DD_INTEGRATION_OPENTELEMETRY_EXPERIMENTAL_ENABLED", "DD_TRACE_INTEGRATION_OPENTELEMETRY_EXPERIMENTAL_ENABLED"] } ], - "DD_TRACE_OPENTELEMETRY_METRICS_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "true", - "aliases": ["DD_INTEGRATION_OPENTELEMETRY_METRICS_ENABLED", "DD_TRACE_INTEGRATION_OPENTELEMETRY_METRICS_ENABLED"] - } - ], - "DD_TRACE_INTEGRATION_OPENTELEMETRY_METRICS_MATCHING_SHORTCUT_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "true", - "aliases": ["DD_INTEGRATION_OPENTELEMETRY_METRICS_MATCHING_SHORTCUT_ENABLED"] - } - ], "DD_TRACE_OPENTRACING_ENABLED": [ { "version": "A", @@ -8574,7 +8431,7 @@ "version": "A", "type": "boolean", "default": "false", - "aliases": ["DD_TRACE_INTEGRATION_PEKKO_SCHEDULER_ENABLED", "DD_INTEGRATION_PEKKO_SCHEDULER_ENABLED"] + "aliases": [] } ], "DD_TRACE_PERF_METRICS_ENABLED": [ @@ -9001,14 +8858,6 @@ "aliases": ["DD_INTEGRATION_REJECTED_EXECUTION_HANDLER_ENABLED", "DD_TRACE_INTEGRATION_REJECTED_EXECUTION_HANDLER_ENABLED"] } ], - "DD_TRACE_INTEGRATION_REJECTED_EXECUTION_HANDLER_MATCHING_SHORTCUT_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "true", - "aliases": ["DD_INTEGRATION_REJECTED_EXECUTION_HANDLER_MATCHING_SHORTCUT_ENABLED"] - } - ], "DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED": [ { "version": "A", @@ -9049,22 +8898,6 @@ "aliases": [] } ], - "DD_TRACE_RESILIENCE4J_ANALYTICS_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "false", - "aliases": ["DD_RESILIENCE4J_ANALYTICS_ENABLED"] - } - ], - "DD_TRACE_RESILIENCE4J_ANALYTICS_SAMPLE_RATE": [ - { - "version": "A", - "type": "decimal", - "default": "1.0", - "aliases": ["DD_RESILIENCE4J_ANALYTICS_SAMPLE_RATE"] - } - ], "DD_TRACE_RESILIENCE4J_ENABLED": [ { "version": "A", @@ -9073,22 +8906,6 @@ "aliases": ["DD_TRACE_INTEGRATION_RESILIENCE4J_ENABLED", "DD_INTEGRATION_RESILIENCE4J_ENABLED"] } ], - "DD_TRACE_RESILIENCE4J_RETRY_ANALYTICS_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "false", - "aliases": ["DD_RESILIENCE4J_RETRY_ANALYTICS_ENABLED"] - } - ], - "DD_TRACE_RESILIENCE4J_RETRY_ANALYTICS_SAMPLE_RATE": [ - { - "version": "A", - "type": "decimal", - "default": "1.0", - "aliases": ["DD_RESILIENCE4J_RETRY_ANALYTICS_SAMPLE_RATE"] - } - ], "DD_TRACE_RESILIENCE4J_REACTOR_ENABLED": [ { "version": "A", @@ -9881,14 +9698,6 @@ "aliases": ["DD_TRACE_INTEGRATION_SPARK_ENABLED", "DD_INTEGRATION_SPARK_ENABLED"] } ], - "DD_TRACE_SPARK_LAUNCHER_ENABLED": [ - { - "version": "A", - "type": "boolean", - "default": "false", - "aliases": ["DD_TRACE_INTEGRATION_SPARK_LAUNCHER_ENABLED", "DD_INTEGRATION_SPARK_LAUNCHER_ENABLED"] - } - ], "DD_TRACE_SPARK_EXECUTOR_ANALYTICS_ENABLED": [ { "version": "A", From b0147c947787c75ab49cdc4da4de25fd600924fb Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Mon, 6 Apr 2026 12:59:09 -0400 Subject: [PATCH 14/15] cleanup --- metadata/supported-configurations.json | 1 - 1 file changed, 1 deletion(-) diff --git a/metadata/supported-configurations.json b/metadata/supported-configurations.json index 3c38c9650d1..fac0f0dff2f 100644 --- a/metadata/supported-configurations.json +++ b/metadata/supported-configurations.json @@ -1,4 +1,3 @@ - { "version": "2", "supportedConfigurations": { From 82a89e01778d79ae9e4deef5c4757ff221cfc5d9 Mon Sep 17 00:00:00 2001 From: Matthew Li Date: Mon, 6 Apr 2026 14:19:10 -0400 Subject: [PATCH 15/15] removing additional draining from InstrumentationSpecification --- .../trace/agent/test/InstrumentationSpecification.groovy | 8 -------- 1 file changed, 8 deletions(-) diff --git a/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/InstrumentationSpecification.groovy b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/InstrumentationSpecification.groovy index 0fbfa70924e..4561236e6ff 100644 --- a/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/InstrumentationSpecification.groovy +++ b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/InstrumentationSpecification.groovy @@ -10,7 +10,6 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.CODE_ORIGIN_FO import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious import static datadog.trace.util.AgentThreadFactory.AgentThread.TASK_SCHEDULER -import datadog.trace.config.inversion.ConfigHelper import ch.qos.logback.classic.Level import ch.qos.logback.classic.util.ContextInitializer @@ -428,13 +427,6 @@ abstract class InstrumentationSpecification extends DDSpecification implements A .hasNext(): "No instrumentation found" activeTransformer = AgentInstaller.installBytebuddyAgent( INSTRUMENTATION, true, AgentInstaller.getEnabledSystems(), this) - - // Assert no unsupported configs were encountered during agent install. - // This catches configs that were swallowed by InstrumenterIndex.buildModule()/loadModules(). - def unsupported = ConfigHelper.get().drainUnsupportedConfigs() - assert unsupported.isEmpty(): "Unsupported configurations found during agent install. " + - "Add these to metadata/supported-configurations.json or opt out with StrictnessPolicy.TEST:\n " + - unsupported.join("\n ") } protected String idGenerationStrategyName() {