diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e9f488551d2..9190a8b8c09 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -45,6 +45,7 @@ # @DataDog/asm-java (AppSec/IAST) /buildSrc/call-site-instrumentation-plugin/ @DataDog/asm-java /dd-java-agent/agent-iast/ @DataDog/asm-java +/dd-java-agent/appsec/appsec-test-fixtures/ @DataDog/asm-java /dd-java-agent/instrumentation/*iast* @DataDog/asm-java /dd-java-agent/instrumentation/*appsec* @DataDog/asm-java /dd-java-agent/instrumentation/json/ @DataDog/asm-java diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Constants.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Constants.java index 8f4ba377161..3bb71f4a89c 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Constants.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Constants.java @@ -11,7 +11,7 @@ public final class Constants { * packages which will be loaded on the bootstrap classloader * *

Updates should be mirrored in - * datadog.trace.agent.test.SpockRunner#BOOTSTRAP_PACKAGE_PREFIXES_COPY + * datadog.trace.agent.test.BootstrapClasspathSetup#BOOTSTRAP_PACKAGE_PREFIXES_COPY */ public static final String[] BOOTSTRAP_PACKAGE_PREFIXES = { "datadog.slf4j", diff --git a/dd-java-agent/agent-ci-visibility/build.gradle b/dd-java-agent/agent-ci-visibility/build.gradle index 1f0b8ddd0a4..6974b37459f 100644 --- a/dd-java-agent/agent-ci-visibility/build.gradle +++ b/dd-java-agent/agent-ci-visibility/build.gradle @@ -27,7 +27,6 @@ buildscript { plugins { id 'com.gradleup.shadow' - id 'java-test-fixtures' } apply from: "$rootDir/gradle/java.gradle" @@ -42,29 +41,23 @@ dependencies { api libs.slf4j implementation libs.bundles.asm - implementation group: 'org.jacoco', name: 'org.jacoco.core', version: '0.8.12' - implementation group: 'org.jacoco', name: 'org.jacoco.report', version: '0.8.12' + implementation group: 'org.jacoco', name: 'org.jacoco.core', version: '0.8.13' + implementation group: 'org.jacoco', name: 'org.jacoco.report', version: '0.8.13' implementation project(':communication') implementation project(':components:json') implementation project(':internal-api') implementation project(':internal-api:internal-api-9') - testImplementation project(":utils:test-utils") + testImplementation project(':dd-java-agent:testing') testImplementation("com.google.jimfs:jimfs:1.1") // an in-memory file system for testing code that works with files testImplementation libs.scala testImplementation libs.kotlin - testFixturesApi project(':dd-java-agent:testing') - testFixturesApi project(':utils:test-utils') - - testFixturesApi group: 'org.skyscreamer', name: 'jsonassert', version: '1.5.1' - testFixturesApi group: 'org.freemarker', name: 'freemarker', version: '2.3.31' - testFixturesApi group: 'com.jayway.jsonpath', name: 'json-path', version: '2.8.0' - testFixturesApi group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.16.0' - testFixturesApi group: 'org.msgpack', name: 'jackson-dataformat-msgpack', version: '0.9.6' - testFixturesApi group: 'org.xmlunit', name: 'xmlunit-core', version: '2.10.3' + testImplementation group: 'org.skyscreamer', name: 'jsonassert', version: '1.5.1' + testImplementation group: 'org.freemarker', name: 'freemarker', version: '2.3.31' + testImplementation group: 'org.msgpack', name: 'jackson-dataformat-msgpack', version: '0.9.6' testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.9.2") // Required to update dependency lock files } diff --git a/dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/README.MD b/dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/README.MD new file mode 100644 index 00000000000..9cf13b33cbf --- /dev/null +++ b/dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/README.MD @@ -0,0 +1,10 @@ +# civisibility-instrumentation-test-fixtures + +This project contains common logic used in CI Visibility instrumentation tests. + +The reason it is defined as a separate project rather than using testFixtures plugin in the parent module is because it +transitively pulls in :dd-java-agent:instrumentation-testing. +The latter contains datadog.trace.agent.test.BootstrapClasspathSetupListener that, when present on the classpath, +patches bootstrap CL adding some tracer classes to it. +This is needed for the instrumentation tests, but may break regular unit tests. +If this project used testFixtures, the listener would end up on the classpath of the parent project's unit tests, breaking them. diff --git a/dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/build.gradle b/dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/build.gradle new file mode 100644 index 00000000000..dec74075fae --- /dev/null +++ b/dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/build.gradle @@ -0,0 +1,8 @@ +apply from: "$rootDir/gradle/java.gradle" +apply from: "$rootDir/gradle/version.gradle" + +dependencies { + api project(':dd-java-agent:instrumentation-testing') + api project(':dd-java-agent:agent-ci-visibility:civisibility-test-fixtures') +} + diff --git a/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityInstrumentationTest.groovy b/dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilityInstrumentationTest.groovy similarity index 98% rename from dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityInstrumentationTest.groovy rename to dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilityInstrumentationTest.groovy index f19d88656cf..4697abe5549 100644 --- a/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityInstrumentationTest.groovy +++ b/dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilityInstrumentationTest.groovy @@ -3,7 +3,7 @@ package datadog.trace.civisibility import com.fasterxml.jackson.databind.ObjectMapper import datadog.communication.serialization.GrowableBuffer import datadog.communication.serialization.msgpack.MsgPackWriter -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.ListWriterAssert import datadog.trace.api.Config import datadog.trace.api.DDSpanTypes @@ -50,6 +50,7 @@ import datadog.trace.civisibility.writer.ddintake.CiTestCycleMapperV1 import datadog.trace.common.writer.ListWriter import datadog.trace.common.writer.RemoteMapper import datadog.trace.core.DDSpan +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings import org.msgpack.jackson.dataformat.MessagePackFactory import java.lang.reflect.Method @@ -61,7 +62,7 @@ import java.util.concurrent.TimeUnit import java.util.function.Predicate import java.util.stream.Collectors -abstract class CiVisibilityInstrumentationTest extends AgentTestRunner { +abstract class CiVisibilityInstrumentationTest extends InstrumentationSpecification { public static final int SLOW_TEST_THRESHOLD_MILLIS = 1000 public static final int VERY_SLOW_TEST_THRESHOLD_MILLIS = 2000 @@ -290,6 +291,7 @@ abstract class CiVisibilityInstrumentationTest extends AgentTestRunner { return true } + @SuppressFBWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS") boolean waitForSpan(Predicate predicate, long timeoutMillis) { long deadline = System.currentTimeMillis() + timeoutMillis synchronized (lock) { diff --git a/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/build.gradle b/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/build.gradle new file mode 100644 index 00000000000..e8068ab0757 --- /dev/null +++ b/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/build.gradle @@ -0,0 +1,15 @@ +apply from: "$rootDir/gradle/java.gradle" +apply from: "$rootDir/gradle/version.gradle" + +dependencies { + api project(':dd-java-agent:agent-ci-visibility') + api project(':dd-java-agent:testing') + + api group: 'org.skyscreamer', name: 'jsonassert', version: '1.5.1' + api group: 'org.freemarker', name: 'freemarker', version: '2.3.31' + api group: 'com.jayway.jsonpath', name: 'json-path', version: '2.8.0' + api group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.16.0' + api group: 'org.msgpack', name: 'jackson-dataformat-msgpack', version: '0.9.6' + api group: 'org.xmlunit', name: 'xmlunit-core', version: '2.10.3' +} + diff --git a/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy b/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy similarity index 100% rename from dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy rename to dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy diff --git a/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy b/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy similarity index 99% rename from dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy rename to dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy index 86ea005d31e..3709018d587 100644 --- a/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy +++ b/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy @@ -171,7 +171,7 @@ abstract class CiVisibilityTestUtils { println "Expected JSON: $expectedJson" println "Actual JSON: $actualJson" } - throw new AssertionFailedError("Coverage report events mismatch", expectedJson, actualJson, e) + throw new AssertionFailedError("Expected and actual JSON mismatch", expectedJson, actualJson, e) } } diff --git a/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/config/ConfigurationApiImplTest.groovy b/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/config/ConfigurationApiImplTest.groovy index de0b9f775b2..d853ec8e275 100644 --- a/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/config/ConfigurationApiImplTest.groovy +++ b/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/config/ConfigurationApiImplTest.groovy @@ -10,8 +10,12 @@ import datadog.trace.api.civisibility.config.TestFQN import datadog.trace.api.civisibility.config.TestIdentifier import datadog.trace.api.civisibility.config.TestMetadata import datadog.trace.api.civisibility.telemetry.CiVisibilityMetricCollector -import datadog.trace.civisibility.CiVisibilityTestUtils import datadog.trace.api.intake.Intake +import freemarker.core.Environment +import freemarker.core.InvalidReferenceException +import freemarker.template.Template +import freemarker.template.TemplateException +import freemarker.template.TemplateExceptionHandler import okhttp3.HttpUrl import okhttp3.OkHttpClient import org.apache.commons.io.IOUtils @@ -233,7 +237,7 @@ class ConfigurationApiImplTest extends Specification { httpServer { handlers { prefix(path) { - def expectedRequestBody = CiVisibilityTestUtils.getFreemarkerTemplate(requestTemplate, requestData) + def expectedRequestBody = getFreemarkerTemplate(requestTemplate, requestData) def response = response try { @@ -242,7 +246,7 @@ class ConfigurationApiImplTest extends Specification { response.status(400).send(error.getMessage().bytes) } - def responseBody = CiVisibilityTestUtils.getFreemarkerTemplate(responseTemplate, responseData).bytes + def responseBody = getFreemarkerTemplate(responseTemplate, responseData).bytes def header = request.getHeader("Accept-Encoding") def gzipSupported = header != null && header.contains("gzip") if (gzipSupported) { @@ -315,4 +319,37 @@ class ConfigurationApiImplTest extends Specification { } return bitSet } + + static final TemplateExceptionHandler SUPPRESS_EXCEPTION_HANDLER = new TemplateExceptionHandler() { + @Override + void handleTemplateException(TemplateException e, Environment environment, Writer writer) throws TemplateException { + if (e instanceof InvalidReferenceException) { + writer.write('""') + } else { + throw e + } + } + } + + static final freemarker.template.Configuration FREEMARKER = new freemarker.template.Configuration(freemarker.template.Configuration.VERSION_2_3_30) { { + setClassLoaderForTemplateLoading(ConfigurationApiImplTest.classLoader, "") + setDefaultEncoding("UTF-8") + setTemplateExceptionHandler(SUPPRESS_EXCEPTION_HANDLER) + setLogTemplateExceptions(false) + setWrapUncheckedExceptions(true) + setFallbackOnNullLoopVariable(false) + setNumberFormat("0.######") + } + } + + static String getFreemarkerTemplate(String templatePath, Map replacements, List> replacementsSource = []) { + try { + Template coveragesTemplate = FREEMARKER.getTemplate(templatePath) + StringWriter coveragesOut = new StringWriter() + coveragesTemplate.process(replacements, coveragesOut) + return coveragesOut.toString() + } catch (Exception e) { + throw new RuntimeException("Could not get Freemarker template " + templatePath + "; replacements map: " + replacements + "; replacements source: " + replacementsSource, e) + } + } } diff --git a/dd-java-agent/agent-iast/build.gradle b/dd-java-agent/agent-iast/build.gradle index 7f2640deec2..9302a992948 100644 --- a/dd-java-agent/agent-iast/build.gradle +++ b/dd-java-agent/agent-iast/build.gradle @@ -3,7 +3,6 @@ import net.ltgt.gradle.errorprone.CheckSeverity plugins { id 'com.gradleup.shadow' id 'me.champeau.jmh' - id 'java-test-fixtures' id 'com.google.protobuf' version '0.8.18' id 'net.ltgt.errorprone' version '3.1.0' } @@ -52,8 +51,8 @@ dependencies { implementation libs.moshi implementation libs.bundles.asm - testFixturesApi project(':dd-java-agent:testing') - testFixturesApi project(':utils:test-utils') + testImplementation project(':utils:test-utils') + testImplementation project(':dd-java-agent:agent-bootstrap') testImplementation libs.bytebuddy testImplementation('org.skyscreamer:jsonassert:1.5.1') testImplementation libs.groovy.yaml diff --git a/dd-java-agent/agent-iast/iast-test-fixtures/README.MD b/dd-java-agent/agent-iast/iast-test-fixtures/README.MD new file mode 100644 index 00000000000..51a10b601cd --- /dev/null +++ b/dd-java-agent/agent-iast/iast-test-fixtures/README.MD @@ -0,0 +1,10 @@ +# iast-test-fixtures + +This project contains common logic used in IAST instrumentation tests. + +The reason it is defined as a separate project rather than using testFixtures plugin in the parent module is because it +transitively pulls in :dd-java-agent:instrumentation-testing. +The latter contains datadog.trace.agent.test.BootstrapClasspathSetupListener that, when present on the classpath, +patches bootstrap CL adding some tracer classes to it. +This is needed for the instrumentation tests, but may break regular unit tests. +If this project used testFixtures, the listener would end up on the classpath of the parent project's unit tests, breaking them. diff --git a/dd-java-agent/agent-iast/iast-test-fixtures/build.gradle b/dd-java-agent/agent-iast/iast-test-fixtures/build.gradle new file mode 100644 index 00000000000..e822e95efcc --- /dev/null +++ b/dd-java-agent/agent-iast/iast-test-fixtures/build.gradle @@ -0,0 +1,7 @@ +apply from: "$rootDir/gradle/java.gradle" +apply from: "$rootDir/gradle/version.gradle" + +dependencies { + api project(':dd-java-agent:agent-iast') + api project(':dd-java-agent:instrumentation-testing') +} diff --git a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastAgentTestRunner.groovy b/dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastAgentTestRunner.groovy similarity index 91% rename from dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastAgentTestRunner.groovy rename to dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastAgentTestRunner.groovy index 0ef01944533..bff27df1fba 100644 --- a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastAgentTestRunner.groovy +++ b/dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastAgentTestRunner.groovy @@ -2,7 +2,7 @@ package com.datadog.iast.test import com.datadog.iast.model.Source import com.datadog.iast.taint.TaintedObjects -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.tooling.bytebuddy.iast.TaintableVisitor import datadog.trace.api.gateway.CallbackProvider import datadog.trace.api.gateway.Events @@ -15,7 +15,7 @@ import datadog.trace.bootstrap.instrumentation.api.TagContext import datadog.trace.core.DDSpan -class IastAgentTestRunner extends AgentTestRunner implements IastRequestContextPreparationTrait { +class IastAgentTestRunner extends InstrumentationSpecification implements IastRequestContextPreparationTrait { public static final EMPTY_SOURCE = new Source(SourceTypes.NONE, '', '') void configurePreAgent() { diff --git a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastHttpServerTest.groovy b/dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastHttpServerTest.groovy similarity index 100% rename from dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastHttpServerTest.groovy rename to dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastHttpServerTest.groovy diff --git a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastRequestContextPreparationTrait.groovy b/dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastRequestContextPreparationTrait.groovy similarity index 96% rename from dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastRequestContextPreparationTrait.groovy rename to dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastRequestContextPreparationTrait.groovy index 86fedac3cf2..63fe1efac77 100644 --- a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastRequestContextPreparationTrait.groovy +++ b/dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastRequestContextPreparationTrait.groovy @@ -14,8 +14,6 @@ import org.slf4j.LoggerFactory import java.util.function.BiFunction import java.util.function.Supplier -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.get - trait IastRequestContextPreparationTrait { static void iastSystemSetup(Closure reqEndAction = null) { @@ -43,7 +41,7 @@ trait IastRequestContextPreparationTrait { } static void iastSystemCleanup() { - get().getSubscriptionService(RequestContextSlot.IAST).reset() + AgentTracer.get().getSubscriptionService(RequestContextSlot.IAST).reset() InstrumentationBridge.clearIastModules() } diff --git a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastRequestTestRunner.groovy b/dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastRequestTestRunner.groovy similarity index 100% rename from dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastRequestTestRunner.groovy rename to dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastRequestTestRunner.groovy diff --git a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastSourcesTest.groovy b/dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastSourcesTest.groovy similarity index 100% rename from dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastSourcesTest.groovy rename to dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastSourcesTest.groovy index c9e8be7a8ff..754fe9ff634 100644 --- a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/IastSourcesTest.groovy +++ b/dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastSourcesTest.groovy @@ -1,10 +1,10 @@ package com.datadog.iast.test import datadog.trace.api.iast.SourceTypes -import okhttp3.FormBody import okhttp3.MediaType import okhttp3.Request import okhttp3.RequestBody +import okhttp3.FormBody import org.hamcrest.Matchers import spock.lang.IgnoreIf diff --git a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/NoopOverheadController.groovy b/dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/NoopOverheadController.groovy similarity index 100% rename from dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/NoopOverheadController.groovy rename to dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/NoopOverheadController.groovy diff --git a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/TaintMarkerHelpers.groovy b/dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/TaintMarkerHelpers.groovy similarity index 100% rename from dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/TaintMarkerHelpers.groovy rename to dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/TaintMarkerHelpers.groovy diff --git a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/TaintedObjectCollection.groovy b/dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/TaintedObjectCollection.groovy similarity index 94% rename from dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/TaintedObjectCollection.groovy rename to dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/TaintedObjectCollection.groovy index d7ac5b3351d..a0cbde93551 100644 --- a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/TaintedObjectCollection.groovy +++ b/dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/TaintedObjectCollection.groovy @@ -54,7 +54,7 @@ class TaintedObjectCollection { } else if (obj instanceof Pattern) { valueMatcher = Matchers.matchesPattern(obj) } else { - valueMatcher = equalTo(obj) + valueMatcher = Matchers.equalTo(obj) } } @@ -62,11 +62,11 @@ class TaintedObjectCollection { if (obj instanceof Matcher) { obj } else if (obj instanceof Pattern) { - matchesPattern(obj) + Matchers.matchesPattern(obj) } else if (obj == null) { - nullValue() + Matchers.nullValue() } else { - equalTo(obj) + Matchers.equalTo(obj) } } @@ -79,7 +79,7 @@ class TaintedObjectCollection { } void range(int start, int length, SourceMatcher source) { - ranges << new RangeMatcher(start, equalTo(length), source) + ranges << new RangeMatcher(start, Matchers.equalTo(length), source) } void range(int start, Matcher length, SourceMatcher source) { @@ -87,7 +87,7 @@ class TaintedObjectCollection { } void range(SourceMatcher source) { - ranges << new RangeMatcher(0, greaterThan(0), source) + ranges << new RangeMatcher(0, Matchers.greaterThan(0), source) } @Override diff --git a/dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/TaintedObjectsUtils.groovy b/dd-java-agent/agent-iast/src/test/groovy/com/datadog/iast/test/TaintedObjectsUtils.groovy similarity index 100% rename from dd-java-agent/agent-iast/src/testFixtures/groovy/com/datadog/iast/test/TaintedObjectsUtils.groovy rename to dd-java-agent/agent-iast/src/test/groovy/com/datadog/iast/test/TaintedObjectsUtils.groovy diff --git a/dd-java-agent/agent-llmobs/build.gradle b/dd-java-agent/agent-llmobs/build.gradle index f4bad698160..b6a5ed68b62 100644 --- a/dd-java-agent/agent-llmobs/build.gradle +++ b/dd-java-agent/agent-llmobs/build.gradle @@ -10,7 +10,6 @@ buildscript { plugins { id 'com.gradleup.shadow' - id 'java-test-fixtures' } apply from: "$rootDir/gradle/java.gradle" @@ -28,11 +27,8 @@ dependencies { implementation project(':components:json') implementation project(':internal-api') - testImplementation project(":utils:test-utils") + testImplementation project(':dd-java-agent:testing') testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.12.0' - - testFixturesApi project(':dd-java-agent:testing') - testFixturesApi project(':utils:test-utils') } shadowJar { diff --git a/dd-java-agent/appsec/appsec-test-fixtures/README.MD b/dd-java-agent/appsec/appsec-test-fixtures/README.MD new file mode 100644 index 00000000000..0822167f264 --- /dev/null +++ b/dd-java-agent/appsec/appsec-test-fixtures/README.MD @@ -0,0 +1,10 @@ +# appsec-fixtures + +This project contains common logic used in Appsec instrumentation tests. + +The reason it is defined as a separate project rather than using testFixtures plugin in the parent module is because it +transitively pulls in :dd-java-agent:instrumentation-testing. +The latter contains datadog.trace.agent.test.BootstrapClasspathSetupListener that, when present on the classpath, +patches bootstrap CL adding some tracer classes to it. +This is needed for the instrumentation tests, but may break regular unit tests. +If this project used testFixtures, the listener would end up on the classpath of the parent project's unit tests, breaking them. diff --git a/dd-java-agent/appsec/appsec-test-fixtures/build.gradle b/dd-java-agent/appsec/appsec-test-fixtures/build.gradle new file mode 100644 index 00000000000..52c17796e31 --- /dev/null +++ b/dd-java-agent/appsec/appsec-test-fixtures/build.gradle @@ -0,0 +1,11 @@ +apply from: "$rootDir/gradle/java.gradle" +apply from: "$rootDir/gradle/version.gradle" + +dependencies { + api project(':dd-java-agent:appsec') + api project(':dd-java-agent:instrumentation-testing') +} + +configurations.api { + exclude group: 'org.eclipse.jetty', module: 'jetty-server' +} diff --git a/dd-java-agent/appsec/src/testFixtures/groovy/com/datadog/appsec/AppSecHttpServerTest.groovy b/dd-java-agent/appsec/appsec-test-fixtures/src/main/groovy/com/datadog/appsec/AppSecHttpServerTest.groovy similarity index 100% rename from dd-java-agent/appsec/src/testFixtures/groovy/com/datadog/appsec/AppSecHttpServerTest.groovy rename to dd-java-agent/appsec/appsec-test-fixtures/src/main/groovy/com/datadog/appsec/AppSecHttpServerTest.groovy diff --git a/dd-java-agent/appsec/src/testFixtures/groovy/com/datadog/appsec/AppSecInactiveHttpServerTest.groovy b/dd-java-agent/appsec/appsec-test-fixtures/src/main/groovy/com/datadog/appsec/AppSecInactiveHttpServerTest.groovy similarity index 100% rename from dd-java-agent/appsec/src/testFixtures/groovy/com/datadog/appsec/AppSecInactiveHttpServerTest.groovy rename to dd-java-agent/appsec/appsec-test-fixtures/src/main/groovy/com/datadog/appsec/AppSecInactiveHttpServerTest.groovy diff --git a/dd-java-agent/appsec/build.gradle b/dd-java-agent/appsec/build.gradle index aca7f3f309c..87ae1a91e9f 100644 --- a/dd-java-agent/appsec/build.gradle +++ b/dd-java-agent/appsec/build.gradle @@ -4,7 +4,6 @@ import groovy.json.JsonSlurper plugins { id 'com.gradleup.shadow' id 'me.champeau.jmh' - id 'java-test-fixtures' } apply from: "$rootDir/gradle/java.gradle" @@ -25,12 +24,6 @@ dependencies { testImplementation group: 'com.flipkart.zjsonpatch', name: 'zjsonpatch', version: '0.4.11' testImplementation libs.logback.classic testImplementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.16.0' - - testFixturesApi project(':dd-java-agent:testing') -} - -configurations.testFixturesApi { - exclude group: 'org.eclipse.jetty', module: 'jetty-server' } shadowJar { diff --git a/dd-java-agent/instrumentation-testing/build.gradle b/dd-java-agent/instrumentation-testing/build.gradle new file mode 100644 index 00000000000..3fb86ac3de3 --- /dev/null +++ b/dd-java-agent/instrumentation-testing/build.gradle @@ -0,0 +1,26 @@ +apply from: "$rootDir/gradle/java.gradle" + +dependencies { + api libs.bytebuddy + api libs.bytebuddyagent + api libs.slf4j + api libs.bundles.spock + api libs.bundles.test.logging + api libs.guava + + api project(':dd-java-agent:testing') + + implementation project(':dd-java-agent:agent-debugger') + + implementation 'org.junit.platform:junit-platform-runner:1.9.0' + + testImplementation project(':dd-java-agent:instrumentation:trace-annotation') + + testImplementation group: 'cglib', name: 'cglib', version: '3.2.5' + // test instrumenting java 1.1 bytecode + testImplementation group: 'net.sf.jt400', name: 'jt400', version: '6.1' + + // We have autoservices defined in test subtree, looks like we need this to be able to properly rebuild this + testAnnotationProcessor libs.autoservice.processor + testCompileOnly libs.autoservice.annotation +} diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/AgentTestRunner.groovy b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/InstrumentationSpecification.groovy similarity index 96% rename from dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/AgentTestRunner.groovy rename to dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/InstrumentationSpecification.groovy index 9f3b08a9aba..e08c966df10 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/AgentTestRunner.groovy +++ b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/InstrumentationSpecification.groovy @@ -22,6 +22,7 @@ import datadog.trace.agent.test.datastreams.RecordingDatastreamsPayloadWriter import datadog.trace.agent.tooling.AgentInstaller import datadog.trace.agent.tooling.InstrumenterModule import datadog.trace.agent.tooling.TracerInstaller +import datadog.trace.agent.tooling.bytebuddy.matcher.ClassLoaderMatchers import datadog.trace.agent.tooling.bytebuddy.matcher.GlobalIgnores import datadog.trace.api.Config import datadog.trace.api.DDSpanId @@ -65,7 +66,7 @@ import net.bytebuddy.dynamic.DynamicType import net.bytebuddy.utility.JavaModule import okhttp3.HttpUrl import okhttp3.OkHttpClient -import org.junit.runner.RunWith +import org.junit.jupiter.api.extension.ExtendWith import org.slf4j.Logger import org.slf4j.LoggerFactory import org.spockframework.mock.MockUtil @@ -90,7 +91,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevi import static datadog.trace.util.AgentThreadFactory.AgentThread.TASK_SCHEDULER /** - * A spock test runner which automatically applies instrumentation and exposes a global trace + * A specification that automatically applies instrumentation and exposes a global trace * writer. * *

To use, write a regular spock test, but extend this class instead of {@link @@ -100,14 +101,15 @@ import static datadog.trace.util.AgentThreadFactory.AgentThread.TASK_SCHEDULER *

*/ -// CodeNarc incorrectly thinks ".class" is unnecessary in @RunWith +// CodeNarc incorrectly thinks ".class" is unnecessary in @ExtendWith @SuppressWarnings('UnnecessaryDotClass') -@RunWith(SpockRunner.class) -abstract class AgentTestRunner extends DDSpecification implements AgentBuilder.Listener { +@ExtendWith(TestClassShadowingExtension.class) +@ExtendWith(TooManyInvocationsErrorHandler.class) +abstract class InstrumentationSpecification extends DDSpecification implements AgentBuilder.Listener { private static final long TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(20) protected static final Instrumentation INSTRUMENTATION = ByteBuddyAgent.getInstrumentation() @@ -210,7 +212,7 @@ abstract class AgentTestRunner extends DDSpecification implements AgentBuilder.L @Override boolean isDataStreamsEnabled() { - return AgentTestRunner.this.isDataStreamsEnabled() + return InstrumentationSpecification.this.isDataStreamsEnabled() } @Override @@ -460,7 +462,11 @@ abstract class AgentTestRunner extends DDSpecification implements AgentBuilder.L spiedAgentSpan } - assert ServiceLoader.load(InstrumenterModule, AgentTestRunner.getClassLoader()) + // if a test enables the instrumentation it verifies, + // the cache needs to be recomputed taking into account that instrumentation's matchers + ClassLoaderMatchers.resetState() + + assert ServiceLoader.load(InstrumenterModule, InstrumentationSpecification.getClassLoader()) .iterator() .hasNext(): "No instrumentation found" activeTransformer = AgentInstaller.installBytebuddyAgent( diff --git a/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/TooManyInvocationsErrorHandler.java b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/TooManyInvocationsErrorHandler.java new file mode 100644 index 00000000000..9316fffdca7 --- /dev/null +++ b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/TooManyInvocationsErrorHandler.java @@ -0,0 +1,56 @@ +package datadog.trace.agent.test; + +import java.util.List; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.api.extension.TestExecutionExceptionHandler; +import org.spockframework.mock.IMockInvocation; +import org.spockframework.mock.TooManyInvocationsError; + +/** + * This extension fixes tests failures when a {@link + * org.spockframework.mock.TooManyInvocationsError} triggers a {@link java.lang.StackOverflowError} + * while composing the failure message. + * + *

When a mocked class captures the assertion error (e.g. {@link + * org.spockframework.mock.TooManyInvocationsError}), Spock will throw an {@link + * java.lang.StackOverflowError} while building the accepted invocations failure message, which + * causes the test to be ignored and won't be reported as a failure. + * + * @see Original change + */ +public final class TooManyInvocationsErrorHandler implements TestExecutionExceptionHandler { + + @Override + public void handleTestExecutionException(ExtensionContext ctx, Throwable ex) throws Throwable { + if (ex instanceof TooManyInvocationsError) { + fixTooManyInvocationsError((TooManyInvocationsError) ex); + throw ex; // re‑throw so JUnit still marks the test as failed. + } + throw ex; + } + + static void fixTooManyInvocationsError(final TooManyInvocationsError error) { + final List accepted = error.getAcceptedInvocations(); + for (final IMockInvocation invocation : accepted) { + try { + invocation.toString(); + } catch (final Throwable t) { + final List args = invocation.getArguments(); + for (int i = 0; i < args.size(); i++) { + final Object arg = args.get(i); + if (arg instanceof AssertionError) { + args.set( + i, + new AssertionError( + "'" + + arg.getClass().getName() + + "' hidden due to '" + + t.getClass().getName() + + "'", + t)); + } + } + } + } + } +} diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/AbstractPromiseTest.groovy b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/base/AbstractPromiseTest.groovy similarity index 96% rename from dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/AbstractPromiseTest.groovy rename to dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/base/AbstractPromiseTest.groovy index 9ccc61109f3..b41079852ec 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/AbstractPromiseTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/base/AbstractPromiseTest.groovy @@ -1,13 +1,13 @@ package datadog.trace.agent.test.base -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import spock.lang.IgnoreIf import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace // TODO: add a test for a longer chain of promises -abstract class AbstractPromiseTest extends AgentTestRunner { +abstract class AbstractPromiseTest extends InstrumentationSpecification { abstract P newPromise() diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpClientTest.groovy b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/base/HttpClientTest.groovy similarity index 98% rename from dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpClientTest.groovy rename to dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/base/HttpClientTest.groovy index 3136a5aa5f6..57de7a2b776 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpClientTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/base/HttpClientTest.groovy @@ -1,5 +1,7 @@ package datadog.trace.agent.test.base + +import datadog.trace.agent.test.asserts.TagsAssert import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.agent.test.naming.VersionedNamingTestBase import datadog.trace.agent.test.server.http.HttpProxy @@ -26,9 +28,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.api.config.TraceInstrumentationConfig.HTTP_CLIENT_HOST_SPLIT_BY_DOMAIN import static datadog.trace.api.config.TraceInstrumentationConfig.HTTP_CLIENT_TAG_QUERY_STRING -import static datadog.trace.api.config.TracerConfig.HEADER_TAGS -import static datadog.trace.api.config.TracerConfig.REQUEST_HEADER_TAGS -import static datadog.trace.api.config.TracerConfig.RESPONSE_HEADER_TAGS +import static datadog.trace.api.config.TracerConfig.* abstract class HttpClientTest extends VersionedNamingTestBase { protected static final BODY_METHODS = ["POST", "PUT"] @@ -862,7 +862,7 @@ abstract class HttpClientTest extends VersionedNamingTestBase { "$DDTags.PATHWAY_HASH" { String } } if (exception) { - errorTags(exception.class, exception.message) + this.assertErrorTags(it, exception) } peerServiceFrom(Tags.PEER_HOSTNAME) defaultTags() @@ -873,6 +873,10 @@ abstract class HttpClientTest extends VersionedNamingTestBase { } } + void assertErrorTags(TagsAssert tagsAssert, Throwable exception) { + tagsAssert.errorTags(exception.class, exception.message) + } + int size(int size) { size } diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy similarity index 100% rename from dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy rename to dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/WithHttpServer.groovy b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/base/WithHttpServer.groovy similarity index 100% rename from dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/WithHttpServer.groovy rename to dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/base/WithHttpServer.groovy diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/datastreams/MockFeaturesDiscovery.java b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/datastreams/MockFeaturesDiscovery.java similarity index 100% rename from dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/datastreams/MockFeaturesDiscovery.java rename to dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/datastreams/MockFeaturesDiscovery.java diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/datastreams/RecordingDatastreamsPayloadWriter.groovy b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/datastreams/RecordingDatastreamsPayloadWriter.groovy similarity index 100% rename from dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/datastreams/RecordingDatastreamsPayloadWriter.groovy rename to dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/datastreams/RecordingDatastreamsPayloadWriter.groovy diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/log/injection/LogContextInjectionTestBase.groovy b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/log/injection/LogContextInjectionTestBase.groovy similarity index 96% rename from dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/log/injection/LogContextInjectionTestBase.groovy rename to dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/log/injection/LogContextInjectionTestBase.groovy index 33e995973b2..a4ef34c5527 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/log/injection/LogContextInjectionTestBase.groovy +++ b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/log/injection/LogContextInjectionTestBase.groovy @@ -1,6 +1,6 @@ package datadog.trace.agent.test.log.injection -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.CorrelationIdentifier import datadog.trace.bootstrap.instrumentation.api.AgentScope import datadog.trace.bootstrap.instrumentation.api.AgentSpan @@ -14,7 +14,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan * This class represents the standard test cases that new logging library integrations MUST * satisfy in order to support log injection. */ -abstract class LogContextInjectionTestBase extends AgentTestRunner { +abstract class LogContextInjectionTestBase extends InstrumentationSpecification { /** * Set in the framework-specific context the given value at the given key */ diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/naming/NamingConventions.groovy b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/naming/NamingConventions.groovy similarity index 100% rename from dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/naming/NamingConventions.groovy rename to dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/naming/NamingConventions.groovy diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/naming/VersionedNamingTest.groovy b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/naming/VersionedNamingTest.groovy similarity index 100% rename from dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/naming/VersionedNamingTest.groovy rename to dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/naming/VersionedNamingTest.groovy diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/naming/VersionedNamingTestBase.groovy b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/naming/VersionedNamingTestBase.groovy similarity index 60% rename from dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/naming/VersionedNamingTestBase.groovy rename to dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/naming/VersionedNamingTestBase.groovy index 6dcecf07ea9..5bc5f1a9eaf 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/naming/VersionedNamingTestBase.groovy +++ b/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/naming/VersionedNamingTestBase.groovy @@ -1,9 +1,9 @@ package datadog.trace.agent.test.naming -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.TracerConfig -abstract class VersionedNamingTestBase extends AgentTestRunner implements VersionedNamingTest { +abstract class VersionedNamingTestBase extends InstrumentationSpecification implements VersionedNamingTest { @Override diff --git a/dd-java-agent/instrumentation-testing/src/main/java/datadog/trace/agent/test/BootstrapClasspathSetupListener.java b/dd-java-agent/instrumentation-testing/src/main/java/datadog/trace/agent/test/BootstrapClasspathSetupListener.java new file mode 100644 index 00000000000..58a4c1cc9a7 --- /dev/null +++ b/dd-java-agent/instrumentation-testing/src/main/java/datadog/trace/agent/test/BootstrapClasspathSetupListener.java @@ -0,0 +1,238 @@ +package datadog.trace.agent.test; + +import static com.google.common.base.StandardSystemProperty.JAVA_CLASS_PATH; +import static com.google.common.base.StandardSystemProperty.PATH_SEPARATOR; + +import com.google.common.base.Splitter; +import com.google.common.collect.ImmutableList; +import com.google.common.reflect.ClassPath; +import datadog.trace.agent.test.utils.ClasspathUtils; +import datadog.trace.bootstrap.BootstrapProxy; +import de.thetaphi.forbiddenapis.SuppressForbidden; +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; +import java.util.function.Function; +import java.util.jar.JarFile; +import java.util.regex.Pattern; +import net.bytebuddy.agent.ByteBuddyAgent; +import org.junit.platform.launcher.LauncherSession; +import org.junit.platform.launcher.LauncherSessionListener; + +/** + * This class appends tracer classes from the packages listed in {@link #TEST_BOOTSTRAP_PREFIXES} to + * bootstrap classpath. + * + *

This needs to be done before these classes are loaded by the application classloader. JUnit 5 + * does classpath scanning in order to discover tests, so this class has to be initialized early in + * JUnit 5 lifecycle (before classpath scanning takes place). It implements {@link + * LauncherSessionListener} as the latter is called early enough. Invoking the listener triggers + * class initialization and bootstrap classpath setup. + * + *

IMPORTANT: the listener is loaded through the ServiceLoader mechanism, so if + * this class (and the corresponding {@code org.junit.platform.launcher.LauncherSessionListener} + * file) is on the classpath, it will be called and the bootstrap classpath will be patched! + */ +public class BootstrapClasspathSetupListener implements LauncherSessionListener { + + @Override + public void launcherSessionOpened(LauncherSession session) { + // this method is only needed to trigger this class' static initializer before JUnit does + // classpath scanning + } + + private static final String[] TEST_EXCLUDED_BOOTSTRAP_PACKAGE_PREFIXES = { + "ch.qos.logback.classic.servlet", // this draws javax.servlet deps that are not needed + }; + + private static final String[] TEST_BOOTSTRAP_PREFIXES; + + /** + * An exact copy of {@link datadog.trace.bootstrap.Constants#BOOTSTRAP_PACKAGE_PREFIXES}. + * + *

This list is needed to initialize the bootstrap classpath because Utils' static initializer + * references bootstrap classes (e.g. DatadogClassLoader). + */ + public static final String[] BOOTSTRAP_PACKAGE_PREFIXES_COPY = { + "datadog.slf4j", + "datadog.context", + "datadog.environment", + "datadog.json", + "datadog.yaml", + "datadog.appsec.api", + "datadog.trace.api", + "datadog.trace.bootstrap", + "datadog.trace.context", + "datadog.trace.instrumentation.api", + "datadog.trace.logging", + "datadog.trace.util", + }; + + public static final ClassPath TEST_CLASSPATH = computeTestClasspath(); + + // matches names ending with Test and inner classes (e.g. MyTest$1, MyTest$InnerClass, + // MyTest$InnerClass$2, etc) + private static final Pattern TEST_CLASS_PATTERN = Pattern.compile(".*Test(\\$\\w+)*$"); + + static { + TEST_BOOTSTRAP_PREFIXES = + Arrays.copyOf(BOOTSTRAP_PACKAGE_PREFIXES_COPY, BOOTSTRAP_PACKAGE_PREFIXES_COPY.length + 2); + TEST_BOOTSTRAP_PREFIXES[BOOTSTRAP_PACKAGE_PREFIXES_COPY.length] = "org.slf4j"; + TEST_BOOTSTRAP_PREFIXES[BOOTSTRAP_PACKAGE_PREFIXES_COPY.length + 1] = "ch.qos.logback"; + + ByteBuddyAgent.install(); + setupBootstrapClasspath(); + } + + private static ClassPath computeTestClasspath() { + ClassLoader testClassLoader = BootstrapClasspathSetupListener.class.getClassLoader(); + if (!(testClassLoader instanceof URLClassLoader)) { + // java9's system loader does not extend URLClassLoader + // which breaks Guava ClassPath lookup + testClassLoader = buildJavaClassPathClassLoader(); + } + try { + return ClassPath.from(testClassLoader); + } catch (final IOException e) { + throw new RuntimeException(e); + } + } + + /** + * Parse JVM classpath and return ClassLoader containing all classpath entries. Inspired by Guava. + */ + @SuppressForbidden + private static ClassLoader buildJavaClassPathClassLoader() { + final ImmutableList.Builder urls = ImmutableList.builder(); + for (final String entry : Splitter.on(PATH_SEPARATOR.value()).split(JAVA_CLASS_PATH.value())) { + try { + try { + urls.add(new File(entry).toURI().toURL()); + } catch (final SecurityException e) { // File.toURI checks to see if the file is a directory + urls.add(new URL("file", null, new File(entry).getAbsolutePath())); + } + } catch (final MalformedURLException e) { + System.err.printf( + "Error injecting bootstrap jar: Malformed classpath entry: %s. %s%n", entry, e); + } + } + return new URLClassLoader(urls.build().toArray(new URL[0]), null); + } + + private static void setupBootstrapClasspath() { + // Ensure there weren't any bootstrap classes loaded prematurely. + Set prematureBootstrapClasses = new TreeSet<>(); + for (Class clazz : ByteBuddyAgent.getInstrumentation().getAllLoadedClasses()) { + if (isBootstrapClass(clazz) + && clazz.getClassLoader() != null + && !clazz.getName().equals("datadog.trace.api.DisableTestTrace") + && !clazz.getName().startsWith("org.slf4j")) { + prematureBootstrapClasses.add(clazz.getName()); + } + } + if (!prematureBootstrapClasses.isEmpty()) { + throw new AssertionError( + prematureBootstrapClasses.size() + + " classes were loaded before bootstrap classpath was initialized: " + + prematureBootstrapClasses); + } + try { + final File bootstrapJar = createBootstrapJar(); + ByteBuddyAgent.getInstrumentation() + .appendToBootstrapClassLoaderSearch(new JarFile(bootstrapJar)); + BootstrapProxy.addBootstrapResource(bootstrapJar.toURI().toURL()); + } catch (final IOException e) { + throw new RuntimeException(e); + } + } + + private static File createBootstrapJar() throws IOException { + Set bootstrapClasses = new HashSet<>(); + for (ClassPath.ClassInfo info : TEST_CLASSPATH.getAllClasses()) { + if (isBootstrapClass(info)) { + bootstrapClasses.add(info.getResourceName()); + } + } + URL jar = + ClasspathUtils.createJarWithClasses( + TestClassShadowingExtension.class.getClassLoader(), + bootstrapClasses.toArray(new String[0])); + return new File(jar.getFile()); + } + + public static boolean isBootstrapClass(final ClassPath.ClassInfo info) { + return isBootstrapClass( + info, + ClassPath.ClassInfo::getName, + ClassPath.ClassInfo::getResourceName, + ClassPath.ClassInfo::url); + } + + public static boolean isBootstrapClass(final Class clazz) { + return !clazz.isPrimitive() + && isBootstrapClass( + clazz, + Class::getName, + BootstrapClasspathSetupListener::classToResourceName, + BootstrapClasspathSetupListener::classToUrl); + } + + private static final Map CLASS_NAME_TO_RESOURCE_NAME = new HashMap<>(); + + private static String classToResourceName(final Class clazz) { + return CLASS_NAME_TO_RESOURCE_NAME.computeIfAbsent( + clazz.getName(), k -> k.replace('.', '/') + ".class"); + } + + private static URL classToUrl(final Class clazz) { + ClassLoader classLoader = clazz.getClassLoader(); + return classLoader == null ? null : classLoader.getResource(classToResourceName(clazz)); + } + + private static boolean isBootstrapClass( + final T type, + final Function toName, + final Function toResourceName, + final Function toUrl) { + String name = toName.apply(type); + for (String prefix : TEST_BOOTSTRAP_PREFIXES) { + if (name.startsWith(prefix)) { + for (String excluded : TEST_EXCLUDED_BOOTSTRAP_PACKAGE_PREFIXES) { + if (name.startsWith(excluded)) { + return false; + } + } + // Tests should be loaded by the application classloader. + // If a test is loaded by the bootstrap classloader, + // it will either fail during the test discovery phase + // (if its method signatures contain classes only visible to the app classloader) + // or will not be discovered at all + // (because JUnit will be looking for annotation classes loaded by the app classloader) + if (TEST_CLASS_PATTERN.matcher(name).matches()) { + String resource = toResourceName.apply(type); + URL url = toUrl.apply(type); + if (isATest(resource, url)) { + return false; + } + } + return true; + } + } + return false; + } + + // A safety check to only consider classes from "test/latestDepTest/forkedTest/etc" source roots + private static boolean isATest(String resourceName, URL url) { + return url != null + && (url.getPath().endsWith("test/" + resourceName) + || url.getPath().endsWith("Test/" + resourceName)); + } +} diff --git a/dd-java-agent/instrumentation-testing/src/main/java/datadog/trace/agent/test/TestClassShadowingExtension.java b/dd-java-agent/instrumentation-testing/src/main/java/datadog/trace/agent/test/TestClassShadowingExtension.java new file mode 100644 index 00000000000..30564a0fe08 --- /dev/null +++ b/dd-java-agent/instrumentation-testing/src/main/java/datadog/trace/agent/test/TestClassShadowingExtension.java @@ -0,0 +1,133 @@ +package datadog.trace.agent.test; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import net.bytebuddy.dynamic.ClassFileLocator; +import org.junit.jupiter.api.extension.AfterAllCallback; +import org.junit.jupiter.api.extension.AfterEachCallback; +import org.junit.jupiter.api.extension.BeforeAllCallback; +import org.junit.jupiter.api.extension.BeforeEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; + +/** + * This extension does the following: + * + *

    + *
  • ensures that the test class does not refer to bootstrap classes (checks field types, method + * return types, argument types) + *
  • replaces context classloader with a custom one that "shadows" the test class by loading a + * fresh copy of it before every test + *
+ * + * @see BootstrapClasspathSetupListener#isBootstrapClass(Class) + */ +public final class TestClassShadowingExtension + implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback { + + private static final ExtensionContext.Namespace NAMESPACE = + ExtensionContext.Namespace.create("dd", "spock"); + + private static final String INSTRUMENTATION_CLASSLOADER = "instrumentation-class-loader"; + private static final String ORIGINAL_CLASSLOADER = "original-thread-context-class-loader"; + + @Override + public void beforeAll(ExtensionContext ctx) { + Class testClass = ctx.getRequiredTestClass(); + assertNoBootstrapClassesInTestClass(testClass); + + InstrumentationClassLoader custom = + new InstrumentationClassLoader(testClass.getClassLoader(), testClass.getName()); + ctx.getStore(NAMESPACE).put(INSTRUMENTATION_CLASSLOADER, custom); + } + + private static void assertNoBootstrapClassesInTestClass(final Class testClass) { + for (final Field field : testClass.getDeclaredFields()) { + assertNotBootstrapClass(testClass, field.getType()); + } + for (final Method method : testClass.getDeclaredMethods()) { + assertNotBootstrapClass(testClass, method.getReturnType()); + for (final Class paramType : method.getParameterTypes()) { + assertNotBootstrapClass(testClass, paramType); + } + } + } + + private static void assertNotBootstrapClass(final Class testClass, final Class clazz) { + if (BootstrapClasspathSetupListener.isBootstrapClass(clazz)) { + throw new IllegalStateException( + testClass.getName() + + ": Bootstrap classes are not allowed in test class field or method signatures. Offending class: " + + clazz.getName()); + } + } + + @Override + public void afterAll(ExtensionContext ctx) { + // nothing to clean‑up – garbage collector will take care of loader + } + + @Override + public void beforeEach(ExtensionContext ctx) { + ClassLoader instrumentationClassloader = + ctx.getStore(NAMESPACE).get(INSTRUMENTATION_CLASSLOADER, ClassLoader.class); + ctx.getStore(NAMESPACE) + .put(ORIGINAL_CLASSLOADER, Thread.currentThread().getContextClassLoader()); + Thread.currentThread().setContextClassLoader(instrumentationClassloader); + } + + @Override + public void afterEach(ExtensionContext ctx) { + ClassLoader prev = ctx.getStore(NAMESPACE).remove(ORIGINAL_CLASSLOADER, ClassLoader.class); + if (prev != null) { + Thread.currentThread().setContextClassLoader(prev); + } + } + + /** Run test classes in a classloader which loads test classes before delegating. */ + private static class InstrumentationClassLoader extends ClassLoader { + private final ClassLoader parent; + private final String shadowPrefix; + + InstrumentationClassLoader(ClassLoader parent, String shadowPrefix) { + super(parent); + this.parent = parent; + this.shadowPrefix = shadowPrefix; + } + + /** Forcefully inject the bytes of clazz into this classloader. */ + Class shadow(Class clazz) throws IOException { + Class loaded = findLoadedClass(clazz.getName()); + if (loaded != null && loaded.getClassLoader() == this) { + return loaded; + } + try (ClassFileLocator classFileLocator = + ClassFileLocator.ForClassLoader.of(clazz.getClassLoader())) { + byte[] classBytes = classFileLocator.locate(clazz.getName()).resolve(); + return defineClass(clazz.getName(), classBytes, 0, classBytes.length); + } + } + + @Override + protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException { + synchronized (getClassLoadingLock(name)) { + Class c = findLoadedClass(name); + if (c != null) { + return c; + } + if (name.startsWith(shadowPrefix)) { + try { + Class shadowed = shadow(parent.loadClass(name)); + if (resolve) { + resolveClass(shadowed); + } + return shadowed; + } catch (Exception ignored) { + // fall‑back to parent below + } + } + return super.loadClass(name, resolve); + } + } + } +} diff --git a/dd-java-agent/instrumentation-testing/src/main/resources/META-INF/services/org.junit.platform.launcher.LauncherSessionListener b/dd-java-agent/instrumentation-testing/src/main/resources/META-INF/services/org.junit.platform.launcher.LauncherSessionListener new file mode 100644 index 00000000000..3026a30013d --- /dev/null +++ b/dd-java-agent/instrumentation-testing/src/main/resources/META-INF/services/org.junit.platform.launcher.LauncherSessionListener @@ -0,0 +1 @@ +datadog.trace.agent.test.BootstrapClasspathSetupListener diff --git a/dd-java-agent/testing/src/test/groovy/AgentTestRunnerTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/AgentTestRunnerTest.groovy similarity index 93% rename from dd-java-agent/testing/src/test/groovy/AgentTestRunnerTest.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/AgentTestRunnerTest.groovy index 50a09a2c8ab..c21a1e0b7f1 100644 --- a/dd-java-agent/testing/src/test/groovy/AgentTestRunnerTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/AgentTestRunnerTest.groovy @@ -1,7 +1,6 @@ import com.google.common.reflect.ClassPath -import datadog.trace.agent.test.AgentTestRunner -import datadog.trace.agent.test.SpockRunner -import datadog.trace.agent.test.utils.ClasspathUtils +import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.agent.test.BootstrapClasspathSetupListener import datadog.trace.api.GlobalTracer import datadog.trace.api.Platform import datadog.trace.bootstrap.Constants @@ -16,7 +15,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_CLASSES_EXCLUDE import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan -class AgentTestRunnerTest extends AgentTestRunner { +class AgentTestRunnerTest extends InstrumentationSpecification { private static final ClassLoader BOOTSTRAP_CLASSLOADER = null private static final BigDecimal JAVA_VERSION = new BigDecimal(System.getProperty("java.specification.version")) private static final boolean IS_AT_LEAST_JAVA_17 = JAVA_VERSION.isAtLeast(17.0) @@ -37,14 +36,14 @@ class AgentTestRunnerTest extends AgentTestRunner { def "spock runner bootstrap prefixes correct for test setup"() { expect: - SpockRunner.BOOTSTRAP_PACKAGE_PREFIXES_COPY == Constants.BOOTSTRAP_PACKAGE_PREFIXES + BootstrapClasspathSetupListener.BOOTSTRAP_PACKAGE_PREFIXES_COPY == Constants.BOOTSTRAP_PACKAGE_PREFIXES } def "classpath setup"() { setup: boolean jfrSupported = isJFRSupported() final List bootstrapClassesIncorrectlyLoaded = [] - for (ClassPath.ClassInfo info : ClasspathUtils.getTestClasspath().getAllClasses()) { + for (ClassPath.ClassInfo info : BootstrapClasspathSetupListener.TEST_CLASSPATH.getAllClasses()) { for (int i = 0; i < Constants.BOOTSTRAP_PACKAGE_PREFIXES.length; ++i) { if (info.getName().startsWith(Constants.BOOTSTRAP_PACKAGE_PREFIXES[i])) { if (!jfrSupported && info.name.startsWith("datadog.trace.bootstrap.instrumentation.jfr.")) { diff --git a/dd-java-agent/testing/src/test/groovy/ConfigResetTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/ConfigResetTest.groovy similarity index 97% rename from dd-java-agent/testing/src/test/groovy/ConfigResetTest.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/ConfigResetTest.groovy index e8764d6cfe8..065c5c0a2d3 100644 --- a/dd-java-agent/testing/src/test/groovy/ConfigResetTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/ConfigResetTest.groovy @@ -1,8 +1,8 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Config import spock.lang.Shared -class ConfigResetTest extends AgentTestRunner { +class ConfigResetTest extends InstrumentationSpecification { @Shared def sharedInstance = checkStaticAssertions() diff --git a/dd-java-agent/testing/src/test/groovy/InstrumentOldBytecode.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/InstrumentOldBytecode.groovy similarity index 54% rename from dd-java-agent/testing/src/test/groovy/InstrumentOldBytecode.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/InstrumentOldBytecode.groovy index 8c17b41a0d5..cc3f1e1f83d 100644 --- a/dd-java-agent/testing/src/test/groovy/InstrumentOldBytecode.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/InstrumentOldBytecode.groovy @@ -1,7 +1,7 @@ import com.ibm.as400.resource.ResourceLevel -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification -class InstrumentOldBytecode extends AgentTestRunner { +class InstrumentOldBytecode extends InstrumentationSpecification { 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 new file mode 100644 index 00000000000..03d0687e3a7 --- /dev/null +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/TooManyInvocationsErrorListenerTest.groovy @@ -0,0 +1,30 @@ +import datadog.trace.agent.test.InstrumentationSpecification +import datadog.trace.agent.test.TestClassShadowingExtension +import org.spockframework.mock.* +import org.spockframework.mock.runtime.MockInvocation + +class TooManyInvocationsErrorListenerTest extends InstrumentationSpecification { + + @SuppressWarnings('GroovyAccessibility') + void 'test that listener modifies failure'() { + setup: + final error = new TooManyInvocationsError(Stub(IMockInteraction), []) + error.acceptedInvocations.add(new MockInvocation(Stub(IMockObject), + Stub(IMockMethod), + [error], + Stub(IResponseGenerator))) + + when: + error.getMessage() + + then: + thrown(StackOverflowError) + + when: + TestClassShadowingExtension.fixTooManyInvocationsError(error) + error.getMessage() + + then: + noExceptionThrown() + } +} diff --git a/dd-java-agent/testing/src/test/groovy/TraceCorrelationTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/TraceCorrelationTest.groovy similarity index 89% rename from dd-java-agent/testing/src/test/groovy/TraceCorrelationTest.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/TraceCorrelationTest.groovy index 0d90726f42d..ba0d4f6efde 100644 --- a/dd-java-agent/testing/src/test/groovy/TraceCorrelationTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/TraceCorrelationTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.CorrelationIdentifier import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_128_BIT_TRACEID_LOGGING_ENABLED import static datadog.trace.api.config.TracerConfig.TRACE_128_BIT_TRACEID_GENERATION_ENABLED -class TraceCorrelationTest extends AgentTestRunner { +class TraceCorrelationTest extends InstrumentationSpecification { def "access trace correlation only under trace"() { when: diff --git a/dd-java-agent/testing/src/test/groovy/context/FieldInjectionForkedTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/context/FieldInjectionForkedTest.groovy similarity index 96% rename from dd-java-agent/testing/src/test/groovy/context/FieldInjectionForkedTest.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/context/FieldInjectionForkedTest.groovy index a2ed60cb44c..6736c3cc503 100644 --- a/dd-java-agent/testing/src/test/groovy/context/FieldInjectionForkedTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/context/FieldInjectionForkedTest.groovy @@ -1,7 +1,7 @@ package context import datadog.trace.agent.test.AbortTransformationException -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.ClasspathUtils import datadog.trace.api.InstrumenterConfig import datadog.trace.test.util.GCUtils @@ -30,7 +30,7 @@ import static context.FieldInjectionTestInstrumentation.UntransformableKeyClass import static context.FieldInjectionTestInstrumentation.ValidInheritsSerializableKeyClass import static context.FieldInjectionTestInstrumentation.ValidSerializableKeyClass -class FieldInjectionForkedTest extends AgentTestRunner { +class FieldInjectionForkedTest extends InstrumentationSpecification { @Override void onDiscovery(String typeName, ClassLoader classLoader, JavaModule module, boolean loaded) { @@ -111,7 +111,7 @@ class FieldInjectionForkedTest extends AgentTestRunner { new UntransformableKeyClass() | _ } - @IgnoreIf({!InstrumenterConfig.get().isSerialVersionUIDFieldInjection()}) + @IgnoreIf({ !InstrumenterConfig.get().isSerialVersionUIDFieldInjection() }) def "serializability not impacted #serializable"() { expect: serialVersionUID(serializable) == serialVersionUID @@ -216,7 +216,7 @@ class FieldInjectionForkedTest extends AgentTestRunner { /** * Make sure that fields don't get injected into the class if it is disabled via system properties. */ -class FieldInjectionDisabledForkedTest extends AgentTestRunner { +class FieldInjectionDisabledForkedTest extends InstrumentationSpecification { void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/testing/src/test/groovy/excludefilter/ExcludeFilterForkedTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/excludefilter/ExcludeFilterForkedTest.groovy similarity index 95% rename from dd-java-agent/testing/src/test/groovy/excludefilter/ExcludeFilterForkedTest.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/excludefilter/ExcludeFilterForkedTest.groovy index 13b78fea5d6..25083625484 100644 --- a/dd-java-agent/testing/src/test/groovy/excludefilter/ExcludeFilterForkedTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/excludefilter/ExcludeFilterForkedTest.groovy @@ -1,6 +1,6 @@ package excludefilter -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.FieldBackedContextStores import datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter @@ -16,7 +16,7 @@ import static excludefilter.ExcludeFilterTestInstrumentation.NormalExecutor import static excludefilter.ExcludeFilterTestInstrumentation.NormalRunnable import static excludefilter.ExcludeFilterTestInstrumentation.RunnableExcludedExecutor -class ExcludeFilterForkedTest extends AgentTestRunner { +class ExcludeFilterForkedTest extends InstrumentationSpecification { def "test ExcludeFilter #runnable.class.name"() { expect: diff --git a/dd-java-agent/testing/src/test/groovy/locator/ClassInjectingForkedTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingForkedTest.groovy similarity index 92% rename from dd-java-agent/testing/src/test/groovy/locator/ClassInjectingForkedTest.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingForkedTest.groovy index 43a44d1b82f..a456f873cf6 100644 --- a/dd-java-agent/testing/src/test/groovy/locator/ClassInjectingForkedTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingForkedTest.groovy @@ -1,6 +1,6 @@ package locator -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import net.bytebuddy.agent.builder.AgentBuilder import net.bytebuddy.description.type.TypeDescription import net.bytebuddy.dynamic.DynamicType @@ -9,7 +9,7 @@ import spock.lang.Shared import java.lang.instrument.ClassFileTransformer -class ClassInjectingForkedTest extends AgentTestRunner { +class ClassInjectingForkedTest extends InstrumentationSpecification { static volatile ClassFileTransformer extraTransformer = null diff --git a/dd-java-agent/testing/src/test/groovy/locator/ClassInjectingLoadClassDisabledForkedTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingLoadClassDisabledForkedTest.groovy similarity index 92% rename from dd-java-agent/testing/src/test/groovy/locator/ClassInjectingLoadClassDisabledForkedTest.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingLoadClassDisabledForkedTest.groovy index ae2fadb6a64..a9f36303a92 100644 --- a/dd-java-agent/testing/src/test/groovy/locator/ClassInjectingLoadClassDisabledForkedTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/locator/ClassInjectingLoadClassDisabledForkedTest.groovy @@ -1,6 +1,6 @@ package locator -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import net.bytebuddy.agent.builder.AgentBuilder import net.bytebuddy.description.type.TypeDescription import net.bytebuddy.dynamic.DynamicType @@ -12,7 +12,7 @@ import java.lang.instrument.ClassFileTransformer /** * This test checks that we don't fall back to loadClass when it is disabled. */ -class ClassInjectingLoadClassDisabledForkedTest extends AgentTestRunner { +class ClassInjectingLoadClassDisabledForkedTest extends InstrumentationSpecification { static volatile ClassFileTransformer extraTransformer = null diff --git a/dd-java-agent/testing/src/test/groovy/server/HttpProxyTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpProxyTest.groovy similarity index 95% rename from dd-java-agent/testing/src/test/groovy/server/HttpProxyTest.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpProxyTest.groovy index 17da037a58f..fb5d04791d2 100644 --- a/dd-java-agent/testing/src/test/groovy/server/HttpProxyTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpProxyTest.groovy @@ -1,6 +1,6 @@ package server -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.server.http.HttpProxy import datadog.trace.agent.test.utils.OkHttpUtils import okhttp3.MediaType @@ -19,7 +19,7 @@ import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer @Requires({ !System.getProperty("java.vm.name").contains("IBM J9 VM") }) -class HttpProxyTest extends AgentTestRunner { +class HttpProxyTest extends InstrumentationSpecification { @AutoCleanup @Shared diff --git a/dd-java-agent/testing/src/test/groovy/server/HttpServerTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpServerTest.groovy similarity index 98% rename from dd-java-agent/testing/src/test/groovy/server/HttpServerTest.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpServerTest.groovy index 1655d2872e6..5d747b2296b 100644 --- a/dd-java-agent/testing/src/test/groovy/server/HttpServerTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/server/HttpServerTest.groovy @@ -5,7 +5,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import datadog.communication.util.IOUtils -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.OkHttpUtils import okhttp3.MultipartBody import okhttp3.Request @@ -13,7 +13,7 @@ import spock.lang.Shared /* Don't actually need AgentTestRunner, but it messes up the classloader for AgentTestRunnerTest if this runs first. */ -class HttpServerTest extends AgentTestRunner { +class HttpServerTest extends InstrumentationSpecification { @Shared def client = OkHttpUtils.client() diff --git a/dd-java-agent/testing/src/test/groovy/synthetic/SyntheticForkedTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/synthetic/SyntheticForkedTest.groovy similarity index 81% rename from dd-java-agent/testing/src/test/groovy/synthetic/SyntheticForkedTest.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/synthetic/SyntheticForkedTest.groovy index cb86cd5262c..ffeb41b6196 100644 --- a/dd-java-agent/testing/src/test/groovy/synthetic/SyntheticForkedTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/synthetic/SyntheticForkedTest.groovy @@ -1,8 +1,8 @@ package synthetic -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification -abstract class SyntheticForkedTestBase extends AgentTestRunner { +abstract class SyntheticForkedTestBase extends InstrumentationSpecification { def "test Synthetic methods"() { expect: diff --git a/dd-java-agent/testing/src/test/groovy/utils/PortUtilsTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/utils/PortUtilsTest.groovy similarity index 93% rename from dd-java-agent/testing/src/test/groovy/utils/PortUtilsTest.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/utils/PortUtilsTest.groovy index 0d5969ace71..511e6929557 100644 --- a/dd-java-agent/testing/src/test/groovy/utils/PortUtilsTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/utils/PortUtilsTest.groovy @@ -1,11 +1,11 @@ package utils -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.PortUtils import java.util.concurrent.TimeUnit -class PortUtilsTest extends AgentTestRunner { +class PortUtilsTest extends InstrumentationSpecification { def "expect waitForPortToOpen succeed"() { given: int port = PortUtils.randomOpenPort() diff --git a/dd-java-agent/testing/src/test/groovy/utils/ThreadUtilsTest.groovy b/dd-java-agent/instrumentation-testing/src/test/groovy/utils/ThreadUtilsTest.groovy similarity index 94% rename from dd-java-agent/testing/src/test/groovy/utils/ThreadUtilsTest.groovy rename to dd-java-agent/instrumentation-testing/src/test/groovy/utils/ThreadUtilsTest.groovy index 8f44dfe5f28..7f899353c01 100644 --- a/dd-java-agent/testing/src/test/groovy/utils/ThreadUtilsTest.groovy +++ b/dd-java-agent/instrumentation-testing/src/test/groovy/utils/ThreadUtilsTest.groovy @@ -1,6 +1,6 @@ package utils -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.ThreadUtils import org.spockframework.runtime.ConditionNotSatisfiedError import spock.lang.FailsWith @@ -9,7 +9,7 @@ import spock.lang.Shared import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.atomic.AtomicInteger -class ThreadUtilsTest extends AgentTestRunner { +class ThreadUtilsTest extends InstrumentationSpecification { @Shared def counter = new AtomicInteger() diff --git a/dd-java-agent/testing/src/test/java/IBMResourceLevelInstrumentation.java b/dd-java-agent/instrumentation-testing/src/test/java/IBMResourceLevelInstrumentation.java similarity index 100% rename from dd-java-agent/testing/src/test/java/IBMResourceLevelInstrumentation.java rename to dd-java-agent/instrumentation-testing/src/test/java/IBMResourceLevelInstrumentation.java diff --git a/dd-java-agent/testing/src/test/java/config/exclude/SomeClass.java b/dd-java-agent/instrumentation-testing/src/test/java/config/exclude/SomeClass.java similarity index 100% rename from dd-java-agent/testing/src/test/java/config/exclude/SomeClass.java rename to dd-java-agent/instrumentation-testing/src/test/java/config/exclude/SomeClass.java diff --git a/dd-java-agent/testing/src/test/java/config/exclude/packagename/SomeClass.java b/dd-java-agent/instrumentation-testing/src/test/java/config/exclude/packagename/SomeClass.java similarity index 100% rename from dd-java-agent/testing/src/test/java/config/exclude/packagename/SomeClass.java rename to dd-java-agent/instrumentation-testing/src/test/java/config/exclude/packagename/SomeClass.java diff --git a/dd-java-agent/testing/src/test/java/context/FieldInjectionTestInstrumentation.java b/dd-java-agent/instrumentation-testing/src/test/java/context/FieldInjectionTestInstrumentation.java similarity index 100% rename from dd-java-agent/testing/src/test/java/context/FieldInjectionTestInstrumentation.java rename to dd-java-agent/instrumentation-testing/src/test/java/context/FieldInjectionTestInstrumentation.java diff --git a/dd-java-agent/testing/src/test/java/excludefilter/ExcludeFilterTestInstrumentation.java b/dd-java-agent/instrumentation-testing/src/test/java/excludefilter/ExcludeFilterTestInstrumentation.java similarity index 100% rename from dd-java-agent/testing/src/test/java/excludefilter/ExcludeFilterTestInstrumentation.java rename to dd-java-agent/instrumentation-testing/src/test/java/excludefilter/ExcludeFilterTestInstrumentation.java diff --git a/dd-java-agent/testing/src/test/java/locator/ClassInjectingTestInstrumentation.java b/dd-java-agent/instrumentation-testing/src/test/java/locator/ClassInjectingTestInstrumentation.java similarity index 100% rename from dd-java-agent/testing/src/test/java/locator/ClassInjectingTestInstrumentation.java rename to dd-java-agent/instrumentation-testing/src/test/java/locator/ClassInjectingTestInstrumentation.java diff --git a/dd-java-agent/testing/src/test/java/locator/ClassInjectingTransformer.java b/dd-java-agent/instrumentation-testing/src/test/java/locator/ClassInjectingTransformer.java similarity index 100% rename from dd-java-agent/testing/src/test/java/locator/ClassInjectingTransformer.java rename to dd-java-agent/instrumentation-testing/src/test/java/locator/ClassInjectingTransformer.java diff --git a/dd-java-agent/testing/src/test/java/synthetic/SyntheticTestInstrumentation.java b/dd-java-agent/instrumentation-testing/src/test/java/synthetic/SyntheticTestInstrumentation.java similarity index 100% rename from dd-java-agent/testing/src/test/java/synthetic/SyntheticTestInstrumentation.java rename to dd-java-agent/instrumentation-testing/src/test/java/synthetic/SyntheticTestInstrumentation.java diff --git a/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/akka23Test/groovy/AkkaActorTest.groovy b/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/akka23Test/groovy/AkkaActorTest.groovy index 0527f3811cc..a7c4b8a8eef 100644 --- a/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/akka23Test/groovy/AkkaActorTest.groovy +++ b/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/akka23Test/groovy/AkkaActorTest.groovy @@ -1,8 +1,8 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import spock.lang.Shared -class AkkaActorTest extends AgentTestRunner { +class AkkaActorTest extends InstrumentationSpecification { @Shared def akkaTester = new AkkaActors() diff --git a/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/ActorInitTest.groovy b/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/ActorInitTest.groovy index 7b8cb836a12..e62f2d2c15e 100644 --- a/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/ActorInitTest.groovy +++ b/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/ActorInitTest.groovy @@ -1,10 +1,10 @@ import akka.actor.ActorSystem -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class ActorInitTest extends AgentTestRunner { +class ActorInitTest extends InstrumentationSpecification { def "actor init doesn't block trace"() { when: runUnderTrace("parent") { diff --git a/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/AkkaExecutorInstrumentationTest.groovy b/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/AkkaExecutorInstrumentationTest.groovy index e7dcbb02efd..78b7a8c1cce 100644 --- a/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/AkkaExecutorInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/AkkaExecutorInstrumentationTest.groovy @@ -3,7 +3,7 @@ import akka.dispatch.ForkJoinExecutorConfigurator import akka.dispatch.forkjoin.ForkJoinPool import akka.dispatch.forkjoin.ForkJoinTask import com.typesafe.config.ConfigFactory -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import datadog.trace.core.DDSpan import spock.lang.Shared @@ -20,7 +20,7 @@ import java.util.concurrent.TimeUnit * Test executor instrumentation for Akka specific classes. * This is to large extent a copy of ExecutorInstrumentationTest. */ -class AkkaExecutorInstrumentationTest extends AgentTestRunner { +class AkkaExecutorInstrumentationTest extends InstrumentationSpecification { @Shared def executeRunnable = { e, c -> e.execute((Runnable) c) } diff --git a/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/ForkJoinPoolPropagationTest.groovy b/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/ForkJoinPoolPropagationTest.groovy index 6d6f341bd55..eac384501ac 100644 --- a/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/ForkJoinPoolPropagationTest.groovy +++ b/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/ForkJoinPoolPropagationTest.groovy @@ -1,8 +1,8 @@ import akka.dispatch.forkjoin.ForkJoinPool -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan -class ForkJoinPoolPropagationTest extends AgentTestRunner { +class ForkJoinPoolPropagationTest extends InstrumentationSpecification { def "test imbalanced recursive task propagation #parallelism FJP threads" () { when: ForkJoinPool fjp = new ForkJoinPool(parallelism) diff --git a/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/RejectedExecutionTest.groovy b/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/RejectedExecutionTest.groovy index f2bad8766f2..4dad89103e6 100644 --- a/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/RejectedExecutionTest.groovy +++ b/dd-java-agent/instrumentation/akka/akka-actor-2.5/src/test/groovy/RejectedExecutionTest.groovy @@ -1,12 +1,12 @@ import akka.dispatch.forkjoin.ForkJoinPool -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import java.util.concurrent.RejectedExecutionException import java.util.concurrent.atomic.AtomicBoolean import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class RejectedExecutionTest extends AgentTestRunner { +class RejectedExecutionTest extends InstrumentationSpecification { def "trace reported when FJP shutdown"() { // tests the shutdown state because it's easy to provoke without diff --git a/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/build.gradle b/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/build.gradle index db6f77915b4..351cdc58bb1 100644 --- a/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/build.gradle +++ b/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/build.gradle @@ -116,7 +116,7 @@ dependencies { baseTestImplementation group: 'com.typesafe.akka', name: 'akka-http-jackson_2.11', version: '10.0.10' baseTestImplementation group: 'com.typesafe.akka', name: 'akka-http-spray-json_2.11', version: '10.0.10' - iastTestImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + iastTestImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') iastTestCompileOnly group: 'de.thetaphi', name: 'forbiddenapis', version: '3.4' iastTestRuntimeOnly project(':dd-java-agent:instrumentation:jackson-core') iastTestRuntimeOnly project(':dd-java-agent:instrumentation:jackson-core:jackson-core-2.8') @@ -131,13 +131,13 @@ dependencies { version101TestImplementation group: 'com.typesafe.akka', name: 'akka-http-jackson_2.12', version: '10.1.+' version101TestImplementation group: 'com.typesafe.akka', name: 'akka-http-spray-json_2.12', version: '10.1.+' - version101IastTestImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + version101IastTestImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') version102IastTestImplementation libs.scala212 version102IastTestImplementation group: 'com.typesafe.akka', name: 'akka-http_2.12', version: '10.2.+' version102IastTestImplementation group: 'com.typesafe.akka', name: 'akka-stream_2.12', version: '2.6.+' version102IastTestImplementation group: 'com.typesafe.akka', name: 'akka-http-jackson_2.12', version: '10.2.+' - version102IastTestImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + version102IastTestImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') version102Scala213TestImplementation libs.scala213 version102Scala213TestImplementation group: 'com.typesafe.akka', name: 'akka-http_2.13', version: '10.2.+' @@ -161,7 +161,7 @@ dependencies { latestDepIastTestImplementation group: 'com.typesafe.akka', name: 'akka-stream_2.13', version: '2.8.+' latestDepIastTestImplementation group: 'com.typesafe.akka', name: 'akka-actor_2.13', version: '2.8.+' latestDepIastTestImplementation group: 'com.typesafe.akka', name: 'akka-http-jackson_2.13', version: '[10.+,10.5.2)' - latestDepIastTestImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + latestDepIastTestImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') latestDepIastTestImplementation project(':dd-java-agent:instrumentation:jackson-core:jackson-core-2.12') lagomTestImplementation libs.scala211 diff --git a/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/src/iastTest/groovy/datadog/trace/instrumentation/akkahttp/iast/IastAkkaTest.groovy b/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/src/iastTest/groovy/datadog/trace/instrumentation/akkahttp/iast/IastAkkaTest.groovy index 049145e81d4..5d5486264ec 100644 --- a/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/src/iastTest/groovy/datadog/trace/instrumentation/akkahttp/iast/IastAkkaTest.groovy +++ b/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/src/iastTest/groovy/datadog/trace/instrumentation/akkahttp/iast/IastAkkaTest.groovy @@ -50,7 +50,9 @@ class IastAkkaTest extends IastRequestTestRunner { value 'myValue' range 0, 7, source(SourceTypes.REQUEST_PATH_PARAMETER, null, 'myValue') } - toc.size() == 1 + // After migrating from JUnit 4 to 5, the IAST instrumentation scope has expanded so that the following are tainted: + // - Accept-Encoding, Connection, Host, HttpRequest, User-Agent, RequestContext, Timeout-Access, Remote-Address, myValue + toc.size() == 9 } void 'cookie — #variant variant'() { diff --git a/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/src/lagomTest/groovy/LagomTest.groovy b/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/src/lagomTest/groovy/LagomTest.groovy index 05dfc1d3eb9..4121aeac7e5 100644 --- a/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/src/lagomTest/groovy/LagomTest.groovy +++ b/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/src/lagomTest/groovy/LagomTest.groovy @@ -2,7 +2,7 @@ import akka.NotUsed import akka.stream.javadsl.Source import akka.stream.testkit.TestSubscriber.Probe import akka.stream.testkit.javadsl.TestSink -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import play.inject.guice.GuiceApplicationBuilder @@ -14,7 +14,7 @@ import static com.lightbend.lagom.javadsl.testkit.ServiceTest.TestServer import static com.lightbend.lagom.javadsl.testkit.ServiceTest.defaultSetup import static com.lightbend.lagom.javadsl.testkit.ServiceTest.startServer -class LagomTest extends AgentTestRunner { +class LagomTest extends InstrumentationSpecification { @Shared private TestServer server diff --git a/dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-4.0/build.gradle b/dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-4.0/build.gradle index e12abc8749f..79fa8ba465a 100644 --- a/dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-4.0/build.gradle +++ b/dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-4.0/build.gradle @@ -32,11 +32,11 @@ addTestSuiteExtendingForDir('v45IastIntegrationTest', 'iastIntegrationTest', 'ia dependencies { compileOnly group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.0' - testImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + testImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') testImplementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.0' testImplementation(project(':dd-java-agent:instrumentation:apache-httpclient:apache-httpasyncclient-4.0')) // to instrument the integration test - iastIntegrationTestImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + iastIntegrationTestImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') iastIntegrationTestImplementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.0' iastIntegrationTestRuntimeOnly(project(':dd-java-agent:instrumentation:jetty-9')) iastIntegrationTestRuntimeOnly(project(':dd-java-agent:instrumentation:apache-httpcore:apache-httpcore-4.0')) diff --git a/dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-4.0/src/test/groovy/IastHttpClientInstrumentationTest.groovy b/dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-4.0/src/test/groovy/IastHttpClientInstrumentationTest.groovy index 597ca47ff20..7e6cdd5793b 100644 --- a/dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-4.0/src/test/groovy/IastHttpClientInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-4.0/src/test/groovy/IastHttpClientInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.server.http.TestHttpServer import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.SsrfModule @@ -14,7 +14,7 @@ import spock.lang.Shared import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer -class IastHttpClientInstrumentationTest extends AgentTestRunner { +class IastHttpClientInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-5.0/src/test/groovy/IastHttpUriRequestBaseInstrumentationTest.groovy b/dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-5.0/src/test/groovy/IastHttpUriRequestBaseInstrumentationTest.groovy index a3d88d683b3..178637df039 100644 --- a/dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-5.0/src/test/groovy/IastHttpUriRequestBaseInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-5.0/src/test/groovy/IastHttpUriRequestBaseInstrumentationTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import org.apache.hc.client5.http.classic.methods.HttpUriRequestBase -class IastHttpUriRequestBaseInstrumentationTest extends AgentTestRunner { +class IastHttpUriRequestBaseInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/apache-httpcore/apache-httpcore-4.0/src/test/groovy/datadog/trace/instrumentation/apachehttpcore/IastHttpHostInstrumentationTest.groovy b/dd-java-agent/instrumentation/apache-httpcore/apache-httpcore-4.0/src/test/groovy/datadog/trace/instrumentation/apachehttpcore/IastHttpHostInstrumentationTest.groovy index f5b3d95bd20..12677c2fabe 100644 --- a/dd-java-agent/instrumentation/apache-httpcore/apache-httpcore-4.0/src/test/groovy/datadog/trace/instrumentation/apachehttpcore/IastHttpHostInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/apache-httpcore/apache-httpcore-4.0/src/test/groovy/datadog/trace/instrumentation/apachehttpcore/IastHttpHostInstrumentationTest.groovy @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.apachehttpcore -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import org.apache.http.HttpHost -class IastHttpHostInstrumentationTest extends AgentTestRunner { +class IastHttpHostInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/apache-httpcore/apache-httpcore-5.0/src/test/groovy/datadog/trace/instrumentation/apachehttpcore5/IastHttpHostInstrumentationTest.groovy b/dd-java-agent/instrumentation/apache-httpcore/apache-httpcore-5.0/src/test/groovy/datadog/trace/instrumentation/apachehttpcore5/IastHttpHostInstrumentationTest.groovy index d22fed18cd8..7ad1da3d0eb 100644 --- a/dd-java-agent/instrumentation/apache-httpcore/apache-httpcore-5.0/src/test/groovy/datadog/trace/instrumentation/apachehttpcore5/IastHttpHostInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/apache-httpcore/apache-httpcore-5.0/src/test/groovy/datadog/trace/instrumentation/apachehttpcore5/IastHttpHostInstrumentationTest.groovy @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.apachehttpcore5 -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import org.apache.hc.core5.http.HttpHost -class IastHttpHostInstrumentationTest extends AgentTestRunner { +class IastHttpHostInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/armeria/armeria-jetty-1.24/build.gradle b/dd-java-agent/instrumentation/armeria/armeria-jetty-1.24/build.gradle index 669d428c9ff..f643b40e78e 100644 --- a/dd-java-agent/instrumentation/armeria/armeria-jetty-1.24/build.gradle +++ b/dd-java-agent/instrumentation/armeria/armeria-jetty-1.24/build.gradle @@ -76,7 +76,7 @@ dependencies { testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:request-5')) testImplementation testFixtures(project(':dd-java-agent:instrumentation:jetty-11')) - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } // always mix everything up diff --git a/dd-java-agent/instrumentation/avro/src/test/groovy/AvroDatumReaderTest.groovy b/dd-java-agent/instrumentation/avro/src/test/groovy/AvroDatumReaderTest.groovy index 68415ad6c2d..e885c778476 100644 --- a/dd-java-agent/instrumentation/avro/src/test/groovy/AvroDatumReaderTest.groovy +++ b/dd-java-agent/instrumentation/avro/src/test/groovy/AvroDatumReaderTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDTags import org.apache.avro.Schema import org.apache.avro.generic.GenericData @@ -13,7 +13,7 @@ import org.apache.avro.specific.SpecificDatumWriter import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import java.nio.ByteBuffer -class AvroDatumReaderTest extends AgentTestRunner { +class AvroDatumReaderTest extends InstrumentationSpecification { diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-dynamodb-2.0/src/test/groovy/DynamoDbClientTest.groovy b/dd-java-agent/instrumentation/aws-java/aws-java-dynamodb-2.0/src/test/groovy/DynamoDbClientTest.groovy index e42b2a4da5b..02acd67be37 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-dynamodb-2.0/src/test/groovy/DynamoDbClientTest.groovy +++ b/dd-java-agent/instrumentation/aws-java/aws-java-dynamodb-2.0/src/test/groovy/DynamoDbClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.api.DDTraceId import datadog.trace.bootstrap.instrumentation.api.SpanAttributes @@ -28,7 +28,7 @@ import spock.lang.Shared import java.time.Duration -class DynamoDbClientTest extends AgentTestRunner { +class DynamoDbClientTest extends InstrumentationSpecification { static final LOCALSTACK = new GenericContainer(DockerImageName.parse("localstack/localstack:4.2.0")) .withExposedPorts(4566) .withEnv("SERVICES", "dynamodb") diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-eventbridge-2.0/src/test/groovy/EventBridgeClientTest.groovy b/dd-java-agent/instrumentation/aws-java/aws-java-eventbridge-2.0/src/test/groovy/EventBridgeClientTest.groovy index 4a4c445964e..ce531ae50ca 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-eventbridge-2.0/src/test/groovy/EventBridgeClientTest.groovy +++ b/dd-java-agent/instrumentation/aws-java/aws-java-eventbridge-2.0/src/test/groovy/EventBridgeClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.api.config.GeneralConfig import groovy.json.JsonSlurper @@ -20,7 +20,7 @@ import spock.lang.Shared import java.time.Duration import java.util.concurrent.CompletableFuture -class EventBridgeClientTest extends AgentTestRunner { +class EventBridgeClientTest extends InstrumentationSpecification { static final LOCALSTACK = new GenericContainer(DockerImageName.parse("localstack/localstack:4.2.0")) .withExposedPorts(4566) .withEnv("SERVICES", "sns,sqs,events") diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-s3-2.0/src/test/groovy/S3ClientTest.groovy b/dd-java-agent/instrumentation/aws-java/aws-java-s3-2.0/src/test/groovy/S3ClientTest.groovy index b852b75c94d..c2071fb7858 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-s3-2.0/src/test/groovy/S3ClientTest.groovy +++ b/dd-java-agent/instrumentation/aws-java/aws-java-s3-2.0/src/test/groovy/S3ClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.api.DDTraceId import datadog.trace.bootstrap.instrumentation.api.SpanAttributes @@ -17,7 +17,7 @@ import spock.lang.Shared import java.time.Duration -class S3ClientTest extends AgentTestRunner { +class S3ClientTest extends InstrumentationSpecification { static final LOCALSTACK = new GenericContainer(DockerImageName.parse("localstack/localstack:4.2.0")) .withExposedPorts(4566) .withEnv("SERVICES", "s3") diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sdk-1.11/src/test/groovy/LegacyAWS1ClientForkedTest.groovy b/dd-java-agent/instrumentation/aws-java/aws-java-sdk-1.11/src/test/groovy/LegacyAWS1ClientForkedTest.groovy index 008864bcdfd..044a11eca3c 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sdk-1.11/src/test/groovy/LegacyAWS1ClientForkedTest.groovy +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sdk-1.11/src/test/groovy/LegacyAWS1ClientForkedTest.groovy @@ -32,7 +32,7 @@ import com.amazonaws.services.sns.model.PublishRequest import com.amazonaws.services.sqs.AmazonSQSClientBuilder import com.amazonaws.services.sqs.model.CreateQueueRequest import com.amazonaws.services.sqs.model.SendMessageRequest -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -48,7 +48,7 @@ import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer import static datadog.trace.agent.test.utils.PortUtils.UNUSABLE_PORT import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan -class LegacyAWS1ClientForkedTest extends AgentTestRunner { +class LegacyAWS1ClientForkedTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sdk-1.11/src/test_before_1_11_106/groovy/AWS0ClientTest.groovy b/dd-java-agent/instrumentation/aws-java/aws-java-sdk-1.11/src/test_before_1_11_106/groovy/AWS0ClientTest.groovy index 15569c6d73e..430a7f41215 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sdk-1.11/src/test_before_1_11_106/groovy/AWS0ClientTest.groovy +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sdk-1.11/src/test_before_1_11_106/groovy/AWS0ClientTest.groovy @@ -15,7 +15,7 @@ import com.amazonaws.services.rds.AmazonRDSClient import com.amazonaws.services.rds.model.DeleteOptionGroupRequest import com.amazonaws.services.s3.AmazonS3Client import com.amazonaws.services.s3.S3ClientOptions -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import spock.lang.AutoCleanup @@ -27,7 +27,7 @@ import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer import static datadog.trace.agent.test.utils.PortUtils.UNUSABLE_PORT import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan -class AWS0ClientTest extends AgentTestRunner { +class AWS0ClientTest extends InstrumentationSpecification { private static final CREDENTIALS_PROVIDER_CHAIN = new AWSCredentialsProviderChain( new EnvironmentVariableCredentialsProvider(), diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sdk-1.11/src/test_before_1_11_106/groovy/LegacyAWS0ClientForkedTest.groovy b/dd-java-agent/instrumentation/aws-java/aws-java-sdk-1.11/src/test_before_1_11_106/groovy/LegacyAWS0ClientForkedTest.groovy index 8b792e1e2b7..6c79836fae5 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sdk-1.11/src/test_before_1_11_106/groovy/LegacyAWS0ClientForkedTest.groovy +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sdk-1.11/src/test_before_1_11_106/groovy/LegacyAWS0ClientForkedTest.groovy @@ -15,7 +15,7 @@ import com.amazonaws.services.rds.AmazonRDSClient import com.amazonaws.services.rds.model.DeleteOptionGroupRequest import com.amazonaws.services.s3.AmazonS3Client import com.amazonaws.services.s3.S3ClientOptions -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import org.apache.http.conn.HttpHostConnectException @@ -29,7 +29,7 @@ import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer import static datadog.trace.agent.test.utils.PortUtils.UNUSABLE_PORT import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan -class LegacyAWS0ClientForkedTest extends AgentTestRunner { +class LegacyAWS0ClientForkedTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sdk-2.2/src/payloadTaggingTest/groovy/PayloadTaggingTest.groovy b/dd-java-agent/instrumentation/aws-java/aws-java-sdk-2.2/src/payloadTaggingTest/groovy/PayloadTaggingTest.groovy index b321fb276ec..2f8a4ee613e 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sdk-2.2/src/payloadTaggingTest/groovy/PayloadTaggingTest.groovy +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sdk-2.2/src/payloadTaggingTest/groovy/PayloadTaggingTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.TraceUtils import datadog.trace.api.Config import datadog.trace.api.DDSpanTypes @@ -22,7 +22,7 @@ import java.time.Duration import static datadog.trace.agent.test.utils.TraceUtils.basicSpan -abstract class AbstractPayloadTaggingTest extends AgentTestRunner { +abstract class AbstractPayloadTaggingTest extends InstrumentationSpecification { static final Object NA = {} static final int DEFAULT_PORT = 4566 diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sdk-2.2/src/test/groovy/LegacyAws2ClientForkedTest.groovy b/dd-java-agent/instrumentation/aws-java/aws-java-sdk-2.2/src/test/groovy/LegacyAws2ClientForkedTest.groovy index 844c7c2490e..d86991f0030 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sdk-2.2/src/test/groovy/LegacyAws2ClientForkedTest.groovy +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sdk-2.2/src/test/groovy/LegacyAws2ClientForkedTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.instrumentation.aws.ExpectedQueryParams @@ -48,7 +48,7 @@ import java.util.concurrent.atomic.AtomicReference import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer -class LegacyAws2ClientForkedTest extends AgentTestRunner { +class LegacyAws2ClientForkedTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/build.gradle b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/build.gradle index a50e5feda8f..384b96a5de0 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/build.gradle +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/build.gradle @@ -1,3 +1,5 @@ +import java.time.Duration +import java.time.temporal.ChronoUnit muzzle { pass { @@ -14,6 +16,17 @@ apply from: "$rootDir/gradle/java.gradle" addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') +apply from: "$rootDir/gradle/configure_tests.gradle" + +// Increased time needed in CI due to migration from JUnit 4 SpockRunner to JUnit 5 SpockExtension +forkedTest { + timeout = Duration.of(15, ChronoUnit.MINUTES) +} + +latestDepForkedTest { + timeout = Duration.of(15, ChronoUnit.MINUTES) +} + dependencies { compileOnly group: 'com.amazonaws', name: 'aws-java-sdk-sqs', version: '1.11.0' compileOnly group: 'com.amazonaws', name: 'amazon-sqs-java-messaging-lib', version: '1.0.0' diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/test/groovy/LegacySqsClientForkedTest.groovy b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/test/groovy/LegacySqsClientForkedTest.groovy index d5becd4067b..7104ab7cffe 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/test/groovy/LegacySqsClientForkedTest.groovy +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/test/groovy/LegacySqsClientForkedTest.groovy @@ -5,7 +5,7 @@ import com.amazonaws.auth.AWSStaticCredentialsProvider import com.amazonaws.auth.AnonymousAWSCredentials import com.amazonaws.client.builder.AwsClientBuilder import com.amazonaws.services.sqs.AmazonSQSClientBuilder -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.TraceUtils import datadog.trace.api.DDSpanId import datadog.trace.api.DDSpanTypes @@ -19,7 +19,7 @@ import javax.jms.Session import static datadog.trace.agent.test.utils.TraceUtils.basicSpan -class LegacySqsClientForkedTest extends AgentTestRunner { +class LegacySqsClientForkedTest extends InstrumentationSpecification { def setup() { System.setProperty(SDKGlobalConfiguration.ACCESS_KEY_SYSTEM_PROPERTY, "my-access-key") diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/test/groovy/TimeInQueueForkedTest.groovy b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/test/groovy/TimeInQueueForkedTest.groovy index 4b20417595a..88ddac4cd8f 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/test/groovy/TimeInQueueForkedTest.groovy +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/test/groovy/TimeInQueueForkedTest.groovy @@ -7,7 +7,7 @@ import com.amazonaws.services.sqs.AmazonSQSClientBuilder import com.amazonaws.services.sqs.model.ReceiveMessageRequest import com.amazonaws.services.sqs.model.SendMessageBatchRequest import com.amazonaws.services.sqs.model.SendMessageBatchRequestEntry -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.agent.test.utils.TraceUtils import datadog.trace.api.DDSpanTypes @@ -18,7 +18,7 @@ import spock.lang.Shared import static datadog.trace.agent.test.utils.TraceUtils.basicSpan -class TimeInQueueForkedTest extends AgentTestRunner { +class TimeInQueueForkedTest extends InstrumentationSpecification { def setup() { System.setProperty(SDKGlobalConfiguration.ACCESS_KEY_SYSTEM_PROPERTY, "my-access-key") diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/build.gradle b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/build.gradle index e8206f0927f..318e85eb17c 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/build.gradle +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/build.gradle @@ -1,3 +1,5 @@ +import java.time.Duration +import java.time.temporal.ChronoUnit muzzle { pass { @@ -15,6 +17,17 @@ apply from: "$rootDir/gradle/java.gradle" addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') +apply from: "$rootDir/gradle/configure_tests.gradle" + +// Increased time needed in CI due to migration from JUnit 4 SpockRunner to JUnit 5 SpockExtension +forkedTest { + timeout = Duration.of(15, ChronoUnit.MINUTES) +} + +latestDepForkedTest { + timeout = Duration.of(15, ChronoUnit.MINUTES) +} + dependencies { compileOnly group: 'software.amazon.awssdk', name: 'sqs', version: '2.2.0' diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/test/groovy/LegacySqsClientForkedTest.groovy b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/test/groovy/LegacySqsClientForkedTest.groovy index d60173f1cee..45733f7ac85 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/test/groovy/LegacySqsClientForkedTest.groovy +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/test/groovy/LegacySqsClientForkedTest.groovy @@ -1,6 +1,6 @@ import com.amazon.sqs.javamessaging.ProviderConfiguration import com.amazon.sqs.javamessaging.SQSConnectionFactory -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.TraceUtils import datadog.trace.api.DDSpanId import datadog.trace.api.DDSpanTypes @@ -22,7 +22,7 @@ import javax.jms.Session import static datadog.trace.agent.test.utils.TraceUtils.basicSpan -class LegacySqsClientForkedTest extends AgentTestRunner { +class LegacySqsClientForkedTest extends InstrumentationSpecification { def setup() { System.setProperty(SdkSystemSetting.AWS_ACCESS_KEY_ID.property(), "my-access-key") diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/test/groovy/TimeInQueueForkedTest.groovy b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/test/groovy/TimeInQueueForkedTest.groovy index 777ea048e7b..0830d88e0f4 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/test/groovy/TimeInQueueForkedTest.groovy +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/test/groovy/TimeInQueueForkedTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.agent.test.utils.TraceUtils import datadog.trace.api.DDSpanTypes @@ -19,7 +19,7 @@ import spock.lang.Shared import static datadog.trace.agent.test.utils.TraceUtils.basicSpan -class TimeInQueueForkedTest extends AgentTestRunner { +class TimeInQueueForkedTest extends InstrumentationSpecification { def setup() { System.setProperty(SdkSystemSetting.AWS_ACCESS_KEY_ID.property(), "my-access-key") diff --git a/dd-java-agent/instrumentation/axis-2/src/test/groovy/datadog/trace/instrumentation/axis2/AxisEngineTest.groovy b/dd-java-agent/instrumentation/axis-2/src/test/groovy/datadog/trace/instrumentation/axis2/AxisEngineTest.groovy index 54c94960500..d5437d36c13 100644 --- a/dd-java-agent/instrumentation/axis-2/src/test/groovy/datadog/trace/instrumentation/axis2/AxisEngineTest.groovy +++ b/dd-java-agent/instrumentation/axis-2/src/test/groovy/datadog/trace/instrumentation/axis2/AxisEngineTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.axis2 -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.agent.test.utils.PortUtils import datadog.trace.api.DDSpanTypes @@ -42,7 +42,7 @@ import static org.apache.axis2.engine.Handler.InvocationResponse.CONTINUE import static org.apache.axis2.engine.Handler.InvocationResponse.SUSPEND import static org.apache.axis2.util.MessageContextBuilder.createFaultMessageContext -class AxisEngineTest extends AgentTestRunner { +class AxisEngineTest extends InstrumentationSpecification { @Shared SOAPFactory soapFactory = getSOAP11Factory() diff --git a/dd-java-agent/instrumentation/axis-2/src/test/groovy/datadog/trace/instrumentation/axis2/AxisTransportForkedTest.groovy b/dd-java-agent/instrumentation/axis-2/src/test/groovy/datadog/trace/instrumentation/axis2/AxisTransportForkedTest.groovy index da1aa65facf..4993fdba6cd 100644 --- a/dd-java-agent/instrumentation/axis-2/src/test/groovy/datadog/trace/instrumentation/axis2/AxisTransportForkedTest.groovy +++ b/dd-java-agent/instrumentation/axis-2/src/test/groovy/datadog/trace/instrumentation/axis2/AxisTransportForkedTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.axis2 -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.api.DDSpanTypes import datadog.trace.api.config.TraceInstrumentationConfig @@ -32,7 +32,7 @@ import static org.apache.axis2.description.WSDL2Constants.MEP_URI_IN_ONLY import static org.apache.axis2.description.WSDL2Constants.MEP_URI_IN_OUT import static org.apache.axis2.description.WSDL2Constants.MEP_URI_ROBUST_IN_ONLY -class AxisTransportForkedTest extends AgentTestRunner { +class AxisTransportForkedTest extends InstrumentationSpecification { @Shared SOAPFactory soapFactory = getSOAP11Factory() diff --git a/dd-java-agent/instrumentation/build.gradle b/dd-java-agent/instrumentation/build.gradle index 4c69a12c2b8..510eeda099e 100644 --- a/dd-java-agent/instrumentation/build.gradle +++ b/dd-java-agent/instrumentation/build.gradle @@ -87,37 +87,14 @@ subprojects { Project subProj -> //testImplementation project(':dd-java-agent:instrumentation:http-url-connection') testImplementation project(':dd-java-agent:instrumentation:classloading') - testImplementation project(':dd-java-agent:testing') + testImplementation project(':dd-java-agent:instrumentation-testing') testAnnotationProcessor libs.autoservice.processor testCompileOnly libs.autoservice.annotation instrumentPluginClasspath project(path: ':dd-java-agent:agent-tooling', configuration: 'instrumentPluginClasspath') } - subProj.testing { - suites.configureEach { - // SpockRunner that we use to run agent tests cannot be properly ported to JUnit 5, - // since the framework does not provide the hooks / extension points - // that can be used to shadow the tested class. - - // In order to mitigate this, SpockRunner extends JUnitPlatform, - // which is a JUnit 4 runner that allows executing JUnit 5 tests in a JUnit 4 environment - // (i.e. running them as JUnit 4 tests). - - // So even though Spock 2 tests run on top of JUnit 5, - // we execute them in "compatibility mode" so that SpockRunner could shadow the test class - // See https://junit.org/junit5/docs/current/user-guide/#running-tests-junit-platform-runner for more details. - useJUnit() - } - } - subProj.tasks.withType(Test).configureEach { subTask -> - // The `forkedTest` task is not a proper test suite, so it has to be configured directly - if (subTask.name == 'forkedTest') { - // See SpockRunner comment above - useJUnit() - } - if (subTask.name in ['latestDepTest', 'latestDepForkedTest']) { subTask.jvmArgs '-Dtest.dd.latestDepTest=true' } diff --git a/dd-java-agent/instrumentation/cdi-1.2/src/test/groovy/CDIContainerTest.groovy b/dd-java-agent/instrumentation/cdi-1.2/src/test/groovy/CDIContainerTest.groovy index f7878bd704a..bf684b7ecf3 100644 --- a/dd-java-agent/instrumentation/cdi-1.2/src/test/groovy/CDIContainerTest.groovy +++ b/dd-java-agent/instrumentation/cdi-1.2/src/test/groovy/CDIContainerTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.jboss.weld.environment.se.Weld import org.jboss.weld.environment.se.WeldContainer import org.jboss.weld.environment.se.threading.RunnableDecorator -class CDIContainerTest extends AgentTestRunner { +class CDIContainerTest extends InstrumentationSpecification { def "CDI container starts with agent"() { given: diff --git a/dd-java-agent/instrumentation/classloading/jboss-testing/src/test/groovy/JBossClassloadingTest.groovy b/dd-java-agent/instrumentation/classloading/jboss-testing/src/test/groovy/JBossClassloadingTest.groovy index b428b8570cd..9ba7f5bad2d 100644 --- a/dd-java-agent/instrumentation/classloading/jboss-testing/src/test/groovy/JBossClassloadingTest.groovy +++ b/dd-java-agent/instrumentation/classloading/jboss-testing/src/test/groovy/JBossClassloadingTest.groovy @@ -1,11 +1,11 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.jboss.modules.ModuleFinder import org.jboss.modules.ModuleIdentifier import org.jboss.modules.ModuleLoadException import org.jboss.modules.ModuleLoader import org.jboss.modules.ModuleSpec -class JBossClassloadingTest extends AgentTestRunner { +class JBossClassloadingTest extends InstrumentationSpecification { def "delegates to bootstrap class loader for agent classes"() { setup: def moduleFinders = new ModuleFinder[1] diff --git a/dd-java-agent/instrumentation/classloading/jsr14-testing/src/test/groovy/Jsr14ClassloadingTest.groovy b/dd-java-agent/instrumentation/classloading/jsr14-testing/src/test/groovy/Jsr14ClassloadingTest.groovy index f885aad7508..bd6a339feb6 100644 --- a/dd-java-agent/instrumentation/classloading/jsr14-testing/src/test/groovy/Jsr14ClassloadingTest.groovy +++ b/dd-java-agent/instrumentation/classloading/jsr14-testing/src/test/groovy/Jsr14ClassloadingTest.groovy @@ -1,7 +1,7 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import test.jsr14.Jsr14ClassLoader -class Jsr14ClassloadingTest extends AgentTestRunner { +class Jsr14ClassloadingTest extends InstrumentationSpecification { def "OSGI delegates to bootstrap class loader for agent classes using #args args"() { when: def clazz diff --git a/dd-java-agent/instrumentation/classloading/osgi-testing/src/test/groovy/OSGIClassloadingTest.groovy b/dd-java-agent/instrumentation/classloading/osgi-testing/src/test/groovy/OSGIClassloadingTest.groovy index 5c301977600..c5ecdf29785 100644 --- a/dd-java-agent/instrumentation/classloading/osgi-testing/src/test/groovy/OSGIClassloadingTest.groovy +++ b/dd-java-agent/instrumentation/classloading/osgi-testing/src/test/groovy/OSGIClassloadingTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.apache.felix.framework.BundleWiringImpl import org.eclipse.osgi.internal.debug.Debug import org.eclipse.osgi.internal.framework.EquinoxConfiguration @@ -7,7 +7,7 @@ import org.eclipse.osgi.internal.loader.ModuleClassLoader import org.eclipse.osgi.internal.loader.classpath.ClasspathManager import org.eclipse.osgi.storage.BundleInfo -class OSGIClassloadingTest extends AgentTestRunner { +class OSGIClassloadingTest extends InstrumentationSpecification { def "OSGI delegates to bootstrap class loader for agent classes #loaderName using #args args"() { when: def clazz diff --git a/dd-java-agent/instrumentation/classloading/src/test/groovy/ClassloadingTest.groovy b/dd-java-agent/instrumentation/classloading/src/test/groovy/ClassloadingTest.groovy index c35e49c1c2a..65cfee15002 100644 --- a/dd-java-agent/instrumentation/classloading/src/test/groovy/ClassloadingTest.groovy +++ b/dd-java-agent/instrumentation/classloading/src/test/groovy/ClassloadingTest.groovy @@ -1,6 +1,6 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification -class ClassloadingTest extends AgentTestRunner { +class ClassloadingTest extends InstrumentationSpecification { def "delegates to bootstrap class loader for agent classes"() { setup: def classLoader = new NonDelegatingURLClassLoader() diff --git a/dd-java-agent/instrumentation/classloading/tomcat-testing/src/test/groovy/TomcatClassloadingTest.groovy b/dd-java-agent/instrumentation/classloading/tomcat-testing/src/test/groovy/TomcatClassloadingTest.groovy index 8ddf66f9c8d..fbe685fbacd 100644 --- a/dd-java-agent/instrumentation/classloading/tomcat-testing/src/test/groovy/TomcatClassloadingTest.groovy +++ b/dd-java-agent/instrumentation/classloading/tomcat-testing/src/test/groovy/TomcatClassloadingTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.GlobalTracer import org.apache.catalina.WebResource import org.apache.catalina.WebResourceRoot import org.apache.catalina.loader.ParallelWebappClassLoader -class TomcatClassloadingTest extends AgentTestRunner { +class TomcatClassloadingTest extends InstrumentationSpecification { WebResourceRoot resources = Mock(WebResourceRoot) { getResource(_) >> Mock(WebResource) diff --git a/dd-java-agent/instrumentation/commons-codec-1/src/test/groovy/datadog/trace/instrumentation/commonscodec/Base64CallSiteTest.groovy b/dd-java-agent/instrumentation/commons-codec-1/src/test/groovy/datadog/trace/instrumentation/commonscodec/Base64CallSiteTest.groovy index a710e1bd439..057bc271554 100644 --- a/dd-java-agent/instrumentation/commons-codec-1/src/test/groovy/datadog/trace/instrumentation/commonscodec/Base64CallSiteTest.groovy +++ b/dd-java-agent/instrumentation/commons-codec-1/src/test/groovy/datadog/trace/instrumentation/commonscodec/Base64CallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.commonscodec -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.CodecModule import foo.bar.TestBase64CallSiteSuite @@ -8,7 +8,7 @@ import groovy.transform.CompileDynamic import org.apache.commons.codec.binary.Base64 @CompileDynamic -class Base64CallSiteTest extends AgentTestRunner { +class Base64CallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/FileItemInstrumentationTest.groovy b/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/FileItemInstrumentationTest.groovy index 44b513f413e..a69cb8a3bc5 100644 --- a/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/FileItemInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/FileItemInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule @@ -6,7 +6,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentTracer import datadog.trace.bootstrap.instrumentation.api.TagContext import foo.bar.smoketest.MockFileItem -class FileItemInstrumentationTest extends AgentTestRunner { +class FileItemInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/FileItemIteratorInstrumentationTest.groovy b/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/FileItemIteratorInstrumentationTest.groovy index 4d9cff0da59..8b7ff064dd7 100644 --- a/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/FileItemIteratorInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/FileItemIteratorInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule @@ -7,7 +7,7 @@ import datadog.trace.bootstrap.instrumentation.api.TagContext import foo.bar.smoketest.MockFileItemIterator import foo.bar.smoketest.MockFileItemStream -class FileItemIteratorInstrumentationTest extends AgentTestRunner { +class FileItemIteratorInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/FileItemStreamInstrumentationTest.groovy b/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/FileItemStreamInstrumentationTest.groovy index a8aa8bdff3c..23c52e9854f 100644 --- a/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/FileItemStreamInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/FileItemStreamInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule @@ -6,7 +6,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentTracer import datadog.trace.bootstrap.instrumentation.api.TagContext import foo.bar.smoketest.MockFileItemStream -class FileItemStreamInstrumentationTest extends AgentTestRunner { +class FileItemStreamInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/MultipartInstrumentationTest.groovy b/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/MultipartInstrumentationTest.groovy index 4e9a90ad393..f518c3bd5ad 100644 --- a/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/MultipartInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/MultipartInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -7,7 +7,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentTracer import datadog.trace.bootstrap.instrumentation.api.TagContext -class MultipartInstrumentationTest extends AgentTestRunner { +class MultipartInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/ServletFileUploadInstrumentationTest.groovy b/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/ServletFileUploadInstrumentationTest.groovy index 9cc3ddd8123..da688cd1b17 100644 --- a/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/ServletFileUploadInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/commons-fileupload/src/test/groovy/ServletFileUploadInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -11,7 +11,7 @@ import org.apache.commons.fileupload.FileItemIterator import org.apache.commons.fileupload.disk.DiskFileItemFactory import org.apache.commons.fileupload.servlet.ServletFileUpload -class ServletFileUploadInstrumentationTest extends AgentTestRunner { +class ServletFileUploadInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/commons-httpclient-2/src/test/groovy/IastCommonsHttpClientInstrumentationTest.groovy b/dd-java-agent/instrumentation/commons-httpclient-2/src/test/groovy/IastCommonsHttpClientInstrumentationTest.groovy index 1513c811159..28c5b56ad46 100644 --- a/dd-java-agent/instrumentation/commons-httpclient-2/src/test/groovy/IastCommonsHttpClientInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/commons-httpclient-2/src/test/groovy/IastCommonsHttpClientInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import datadog.trace.api.iast.sink.SsrfModule @@ -9,7 +9,7 @@ import spock.lang.Shared import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer -class IastCommonsHttpClientInstrumentationTest extends AgentTestRunner { +class IastCommonsHttpClientInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/commons-lang-2/src/test/groovy/datadog/trace/instrumentation/commonslang/StringEscapeUtilsCallSiteTest.groovy b/dd-java-agent/instrumentation/commons-lang-2/src/test/groovy/datadog/trace/instrumentation/commonslang/StringEscapeUtilsCallSiteTest.groovy index 9213ca96c7e..eb150cdeb6f 100644 --- a/dd-java-agent/instrumentation/commons-lang-2/src/test/groovy/datadog/trace/instrumentation/commonslang/StringEscapeUtilsCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/commons-lang-2/src/test/groovy/datadog/trace/instrumentation/commonslang/StringEscapeUtilsCallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.commonslang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import foo.bar.TestStringEscapeUtilsSuite @@ -11,7 +11,7 @@ import static datadog.trace.api.iast.VulnerabilityMarks.XSS_MARK import static datadog.trace.api.iast.VulnerabilityMarks.EMAIL_HTML_INJECTION_MARK @CompileDynamic -class StringEscapeUtilsCallSiteTest extends AgentTestRunner { +class StringEscapeUtilsCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/commons-lang-3/src/test/groovy/datadog/trace/instrumentation/commonslang3/StringEscapeUtilsCallSiteTest.groovy b/dd-java-agent/instrumentation/commons-lang-3/src/test/groovy/datadog/trace/instrumentation/commonslang3/StringEscapeUtilsCallSiteTest.groovy index 3ae8ade16e6..f5d6664400c 100644 --- a/dd-java-agent/instrumentation/commons-lang-3/src/test/groovy/datadog/trace/instrumentation/commonslang3/StringEscapeUtilsCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/commons-lang-3/src/test/groovy/datadog/trace/instrumentation/commonslang3/StringEscapeUtilsCallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.commonslang3 -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.VulnerabilityMarks import datadog.trace.api.iast.propagation.PropagationModule @@ -8,7 +8,7 @@ import foo.bar.TestStringEscapeUtilsSuite import groovy.transform.CompileDynamic @CompileDynamic -class StringEscapeUtilsCallSiteTest extends AgentTestRunner { +class StringEscapeUtilsCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/commons-text/src/test/groovy/datadog/trace/instrumentation/commonstext/StringEscapeUtilsCallSiteTest.groovy b/dd-java-agent/instrumentation/commons-text/src/test/groovy/datadog/trace/instrumentation/commonstext/StringEscapeUtilsCallSiteTest.groovy index 20c969aeb52..5c49256c016 100644 --- a/dd-java-agent/instrumentation/commons-text/src/test/groovy/datadog/trace/instrumentation/commonstext/StringEscapeUtilsCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/commons-text/src/test/groovy/datadog/trace/instrumentation/commonstext/StringEscapeUtilsCallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.commonstext -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.VulnerabilityMarks import datadog.trace.api.iast.propagation.PropagationModule @@ -8,7 +8,7 @@ import foo.bar.TestStringEscapeUtilsSuite import groovy.transform.CompileDynamic @CompileDynamic -class StringEscapeUtilsCallSiteTest extends AgentTestRunner { +class StringEscapeUtilsCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/cucumber/src/test/groovy/CucumberTest.groovy b/dd-java-agent/instrumentation/cucumber/src/test/groovy/CucumberTest.groovy index 135558ffb86..66afe951f5b 100644 --- a/dd-java-agent/instrumentation/cucumber/src/test/groovy/CucumberTest.groovy +++ b/dd-java-agent/instrumentation/cucumber/src/test/groovy/CucumberTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.ListWriterAssert import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.api.config.CiVisibilityConfig @@ -13,7 +13,7 @@ import org.junit.platform.suite.engine.SuiteTestEngine import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass -class CucumberTest extends AgentTestRunner { +class CucumberTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/cxf-2.1/build.gradle b/dd-java-agent/instrumentation/cxf-2.1/build.gradle index fc93e8a95a1..20bb0d04ca5 100644 --- a/dd-java-agent/instrumentation/cxf-2.1/build.gradle +++ b/dd-java-agent/instrumentation/cxf-2.1/build.gradle @@ -53,7 +53,7 @@ addTestSuiteForDir('cxf3LatestDepTest', 'test') dependencies { compileOnly group: 'org.apache.cxf', name: 'cxf-api', version: '2.1' - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testImplementation group: 'org.apache.cxf', name: 'cxf-rt-frontend-jaxrs', version: '3.0.0' diff --git a/dd-java-agent/instrumentation/cxf-2.1/src/latestDepTest/groovy/CxfContextPropagationTest.groovy b/dd-java-agent/instrumentation/cxf-2.1/src/latestDepTest/groovy/CxfContextPropagationTest.groovy index cdb32555132..27443eafb96 100644 --- a/dd-java-agent/instrumentation/cxf-2.1/src/latestDepTest/groovy/CxfContextPropagationTest.groovy +++ b/dd-java-agent/instrumentation/cxf-2.1/src/latestDepTest/groovy/CxfContextPropagationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.OkHttpUtils import datadog.trace.agent.test.utils.TraceUtils import datadog.trace.api.DDSpanTypes @@ -12,7 +12,7 @@ import org.apache.cxf.transport.http_jetty.JettyHTTPDestination import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine import spock.lang.Shared -class CxfContextPropagationTest extends AgentTestRunner { +class CxfContextPropagationTest extends InstrumentationSpecification { @Shared Server server diff --git a/dd-java-agent/instrumentation/cxf-2.1/src/test/groovy/CxfContextPropagationTest.groovy b/dd-java-agent/instrumentation/cxf-2.1/src/test/groovy/CxfContextPropagationTest.groovy index 9125854d559..e58f49bde38 100644 --- a/dd-java-agent/instrumentation/cxf-2.1/src/test/groovy/CxfContextPropagationTest.groovy +++ b/dd-java-agent/instrumentation/cxf-2.1/src/test/groovy/CxfContextPropagationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.OkHttpUtils import datadog.trace.agent.test.utils.TraceUtils import datadog.trace.api.DDSpanTypes @@ -11,7 +11,7 @@ import org.apache.cxf.transport.http_jetty.JettyHTTPDestination import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine import spock.lang.Shared -class CxfContextPropagationTest extends AgentTestRunner { +class CxfContextPropagationTest extends InstrumentationSpecification { @Shared Server server diff --git a/dd-java-agent/instrumentation/datanucleus-4/src/test/groovy/DatanucleusTest.groovy b/dd-java-agent/instrumentation/datanucleus-4/src/test/groovy/DatanucleusTest.groovy index 99718ec7f7f..595ef5220f5 100644 --- a/dd-java-agent/instrumentation/datanucleus-4/src/test/groovy/DatanucleusTest.groovy +++ b/dd-java-agent/instrumentation/datanucleus-4/src/test/groovy/DatanucleusTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags @@ -14,7 +14,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace /** * Tests datanucleus from the persistence manager. These eventually call the instrumented classes */ -class DatanucleusTest extends AgentTestRunner { +class DatanucleusTest extends InstrumentationSpecification { PersistenceManagerFactory factory PersistenceManager persistenceManager diff --git a/dd-java-agent/instrumentation/dropwizard/build.gradle b/dd-java-agent/instrumentation/dropwizard/build.gradle index 31f285fcf71..b51df8d5a3f 100644 --- a/dd-java-agent/instrumentation/dropwizard/build.gradle +++ b/dd-java-agent/instrumentation/dropwizard/build.gradle @@ -7,7 +7,7 @@ dependencies { testImplementation project(':dd-java-agent:instrumentation:servlet:request-3') // Don't want to conflict with jetty from the test server. - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } diff --git a/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/test/groovy/ViewRenderTest.groovy b/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/test/groovy/ViewRenderTest.groovy index 220b74c0ad5..c3f7474ab7d 100644 --- a/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/test/groovy/ViewRenderTest.groovy +++ b/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/test/groovy/ViewRenderTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import io.dropwizard.views.View import io.dropwizard.views.freemarker.FreemarkerViewRenderer @@ -10,7 +10,7 @@ import static datadog.trace.agent.test.asserts.ListWriterAssert.assertTraces import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class ViewRenderTest extends AgentTestRunner { +class ViewRenderTest extends InstrumentationSpecification { def "render #template succeeds with span"() { setup: diff --git a/dd-java-agent/instrumentation/elasticsearch/rest-5/src/latestDepTest/groovy/Elasticsearch6RestClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/rest-5/src/latestDepTest/groovy/Elasticsearch6RestClientTest.groovy index 012a4aa4c30..fdfeb3de76b 100644 --- a/dd-java-agent/instrumentation/elasticsearch/rest-5/src/latestDepTest/groovy/Elasticsearch6RestClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/rest-5/src/latestDepTest/groovy/Elasticsearch6RestClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -19,7 +19,7 @@ import org.elasticsearch.transport.Netty4Plugin import spock.lang.Shared @Flaky -class Elasticsearch6RestClientTest extends AgentTestRunner { +class Elasticsearch6RestClientTest extends InstrumentationSpecification { @Shared TransportAddress httpTransportAddress @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/rest-6.4/src/latestDepTest/groovy/Elasticsearch6RestClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/rest-6.4/src/latestDepTest/groovy/Elasticsearch6RestClientTest.groovy index 72fbcc66a21..a1a05791cf1 100644 --- a/dd-java-agent/instrumentation/elasticsearch/rest-6.4/src/latestDepTest/groovy/Elasticsearch6RestClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/rest-6.4/src/latestDepTest/groovy/Elasticsearch6RestClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -21,7 +21,7 @@ import org.elasticsearch.transport.Netty4Plugin import spock.lang.Shared @Flaky -class Elasticsearch6RestClientTest extends AgentTestRunner { +class Elasticsearch6RestClientTest extends InstrumentationSpecification { @Shared TransportAddress httpTransportAddress diff --git a/dd-java-agent/instrumentation/elasticsearch/rest-6.4/src/test/groovy/Elasticsearch6RestClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/rest-6.4/src/test/groovy/Elasticsearch6RestClientTest.groovy index bc95893a81a..b7eaa4ab9e0 100644 --- a/dd-java-agent/instrumentation/elasticsearch/rest-6.4/src/test/groovy/Elasticsearch6RestClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/rest-6.4/src/test/groovy/Elasticsearch6RestClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -19,7 +19,7 @@ import org.elasticsearch.transport.Netty4Plugin import spock.lang.Shared @Flaky -class Elasticsearch6RestClientTest extends AgentTestRunner { +class Elasticsearch6RestClientTest extends InstrumentationSpecification { @Shared TransportAddress httpTransportAddress @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/rest-7/src/test/groovy/Elasticsearch7RestClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/rest-7/src/test/groovy/Elasticsearch7RestClientTest.groovy index e1f527a01f9..0247f543985 100644 --- a/dd-java-agent/instrumentation/elasticsearch/rest-7/src/test/groovy/Elasticsearch7RestClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/rest-7/src/test/groovy/Elasticsearch7RestClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import groovy.json.JsonSlurper @@ -23,7 +23,7 @@ import java.util.concurrent.CountDownLatch import static java.util.concurrent.TimeUnit.SECONDS -class Elasticsearch7RestClientTest extends AgentTestRunner { +class Elasticsearch7RestClientTest extends InstrumentationSpecification { @Shared TransportAddress httpTransportAddress @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/Elasticsearch2NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/Elasticsearch2NodeClientTest.groovy index 4d47317f5a4..59bea7669e1 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/Elasticsearch2NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/Elasticsearch2NodeClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -15,7 +15,7 @@ import spock.lang.Shared import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace @Flaky -class Elasticsearch2NodeClientTest extends AgentTestRunner { +class Elasticsearch2NodeClientTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/Elasticsearch2TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/Elasticsearch2TransportClientTest.groovy index ff551609d6d..e04c446c81e 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/Elasticsearch2TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/Elasticsearch2TransportClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -17,7 +17,7 @@ import spock.lang.Shared import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace @Flaky -class Elasticsearch2TransportClientTest extends AgentTestRunner { +class Elasticsearch2TransportClientTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy index a3149ecc0c1..2e98f8166b5 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/springdata/Elasticsearch2SpringRepositoryTest.groovy @@ -1,7 +1,7 @@ package springdata -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -13,7 +13,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan @Flaky -class Elasticsearch2SpringRepositoryTest extends AgentTestRunner { +class Elasticsearch2SpringRepositoryTest extends InstrumentationSpecification { @Shared ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config) diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy index d28c3ea3f86..62b1b909f07 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-2/src/latestDepTest/groovy/springdata/Elasticsearch2SpringTemplateTest.groovy @@ -1,7 +1,7 @@ package springdata -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -23,7 +23,7 @@ import spock.lang.Shared import java.util.concurrent.atomic.AtomicLong @Flaky -class Elasticsearch2SpringTemplateTest extends AgentTestRunner { +class Elasticsearch2SpringTemplateTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/Elasticsearch53NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/Elasticsearch53NodeClientTest.groovy index 1777faa87a8..06aedcae037 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/Elasticsearch53NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/Elasticsearch53NodeClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -16,7 +16,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static org.elasticsearch.cluster.ClusterName.CLUSTER_NAME_SETTING @Flaky -class Elasticsearch53NodeClientTest extends AgentTestRunner { +class Elasticsearch53NodeClientTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/Elasticsearch53TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/Elasticsearch53TransportClientTest.groovy index 330e6d112bc..cf2afb15466 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/Elasticsearch53TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/Elasticsearch53TransportClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -21,7 +21,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static org.elasticsearch.cluster.ClusterName.CLUSTER_NAME_SETTING @Flaky -class Elasticsearch53TransportClientTest extends AgentTestRunner { +class Elasticsearch53TransportClientTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringRepositoryTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringRepositoryTest.groovy index 7ae84727afa..c65155597cc 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringRepositoryTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringRepositoryTest.groovy @@ -1,6 +1,6 @@ package springdata -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -17,7 +17,7 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.SPRING_DATA_RE import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan @Flaky -class Elasticsearch53SpringRepositoryTest extends AgentTestRunner { +class Elasticsearch53SpringRepositoryTest extends InstrumentationSpecification { // Setting up appContext & repo with @Shared doesn't allow // spring-data instrumentation to applied. // To change the timing without adding ugly checks everywhere - diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringTemplateTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringTemplateTest.groovy index 25665b5c3b2..b7c2664da3b 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringTemplateTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-5.3/src/test/groovy/springdata/Elasticsearch53SpringTemplateTest.groovy @@ -1,7 +1,7 @@ package springdata import com.google.common.collect.ImmutableSet -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -28,7 +28,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static org.elasticsearch.cluster.ClusterName.CLUSTER_NAME_SETTING @Flaky -class Elasticsearch53SpringTemplateTest extends AgentTestRunner { +class Elasticsearch53SpringTemplateTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds // Some ES actions are not caused by clients and seem to just happen from time to time. diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-5/src/test/groovy/Elasticsearch5NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-5/src/test/groovy/Elasticsearch5NodeClientTest.groovy index dd1e3c70205..198ed0e0b3b 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-5/src/test/groovy/Elasticsearch5NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-5/src/test/groovy/Elasticsearch5NodeClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -16,7 +16,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static org.elasticsearch.cluster.ClusterName.CLUSTER_NAME_SETTING @Flaky -class Elasticsearch5NodeClientTest extends AgentTestRunner { +class Elasticsearch5NodeClientTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-5/src/test/groovy/Elasticsearch5TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-5/src/test/groovy/Elasticsearch5TransportClientTest.groovy index 48b96c5e3c8..f9e1637244a 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-5/src/test/groovy/Elasticsearch5TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-5/src/test/groovy/Elasticsearch5TransportClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -21,7 +21,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static org.elasticsearch.cluster.ClusterName.CLUSTER_NAME_SETTING @Flaky -class Elasticsearch5TransportClientTest extends AgentTestRunner { +class Elasticsearch5TransportClientTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-6/src/test/groovy/Elasticsearch6NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-6/src/test/groovy/Elasticsearch6NodeClientTest.groovy index a08d1c76438..3845d1873eb 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-6/src/test/groovy/Elasticsearch6NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-6/src/test/groovy/Elasticsearch6NodeClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -15,7 +15,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static org.elasticsearch.cluster.ClusterName.CLUSTER_NAME_SETTING @Flaky -class Elasticsearch6NodeClientTest extends AgentTestRunner { +class Elasticsearch6NodeClientTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-6/src/test/groovy/Elasticsearch6TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-6/src/test/groovy/Elasticsearch6TransportClientTest.groovy index a5a0a30a490..6df99841620 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-6/src/test/groovy/Elasticsearch6TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-6/src/test/groovy/Elasticsearch6TransportClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -20,7 +20,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static org.elasticsearch.cluster.ClusterName.CLUSTER_NAME_SETTING @Flaky -class Elasticsearch6TransportClientTest extends AgentTestRunner { +class Elasticsearch6TransportClientTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-7.3/src/test/groovy/Elasticsearch73NodeClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-7.3/src/test/groovy/Elasticsearch73NodeClientTest.groovy index e1118042400..6d9e5b44900 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-7.3/src/test/groovy/Elasticsearch73NodeClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-7.3/src/test/groovy/Elasticsearch73NodeClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -15,7 +15,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static org.elasticsearch.cluster.ClusterName.CLUSTER_NAME_SETTING @Flaky -class Elasticsearch73NodeClientTest extends AgentTestRunner { +class Elasticsearch73NodeClientTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/elasticsearch/transport-7.3/src/test/groovy/Elasticsearch73TransportClientTest.groovy b/dd-java-agent/instrumentation/elasticsearch/transport-7.3/src/test/groovy/Elasticsearch73TransportClientTest.groovy index 439a9ec18fd..32a4ea411cd 100644 --- a/dd-java-agent/instrumentation/elasticsearch/transport-7.3/src/test/groovy/Elasticsearch73TransportClientTest.groovy +++ b/dd-java-agent/instrumentation/elasticsearch/transport-7.3/src/test/groovy/Elasticsearch73TransportClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -20,7 +20,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static org.elasticsearch.cluster.ClusterName.CLUSTER_NAME_SETTING @Flaky -class Elasticsearch73TransportClientTest extends AgentTestRunner { +class Elasticsearch73TransportClientTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/enable-wallclock-profiling/src/test/groovy/RegistrationForkedTest.groovy b/dd-java-agent/instrumentation/enable-wallclock-profiling/src/test/groovy/RegistrationForkedTest.groovy index 2ee71c7f866..517dda1bc2e 100644 --- a/dd-java-agent/instrumentation/enable-wallclock-profiling/src/test/groovy/RegistrationForkedTest.groovy +++ b/dd-java-agent/instrumentation/enable-wallclock-profiling/src/test/groovy/RegistrationForkedTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import io.netty.channel.nio.NioEventLoopGroup import java.util.concurrent.CountDownLatch @@ -7,7 +7,7 @@ import java.util.concurrent.ExecutorService import java.util.concurrent.Executors import java.util.concurrent.TimeUnit -class RegistrationForkedTest extends AgentTestRunner { +class RegistrationForkedTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/exception-profiling/build.gradle b/dd-java-agent/instrumentation/exception-profiling/build.gradle index 925b88fa4a0..070f65df6bc 100644 --- a/dd-java-agent/instrumentation/exception-profiling/build.gradle +++ b/dd-java-agent/instrumentation/exception-profiling/build.gradle @@ -31,7 +31,6 @@ forbiddenApisMain_java11 { } test { - useJUnit() useJUnitPlatform() } diff --git a/dd-java-agent/instrumentation/exception-profiling/src/test/groovy/datadog/trace/bootstrap/instrumentation/jfr/exceptions/KnownExcludesForkedTest.groovy b/dd-java-agent/instrumentation/exception-profiling/src/test/groovy/datadog/trace/bootstrap/instrumentation/jfr/exceptions/KnownExcludesForkedTest.groovy index 4dd40a0cb28..98ff9f0a89d 100644 --- a/dd-java-agent/instrumentation/exception-profiling/src/test/groovy/datadog/trace/bootstrap/instrumentation/jfr/exceptions/KnownExcludesForkedTest.groovy +++ b/dd-java-agent/instrumentation/exception-profiling/src/test/groovy/datadog/trace/bootstrap/instrumentation/jfr/exceptions/KnownExcludesForkedTest.groovy @@ -1,6 +1,6 @@ import com.zaxxer.hikari.pool.ProxyLeakTask import datadog.environment.JavaVirtualMachine -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.jfr.InstrumentationBasedProfiling import jdk.jfr.Recording import org.openjdk.jmc.common.item.Attribute @@ -16,7 +16,7 @@ import java.nio.file.Files @Requires({ !JavaVirtualMachine.isJ9() }) -class KnownExcludesForkedTest extends AgentTestRunner { +class KnownExcludesForkedTest extends InstrumentationSpecification { private static final IAttribute TYPE = Attribute.attr("type", "type", "Exception type", UnitLookup.PLAIN_TEXT) diff --git a/dd-java-agent/instrumentation/exception-profiling/src/test/java/datadog/trace/bootstrap/instrumentation/jfr/exceptions/ExceptionHistogramTest.java b/dd-java-agent/instrumentation/exception-profiling/src/test/java/datadog/trace/bootstrap/instrumentation/jfr/exceptions/ExceptionHistogramTest.java index 5da9ab5bc43..f5823a5bebe 100644 --- a/dd-java-agent/instrumentation/exception-profiling/src/test/java/datadog/trace/bootstrap/instrumentation/jfr/exceptions/ExceptionHistogramTest.java +++ b/dd-java-agent/instrumentation/exception-profiling/src/test/java/datadog/trace/bootstrap/instrumentation/jfr/exceptions/ExceptionHistogramTest.java @@ -17,7 +17,6 @@ import java.util.Map; import java.util.Properties; import java.util.concurrent.Phaser; -import java.util.stream.Stream; import jdk.jfr.FlightRecorder; import jdk.jfr.Recording; import org.junit.jupiter.api.AfterEach; @@ -75,7 +74,7 @@ public void setup() { final Properties properties = new Properties(); properties.setProperty(PROFILING_EXCEPTION_HISTOGRAM_TOP_ITEMS, Integer.toString(MAX_ITEMS)); - instance = new ExceptionHistogram(Config.get(properties)); + instance = ExceptionHistogramTestBridge.create(Config.get(properties)); } @AfterEach @@ -84,7 +83,7 @@ public void tearDown() { snapshot.close(); } recording.close(); - instance.deregister(); + ExceptionHistogramTestBridge.deregister(instance); } @Test @@ -92,25 +91,24 @@ public void testFirstHitConcurrent() { Phaser phaser = new Phaser(2); ExceptionHistogram histogram = - new ExceptionHistogram(Config.get()) { - @Override - void emitEvents(Stream> items) { - super.emitEvents(items); - // #1 - histo sums are reset but 0 entries not removed yet - phaser.arriveAndAwaitAdvance(); - // #2 - safe to leave the emit() method - phaser.arriveAndAwaitAdvance(); - } - }; + ExceptionHistogramTestBridge.create( + Config.get(), + () -> { + // below code is executed after emitEvents() returns: + // #1 - histo sums are reset but 0 entries not removed yet + phaser.arriveAndAwaitAdvance(); + // #2 - safe to leave the emit() method + phaser.arriveAndAwaitAdvance(); + }); // don't want the JFR integration active here - histogram.deregister(); + ExceptionHistogramTestBridge.deregister(histogram); for (int i = 0; i < 5; i++) { boolean firstHit = histogram.record(new NullPointerException()); assertEquals(i == 0, firstHit); } // start emitting in a separate thread - new Thread(histogram::doEmit).start(); + new Thread(() -> ExceptionHistogramTestBridge.doEmit(histogram)).start(); // wait for #1 - this is the point where data race can happen if new exceptions are recording // during 'emit()' phaser.arriveAndAwaitAdvance(); @@ -189,12 +187,12 @@ public void testExceptionsRecorded() @Test public void testHistogramSizeIsLimited() throws IOException, CouldNotLoadRecordingException, InterruptedException { - instance.deregister(); + ExceptionHistogramTestBridge.deregister(instance); final Properties properties = new Properties(); properties.setProperty( PROFILING_EXCEPTION_HISTOGRAM_MAX_COLLECTION_SIZE, Integer.toString(MAX_SIZE)); - instance = new ExceptionHistogram(Config.get(properties)); + instance = ExceptionHistogramTestBridge.create(Config.get(properties)); // Exceptions are written in alphabetical order writeExceptions( diff --git a/dd-java-agent/instrumentation/exception-profiling/src/test/java/datadog/trace/bootstrap/instrumentation/jfr/exceptions/ExceptionHistogramTestBridge.java b/dd-java-agent/instrumentation/exception-profiling/src/test/java/datadog/trace/bootstrap/instrumentation/jfr/exceptions/ExceptionHistogramTestBridge.java new file mode 100644 index 00000000000..4fcb63ea1d8 --- /dev/null +++ b/dd-java-agent/instrumentation/exception-profiling/src/test/java/datadog/trace/bootstrap/instrumentation/jfr/exceptions/ExceptionHistogramTestBridge.java @@ -0,0 +1,40 @@ +package datadog.trace.bootstrap.instrumentation.jfr.exceptions; + +import datadog.trace.api.Config; +import java.util.stream.Stream; + +/** + * {@link ExceptionHistogramTest} is loaded by the application classloader (it has to be, in order + * to be discovered by JUnit). {@link ExceptionHistogram} is loaded by the bootstrap classloader. + * + *

As the test and the tested class are loaded by different CLs, the test cannot call + * package-private methods of the tested class (even though the package name is the same). + * + *

This class is loaded by the bootstrap classloader as well, and since its methods are public, + * they can be called by the test, and in turn they can call the package-private methods of the + * tested class, since classloader is the same. + */ +public class ExceptionHistogramTestBridge { + + public static ExceptionHistogram create(final Config config) { + return new ExceptionHistogram(config); + } + + public static ExceptionHistogram create(final Config config, Runnable afterEmit) { + return new ExceptionHistogram(config) { + @Override + void emitEvents(Stream> items) { + super.emitEvents(items); + afterEmit.run(); + } + }; + } + + public static void doEmit(final ExceptionHistogram histogram) { + histogram.doEmit(); + } + + public static void deregister(final ExceptionHistogram histogram) { + histogram.deregister(); + } +} diff --git a/dd-java-agent/instrumentation/freemarker/freemarker-2.3.24/src/test/groovy/datadog/trace/instrumentation/freemarker/StringUtilCallSiteTest.groovy b/dd-java-agent/instrumentation/freemarker/freemarker-2.3.24/src/test/groovy/datadog/trace/instrumentation/freemarker/StringUtilCallSiteTest.groovy index 065a3e700a7..a15d697cb27 100644 --- a/dd-java-agent/instrumentation/freemarker/freemarker-2.3.24/src/test/groovy/datadog/trace/instrumentation/freemarker/StringUtilCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/freemarker/freemarker-2.3.24/src/test/groovy/datadog/trace/instrumentation/freemarker/StringUtilCallSiteTest.groovy @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.freemarker -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.VulnerabilityMarks import datadog.trace.api.iast.propagation.PropagationModule import foo.bar.TestStringUtilSuite -class StringUtilCallSiteTest extends AgentTestRunner { +class StringUtilCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/freemarker/freemarker-2.3.24/src/test/groovy/datadog/trace/instrumentation/freemarker24/DollarVariableInstrumentationTest.groovy b/dd-java-agent/instrumentation/freemarker/freemarker-2.3.24/src/test/groovy/datadog/trace/instrumentation/freemarker24/DollarVariableInstrumentationTest.groovy index bb85fe021d6..e516aefa5e3 100644 --- a/dd-java-agent/instrumentation/freemarker/freemarker-2.3.24/src/test/groovy/datadog/trace/instrumentation/freemarker24/DollarVariableInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/freemarker/freemarker-2.3.24/src/test/groovy/datadog/trace/instrumentation/freemarker24/DollarVariableInstrumentationTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.freemarker24 -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.XssModule import freemarker.template.Configuration @@ -8,7 +8,7 @@ import freemarker.template.SimpleHash import freemarker.template.Template import freemarker.template.TemplateHashModel -class DollarVariableInstrumentationTest extends AgentTestRunner { +class DollarVariableInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/freemarker/freemarker-2.3.24/src/test/groovy/datadog/trace/instrumentation/freemarker24/ObjectWrapperInstrumentationTest.groovy b/dd-java-agent/instrumentation/freemarker/freemarker-2.3.24/src/test/groovy/datadog/trace/instrumentation/freemarker24/ObjectWrapperInstrumentationTest.groovy index f1db1a26a19..25fe619ab01 100644 --- a/dd-java-agent/instrumentation/freemarker/freemarker-2.3.24/src/test/groovy/datadog/trace/instrumentation/freemarker24/ObjectWrapperInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/freemarker/freemarker-2.3.24/src/test/groovy/datadog/trace/instrumentation/freemarker24/ObjectWrapperInstrumentationTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.freemarker24 -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule @@ -8,7 +8,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentTracer import datadog.trace.bootstrap.instrumentation.api.TagContext import freemarker.template.DefaultObjectWrapper -class ObjectWrapperInstrumentationTest extends AgentTestRunner { +class ObjectWrapperInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/freemarker/freemarker-2.3.9/src/test/groovy/datadog/trace/instrumentation/freemarker9/DollarVariableInstrumentationTest.groovy b/dd-java-agent/instrumentation/freemarker/freemarker-2.3.9/src/test/groovy/datadog/trace/instrumentation/freemarker9/DollarVariableInstrumentationTest.groovy index cdcc9bf9a86..9694d7e28c5 100644 --- a/dd-java-agent/instrumentation/freemarker/freemarker-2.3.9/src/test/groovy/datadog/trace/instrumentation/freemarker9/DollarVariableInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/freemarker/freemarker-2.3.9/src/test/groovy/datadog/trace/instrumentation/freemarker9/DollarVariableInstrumentationTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.freemarker9 -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.XssModule import freemarker.template.Configuration @@ -8,7 +8,7 @@ import freemarker.template.SimpleHash import freemarker.template.Template import freemarker.template.TemplateHashModel -class DollarVariableInstrumentationTest extends AgentTestRunner { +class DollarVariableInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/graphql-java/graphql-java-14.0/src/test/groovy/GraphQLInstallationTest.groovy b/dd-java-agent/instrumentation/graphql-java/graphql-java-14.0/src/test/groovy/GraphQLInstallationTest.groovy index fa60b918bc6..cf9800ecb53 100644 --- a/dd-java-agent/instrumentation/graphql-java/graphql-java-14.0/src/test/groovy/GraphQLInstallationTest.groovy +++ b/dd-java-agent/instrumentation/graphql-java/graphql-java-14.0/src/test/groovy/GraphQLInstallationTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.graphqljava14.GraphQLInstrumentation import graphql.execution.instrumentation.ChainedInstrumentation import graphql.execution.instrumentation.SimpleInstrumentation -class GraphQLInstallationTest extends AgentTestRunner { +class GraphQLInstallationTest extends InstrumentationSpecification { static class TestInst extends SimpleInstrumentation {} def "install GraphQL instrumentation when there is no other instrumentation"() { diff --git a/dd-java-agent/instrumentation/graphql-java/graphql-java-14.0/src/test/groovy/GraphQLQuerySanitizerTest.groovy b/dd-java-agent/instrumentation/graphql-java/graphql-java-14.0/src/test/groovy/GraphQLQuerySanitizerTest.groovy index a2bb3f8b838..8b1d14fa084 100644 --- a/dd-java-agent/instrumentation/graphql-java/graphql-java-14.0/src/test/groovy/GraphQLQuerySanitizerTest.groovy +++ b/dd-java-agent/instrumentation/graphql-java/graphql-java-14.0/src/test/groovy/GraphQLQuerySanitizerTest.groovy @@ -1,8 +1,8 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.graphqljava.GraphQLQuerySanitizer import graphql.parser.Parser -class GraphQLQuerySanitizerTest extends AgentTestRunner { +class GraphQLQuerySanitizerTest extends InstrumentationSpecification { private Parser parser = new Parser() def "sanitizes the use of a String literal in query"() { diff --git a/dd-java-agent/instrumentation/graphql-java/graphql-java-20.0/src/test/groovy/GraphQLInstallationTest.groovy b/dd-java-agent/instrumentation/graphql-java/graphql-java-20.0/src/test/groovy/GraphQLInstallationTest.groovy index d11c3b55d08..ae5707b85aa 100644 --- a/dd-java-agent/instrumentation/graphql-java/graphql-java-20.0/src/test/groovy/GraphQLInstallationTest.groovy +++ b/dd-java-agent/instrumentation/graphql-java/graphql-java-20.0/src/test/groovy/GraphQLInstallationTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.graphqljava20.GraphQLInstrumentation import graphql.execution.instrumentation.ChainedInstrumentation import graphql.execution.instrumentation.SimpleInstrumentation -class GraphQLInstallationTest extends AgentTestRunner { +class GraphQLInstallationTest extends InstrumentationSpecification { static class TestInst extends SimpleInstrumentation {} def "install GraphQL instrumentation when there is no other instrumentation"() { diff --git a/dd-java-agent/instrumentation/graphql-java/graphql-java-20.0/src/test/groovy/GraphQLQuerySanitizerTest.groovy b/dd-java-agent/instrumentation/graphql-java/graphql-java-20.0/src/test/groovy/GraphQLQuerySanitizerTest.groovy index a2bb3f8b838..8b1d14fa084 100644 --- a/dd-java-agent/instrumentation/graphql-java/graphql-java-20.0/src/test/groovy/GraphQLQuerySanitizerTest.groovy +++ b/dd-java-agent/instrumentation/graphql-java/graphql-java-20.0/src/test/groovy/GraphQLQuerySanitizerTest.groovy @@ -1,8 +1,8 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.graphqljava.GraphQLQuerySanitizer import graphql.parser.Parser -class GraphQLQuerySanitizerTest extends AgentTestRunner { +class GraphQLQuerySanitizerTest extends InstrumentationSpecification { private Parser parser = new Parser() def "sanitizes the use of a String literal in query"() { diff --git a/dd-java-agent/instrumentation/grizzly/grizzly-http-2.3.20/build.gradle b/dd-java-agent/instrumentation/grizzly/grizzly-http-2.3.20/build.gradle index 905d0663060..619cb320e31 100644 --- a/dd-java-agent/instrumentation/grizzly/grizzly-http-2.3.20/build.gradle +++ b/dd-java-agent/instrumentation/grizzly/grizzly-http-2.3.20/build.gradle @@ -25,7 +25,7 @@ dependencies { testImplementation group: 'org.glassfish.grizzly', name: 'grizzly-http-server', version: '2.3.20' testImplementation group: 'org.glassfish.jersey.containers', name: 'jersey-container-grizzly2-http', version: '2.18' testImplementation group: 'org.glassfish.jersey.media', name: 'jersey-media-multipart', version: '2.18' - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:jersey-2-appsec') latestDepTestImplementation group: 'org.glassfish.grizzly', name: 'grizzly-http-server', version: '2.3.20+' diff --git a/dd-java-agent/instrumentation/grizzly/grizzly-http-2.3.20/src/test/groovy/GrizzlyByteBodyInstrumentationTest.groovy b/dd-java-agent/instrumentation/grizzly/grizzly-http-2.3.20/src/test/groovy/GrizzlyByteBodyInstrumentationTest.groovy index 58aa140e0b1..c9abe1cd3fa 100644 --- a/dd-java-agent/instrumentation/grizzly/grizzly-http-2.3.20/src/test/groovy/GrizzlyByteBodyInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/grizzly/grizzly-http-2.3.20/src/test/groovy/GrizzlyByteBodyInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.gateway.Flow import datadog.trace.api.gateway.RequestContext import datadog.trace.api.gateway.RequestContextSlot @@ -21,7 +21,7 @@ import static datadog.trace.api.gateway.Events.EVENTS /** * @see GrizzlyByteBodyInstrumentation */ -class GrizzlyByteBodyInstrumentationTest extends AgentTestRunner { +class GrizzlyByteBodyInstrumentationTest extends InstrumentationSpecification { NIOInputStream nioInputStream = Class.forName('org.glassfish.grizzly.http.server.NIOInputStreamImpl').newInstance() HttpHeader mockHttpHeader = Mock() InputBuffer mockInputBuffer = Mock() diff --git a/dd-java-agent/instrumentation/grizzly/grizzly-http-2.3.20/src/test/groovy/GrizzlyCharBodyInstrumentationTest.groovy b/dd-java-agent/instrumentation/grizzly/grizzly-http-2.3.20/src/test/groovy/GrizzlyCharBodyInstrumentationTest.groovy index e41b3c282e3..8ab0d014c35 100644 --- a/dd-java-agent/instrumentation/grizzly/grizzly-http-2.3.20/src/test/groovy/GrizzlyCharBodyInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/grizzly/grizzly-http-2.3.20/src/test/groovy/GrizzlyCharBodyInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.gateway.Flow import datadog.trace.api.gateway.RequestContext import datadog.trace.api.gateway.RequestContextSlot @@ -19,7 +19,7 @@ import static datadog.trace.api.gateway.Events.EVENTS /** * @see GrizzlyCharBodyInstrumentation */ -class GrizzlyCharBodyInstrumentationTest extends AgentTestRunner { +class GrizzlyCharBodyInstrumentationTest extends InstrumentationSpecification { NIOReader nioReader = Class.forName('org.glassfish.grizzly.http.server.NIOReaderImpl').newInstance() HttpHeader mockHttpHeader = Mock() InputBuffer mockInputBuffer = Mock() diff --git a/dd-java-agent/instrumentation/grpc-1.5/src/test/groovy/UnwrapGrpcContextForkedTest.groovy b/dd-java-agent/instrumentation/grpc-1.5/src/test/groovy/UnwrapGrpcContextForkedTest.groovy index c231953819e..e688155f27c 100644 --- a/dd-java-agent/instrumentation/grpc-1.5/src/test/groovy/UnwrapGrpcContextForkedTest.groovy +++ b/dd-java-agent/instrumentation/grpc-1.5/src/test/groovy/UnwrapGrpcContextForkedTest.groovy @@ -1,8 +1,8 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.TaskWrapper import io.grpc.Context -class UnwrapGrpcContextForkedTest extends AgentTestRunner { +class UnwrapGrpcContextForkedTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/gson-1.6/src/test/groovy/datadog/trace/instrumentation/gson/JsonReaderInstrumentationTest.groovy b/dd-java-agent/instrumentation/gson-1.6/src/test/groovy/datadog/trace/instrumentation/gson/JsonReaderInstrumentationTest.groovy index 48065fceaaa..c40b78f12b3 100644 --- a/dd-java-agent/instrumentation/gson-1.6/src/test/groovy/datadog/trace/instrumentation/gson/JsonReaderInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/gson-1.6/src/test/groovy/datadog/trace/instrumentation/gson/JsonReaderInstrumentationTest.groovy @@ -2,11 +2,11 @@ package datadog.trace.instrumentation.gson import com.google.gson.Gson import com.google.gson.stream.JsonReader -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule -class JsonReaderInstrumentationTest extends AgentTestRunner { +class JsonReaderInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/guava-10/src/test/groovy/GuavaAsyncResultExtensionTest.groovy b/dd-java-agent/instrumentation/guava-10/src/test/groovy/GuavaAsyncResultExtensionTest.groovy index 1e60dc956f9..883e3cd1b71 100644 --- a/dd-java-agent/instrumentation/guava-10/src/test/groovy/GuavaAsyncResultExtensionTest.groovy +++ b/dd-java-agent/instrumentation/guava-10/src/test/groovy/GuavaAsyncResultExtensionTest.groovy @@ -1,5 +1,5 @@ import annotatedsample.GuavaTracedMethods -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import spock.lang.Shared @@ -8,7 +8,7 @@ import java.util.concurrent.ExecutionException import java.util.concurrent.ExecutorService import java.util.concurrent.Executors -class GuavaAsyncResultExtensionTest extends AgentTestRunner { +class GuavaAsyncResultExtensionTest extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/hibernate/core-3.3/src/test/groovy/AbstractHibernateTest.groovy b/dd-java-agent/instrumentation/hibernate/core-3.3/src/test/groovy/AbstractHibernateTest.groovy index 3a2f945d9ea..a38579ad25f 100644 --- a/dd-java-agent/instrumentation/hibernate/core-3.3/src/test/groovy/AbstractHibernateTest.groovy +++ b/dd-java-agent/instrumentation/hibernate/core-3.3/src/test/groovy/AbstractHibernateTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.hibernate.Session import org.hibernate.SessionFactory import org.hibernate.cfg.AnnotationConfiguration import spock.lang.Shared -abstract class AbstractHibernateTest extends AgentTestRunner { +abstract class AbstractHibernateTest extends InstrumentationSpecification { @Shared protected SessionFactory sessionFactory diff --git a/dd-java-agent/instrumentation/hibernate/core-4.0/src/test/groovy/AbstractHibernateTest.groovy b/dd-java-agent/instrumentation/hibernate/core-4.0/src/test/groovy/AbstractHibernateTest.groovy index beae75cf563..7d8cbbc3ced 100644 --- a/dd-java-agent/instrumentation/hibernate/core-4.0/src/test/groovy/AbstractHibernateTest.groovy +++ b/dd-java-agent/instrumentation/hibernate/core-4.0/src/test/groovy/AbstractHibernateTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.hibernate.Session import org.hibernate.SessionFactory import org.hibernate.cfg.Configuration import spock.lang.Shared -abstract class AbstractHibernateTest extends AgentTestRunner { +abstract class AbstractHibernateTest extends InstrumentationSpecification { @Shared protected SessionFactory sessionFactory diff --git a/dd-java-agent/instrumentation/hibernate/core-4.3/src/test/groovy/ProcedureCallTest.groovy b/dd-java-agent/instrumentation/hibernate/core-4.3/src/test/groovy/ProcedureCallTest.groovy index 13bbee71708..80acda2aa1e 100644 --- a/dd-java-agent/instrumentation/hibernate/core-4.3/src/test/groovy/ProcedureCallTest.groovy +++ b/dd-java-agent/instrumentation/hibernate/core-4.3/src/test/groovy/ProcedureCallTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import org.hibernate.Session @@ -16,7 +16,7 @@ import java.sql.Statement import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan -class ProcedureCallTest extends AgentTestRunner { +class ProcedureCallTest extends InstrumentationSpecification { @Override boolean useStrictTraceWrites() { diff --git a/dd-java-agent/instrumentation/hibernate/core-4.3/src/test/groovy/SpringJpaTest.groovy b/dd-java-agent/instrumentation/hibernate/core-4.3/src/test/groovy/SpringJpaTest.groovy index 5992fa38494..b16aaeb3d4e 100644 --- a/dd-java-agent/instrumentation/hibernate/core-4.3/src/test/groovy/SpringJpaTest.groovy +++ b/dd-java-agent/instrumentation/hibernate/core-4.3/src/test/groovy/SpringJpaTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky import org.springframework.context.annotation.AnnotationConfigApplicationContext @@ -12,7 +12,7 @@ import spring.hibernate.jpa.PersistenceConfig * Unfortunately this test verifies that our hibernate instrumentation doesn't currently work with Spring Data Repositories. */ @Flaky("https://github.com/DataDog/dd-trace-java/issues/4004") -class SpringJpaTest extends AgentTestRunner { +class SpringJpaTest extends InstrumentationSpecification { @Shared def context = new AnnotationConfigApplicationContext(PersistenceConfig) diff --git a/dd-java-agent/instrumentation/hystrix-1.4/src/test/groovy/HystrixTestRunner.groovy b/dd-java-agent/instrumentation/hystrix-1.4/src/test/groovy/HystrixTestRunner.groovy index 5b3c3090b76..f6369ba14ee 100644 --- a/dd-java-agent/instrumentation/hystrix-1.4/src/test/groovy/HystrixTestRunner.groovy +++ b/dd-java-agent/instrumentation/hystrix-1.4/src/test/groovy/HystrixTestRunner.groovy @@ -1,7 +1,7 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.hystrix.HystrixDecorator -abstract class HystrixTestRunner extends AgentTestRunner { +abstract class HystrixTestRunner extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/AnonymousClassesForkedTest.groovy b/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/AnonymousClassesForkedTest.groovy index 3fd548021ce..ec9dcd9bdb9 100644 --- a/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/AnonymousClassesForkedTest.groovy +++ b/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/AnonymousClassesForkedTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.tooling.bytebuddy.ClassFileLocators import datadog.trace.agent.tooling.bytebuddy.outline.OutlineTypeParser import datadog.trace.agent.tooling.bytebuddy.outline.FullTypeParser @@ -6,7 +6,7 @@ import datadog.trace.api.config.IastConfig import datadog.trace.instrumentation.iastinstrumenter.IastInstrumentation import net.bytebuddy.description.type.TypeDescription -class AnonymousClassesForkedTest extends AgentTestRunner { +class AnonymousClassesForkedTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/IastExclusionTrieTest.groovy b/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/IastExclusionTrieTest.groovy index c5f504054f8..ee4f06f5347 100644 --- a/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/IastExclusionTrieTest.groovy +++ b/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/IastExclusionTrieTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.iastinstrumenter.IastExclusionTrie import java.lang.reflect.Proxy -class IastExclusionTrieTest extends AgentTestRunner { +class IastExclusionTrieTest extends InstrumentationSpecification { private static final int STACK_FILTERED = 2 private static final int EXCLUDED = 1 diff --git a/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/IastInstrumentationForkedTest.groovy b/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/IastInstrumentationForkedTest.groovy index 3bbec69ea4d..d09ac644b1d 100644 --- a/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/IastInstrumentationForkedTest.groovy +++ b/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/IastInstrumentationForkedTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.tooling.InstrumenterModule import datadog.trace.api.Config import datadog.trace.api.ProductActivation @@ -7,7 +7,7 @@ import datadog.trace.api.config.IastConfig import datadog.trace.instrumentation.iastinstrumenter.IastInstrumentation import spock.lang.Shared -class IastInstrumentationForkedTest extends AgentTestRunner { +class IastInstrumentationForkedTest extends InstrumentationSpecification { @Shared boolean iastEnabled = false diff --git a/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/IastInstrumentationTest.groovy b/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/IastInstrumentationTest.groovy index d74fa48b5a8..6aac988c1af 100644 --- a/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/IastInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/IastInstrumentationTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.IastConfig import datadog.trace.instrumentation.iastinstrumenter.IastHardcodedSecretListener import datadog.trace.instrumentation.iastinstrumenter.IastInstrumentation import net.bytebuddy.description.type.TypeDescription -class IastInstrumentationTest extends AgentTestRunner { +class IastInstrumentationTest extends InstrumentationSpecification { void 'test Iast Instrumentation type matching'() { given: diff --git a/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/datadog/trace/instrumentation/iastinstrumenter/IastHardcodedSecretListenerTest.groovy b/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/datadog/trace/instrumentation/iastinstrumenter/IastHardcodedSecretListenerTest.groovy index 5fad1ae9ffc..556f20079f4 100644 --- a/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/datadog/trace/instrumentation/iastinstrumenter/IastHardcodedSecretListenerTest.groovy +++ b/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/datadog/trace/instrumentation/iastinstrumenter/IastHardcodedSecretListenerTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.iastinstrumenter -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.tooling.bytebuddy.csi.ConstantPool import datadog.trace.agent.tooling.iast.IastSecretClassReader import datadog.trace.api.iast.InstrumentationBridge @@ -8,7 +8,7 @@ import datadog.trace.api.iast.sink.HardcodedSecretModule import net.bytebuddy.description.type.TypeDescription import org.apache.commons.io.IOUtils -class IastHardcodedSecretListenerTest extends AgentTestRunner{ +class IastHardcodedSecretListenerTest extends InstrumentationSpecification{ void 'test onConstantPool'(){ diff --git a/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/datadog/trace/instrumentation/iastinstrumenter/SourceMapperImplTest.groovy b/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/datadog/trace/instrumentation/iastinstrumenter/SourceMapperImplTest.groovy index 9642bdf50b6..b223df282b8 100644 --- a/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/datadog/trace/instrumentation/iastinstrumenter/SourceMapperImplTest.groovy +++ b/dd-java-agent/instrumentation/iast-instrumenter/src/test/groovy/datadog/trace/instrumentation/iastinstrumenter/SourceMapperImplTest.groovy @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.iastinstrumenter -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.tooling.iast.stratum.Stratum import datadog.trace.agent.tooling.iast.stratum.StratumManager import datadog.trace.api.Pair -class SourceMapperImplTest extends AgentTestRunner { +class SourceMapperImplTest extends InstrumentationSpecification { void 'test is disabled by default'(){ when: diff --git a/dd-java-agent/instrumentation/jackson-core/jackson-core-1/src/test/groovy/Json1FactoryInstrumentationTest.groovy b/dd-java-agent/instrumentation/jackson-core/jackson-core-1/src/test/groovy/Json1FactoryInstrumentationTest.groovy index dca6b8c3aa1..ee97ec2307c 100644 --- a/dd-java-agent/instrumentation/jackson-core/jackson-core-1/src/test/groovy/Json1FactoryInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jackson-core/jackson-core-1/src/test/groovy/Json1FactoryInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.server.http.TestHttpServer import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.VulnerabilityMarks @@ -11,7 +11,7 @@ import spock.lang.Shared import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer -class Json1FactoryInstrumentationTest extends AgentTestRunner { +class Json1FactoryInstrumentationTest extends InstrumentationSpecification { @Shared @AutoCleanup diff --git a/dd-java-agent/instrumentation/jackson-core/jackson-core-1/src/test/groovy/Json1ParserInstrumentationTest.groovy b/dd-java-agent/instrumentation/jackson-core/jackson-core-1/src/test/groovy/Json1ParserInstrumentationTest.groovy index 847a5dbc044..7c0a83bbfb3 100644 --- a/dd-java-agent/instrumentation/jackson-core/jackson-core-1/src/test/groovy/Json1ParserInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jackson-core/jackson-core-1/src/test/groovy/Json1ParserInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes import datadog.trace.api.iast.Taintable.Source @@ -8,7 +8,7 @@ import org.codehaus.jackson.map.ObjectMapper import java.nio.charset.Charset -class Json1ParserInstrumentationTest extends AgentTestRunner { +class Json1ParserInstrumentationTest extends InstrumentationSpecification { private final static String JSON_STRING = '{"root":"root_value","nested":{"nested_array":["array_0","array_1"]}}' diff --git a/dd-java-agent/instrumentation/jackson-core/jackson-core-2.12/src/test/groovy/datadog/trace/instrumentation/jackson212/core/JsonParserInstrumentationTest.groovy b/dd-java-agent/instrumentation/jackson-core/jackson-core-2.12/src/test/groovy/datadog/trace/instrumentation/jackson212/core/JsonParserInstrumentationTest.groovy index f8d78f98b08..fcdf6dfb5b8 100644 --- a/dd-java-agent/instrumentation/jackson-core/jackson-core-2.12/src/test/groovy/datadog/trace/instrumentation/jackson212/core/JsonParserInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jackson-core/jackson-core-2.12/src/test/groovy/datadog/trace/instrumentation/jackson212/core/JsonParserInstrumentationTest.groovy @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.jackson212.core import com.fasterxml.jackson.databind.ObjectMapper -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes import datadog.trace.api.iast.Taintable @@ -10,7 +10,7 @@ import groovy.json.JsonOutput import java.nio.charset.Charset -class JsonParserInstrumentationTest extends AgentTestRunner { +class JsonParserInstrumentationTest extends InstrumentationSpecification { private final static String JSON_STRING = '{"root":"root_value","nested":["array_0","array_1"]}' diff --git a/dd-java-agent/instrumentation/jackson-core/jackson-core-2.16/src/test/groovy/datadog/trace/instrumentation/jackson216/core/JsonParserInstrumentationTest.groovy b/dd-java-agent/instrumentation/jackson-core/jackson-core-2.16/src/test/groovy/datadog/trace/instrumentation/jackson216/core/JsonParserInstrumentationTest.groovy index 38f638ca8e3..0375c2d1651 100644 --- a/dd-java-agent/instrumentation/jackson-core/jackson-core-2.16/src/test/groovy/datadog/trace/instrumentation/jackson216/core/JsonParserInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jackson-core/jackson-core-2.16/src/test/groovy/datadog/trace/instrumentation/jackson216/core/JsonParserInstrumentationTest.groovy @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.jackson216.core import com.fasterxml.jackson.databind.ObjectMapper -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes import datadog.trace.api.iast.Taintable @@ -10,7 +10,7 @@ import groovy.json.JsonOutput import java.nio.charset.Charset -class JsonParserInstrumentationTest extends AgentTestRunner { +class JsonParserInstrumentationTest extends InstrumentationSpecification { private final static String JSON_STRING = '{"root":"root_value","nested":{"nested_array":["array_0","array_1"]}}' diff --git a/dd-java-agent/instrumentation/jackson-core/jackson-core-2.6/src/test/groovy/datadog/trace/instrumentation/jackson26/core/JsonParserInstrumentationTest.groovy b/dd-java-agent/instrumentation/jackson-core/jackson-core-2.6/src/test/groovy/datadog/trace/instrumentation/jackson26/core/JsonParserInstrumentationTest.groovy index c839bccf0c5..27077dcc6fa 100644 --- a/dd-java-agent/instrumentation/jackson-core/jackson-core-2.6/src/test/groovy/datadog/trace/instrumentation/jackson26/core/JsonParserInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jackson-core/jackson-core-2.6/src/test/groovy/datadog/trace/instrumentation/jackson26/core/JsonParserInstrumentationTest.groovy @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.jackson26.core import com.fasterxml.jackson.databind.ObjectMapper -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes import datadog.trace.api.iast.Taintable @@ -10,7 +10,7 @@ import groovy.json.JsonOutput import java.nio.charset.Charset -class JsonParserInstrumentationTest extends AgentTestRunner { +class JsonParserInstrumentationTest extends InstrumentationSpecification { private final static String JSON_STRING = '{"root":"root_value","nested":{"nested_array":["array_0","array_1"]}}' diff --git a/dd-java-agent/instrumentation/jackson-core/jackson-core-2.8/src/test/groovy/datadog/trace/instrumentation/jackson28/core/JsonParserInstrumentationTest.groovy b/dd-java-agent/instrumentation/jackson-core/jackson-core-2.8/src/test/groovy/datadog/trace/instrumentation/jackson28/core/JsonParserInstrumentationTest.groovy index 08c889db41c..7a4189263b2 100644 --- a/dd-java-agent/instrumentation/jackson-core/jackson-core-2.8/src/test/groovy/datadog/trace/instrumentation/jackson28/core/JsonParserInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jackson-core/jackson-core-2.8/src/test/groovy/datadog/trace/instrumentation/jackson28/core/JsonParserInstrumentationTest.groovy @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.jackson28.core import com.fasterxml.jackson.databind.ObjectMapper -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes import datadog.trace.api.iast.Taintable @@ -10,7 +10,7 @@ import groovy.json.JsonOutput import java.nio.charset.Charset -class JsonParserInstrumentationTest extends AgentTestRunner { +class JsonParserInstrumentationTest extends InstrumentationSpecification { private final static String JSON_STRING = '{"root":"root_value","nested":{"nested_array":["array_0","array_1"]}}' diff --git a/dd-java-agent/instrumentation/jackson-core/jackson-core-2/src/test/groovy/datadog/trace/instrumentation/jackson2/core/JsonParserInstrumentationTest.groovy b/dd-java-agent/instrumentation/jackson-core/jackson-core-2/src/test/groovy/datadog/trace/instrumentation/jackson2/core/JsonParserInstrumentationTest.groovy index 505ce50fce9..902a89571c3 100644 --- a/dd-java-agent/instrumentation/jackson-core/jackson-core-2/src/test/groovy/datadog/trace/instrumentation/jackson2/core/JsonParserInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jackson-core/jackson-core-2/src/test/groovy/datadog/trace/instrumentation/jackson2/core/JsonParserInstrumentationTest.groovy @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.jackson2.core import com.fasterxml.jackson.databind.ObjectMapper -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes import datadog.trace.api.iast.Taintable @@ -10,7 +10,7 @@ import groovy.json.JsonOutput import java.nio.charset.Charset -class JsonParserInstrumentationTest extends AgentTestRunner { +class JsonParserInstrumentationTest extends InstrumentationSpecification { private final static String JSON_STRING = '{"root":"root_value","nested":{"nested_array":["array_0","array_1"]}}' diff --git a/dd-java-agent/instrumentation/jackson-core/src/test/groovy/Json2FactoryInstrumentationTest.groovy b/dd-java-agent/instrumentation/jackson-core/src/test/groovy/Json2FactoryInstrumentationTest.groovy index 513e7e7ed17..67d7dda1342 100644 --- a/dd-java-agent/instrumentation/jackson-core/src/test/groovy/Json2FactoryInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jackson-core/src/test/groovy/Json2FactoryInstrumentationTest.groovy @@ -1,7 +1,7 @@ import com.fasterxml.jackson.core.JsonFactory import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.databind.ObjectMapper -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.server.http.TestHttpServer import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.VulnerabilityMarks @@ -13,7 +13,7 @@ import spock.lang.Shared import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer -class Json2FactoryInstrumentationTest extends AgentTestRunner { +class Json2FactoryInstrumentationTest extends InstrumentationSpecification { @Shared @AutoCleanup diff --git a/dd-java-agent/instrumentation/jackson-core/src/test/groovy/JsonParserInstrumentationTest.groovy b/dd-java-agent/instrumentation/jackson-core/src/test/groovy/JsonParserInstrumentationTest.groovy index 236d109970b..c1458b0284a 100644 --- a/dd-java-agent/instrumentation/jackson-core/src/test/groovy/JsonParserInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jackson-core/src/test/groovy/JsonParserInstrumentationTest.groovy @@ -1,5 +1,5 @@ import com.fasterxml.jackson.databind.ObjectMapper -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes import datadog.trace.api.iast.Taintable @@ -8,7 +8,7 @@ import groovy.json.JsonOutput import java.nio.charset.Charset -class JsonParserInstrumentationTest extends AgentTestRunner { +class JsonParserInstrumentationTest extends InstrumentationSpecification { private final static String JSON_STRING = '{"root":"root_value","nested":{"nested_array":["array_0","array_1"]}}' diff --git a/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/JMS2Test.groovy b/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/JMS2Test.groovy index 4ac2b5ca8b2..e8f8ec7050b 100644 --- a/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/JMS2Test.groovy +++ b/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/JMS2Test.groovy @@ -1,5 +1,5 @@ import com.google.common.io.Files -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.ListWriterAssert import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.InstrumentationTags @@ -26,7 +26,7 @@ import jakarta.jms.TextMessage import java.util.concurrent.CountDownLatch import java.util.concurrent.atomic.AtomicReference -class JMS2Test extends AgentTestRunner { +class JMS2Test extends InstrumentationSpecification { @Shared HornetQServer server @Shared diff --git a/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/MDBTest.groovy b/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/MDBTest.groovy index 7ea922fbb9a..c4b9c6e61e7 100644 --- a/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/MDBTest.groovy +++ b/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/MDBTest.groovy @@ -1,12 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.ListWriterAssert import spock.lang.Shared -import static datadog.trace.agent.test.asserts.ListWriterAssert.SORT_TRACES_BY_START -import static datadog.trace.agent.test.asserts.ListWriterAssert.assertTraces import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class MDBTest extends AgentTestRunner { +class MDBTest extends InstrumentationSpecification { @Shared def msg = new MDBJmsMsg() diff --git a/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/SpringListenerJMS2Test.groovy b/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/SpringListenerJMS2Test.groovy index 13e768888f1..5532169b96a 100644 --- a/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/SpringListenerJMS2Test.groovy +++ b/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/SpringListenerJMS2Test.groovy @@ -14,7 +14,7 @@ * limitations under the License. */ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import listener.Config import org.springframework.context.annotation.AnnotationConfigApplicationContext import org.springframework.jms.core.JmsTemplate @@ -24,7 +24,7 @@ import jakarta.jms.ConnectionFactory import static JMS2Test.consumerTrace import static JMS2Test.producerTrace -class SpringListenerJMS2Test extends AgentTestRunner { +class SpringListenerJMS2Test extends InstrumentationSpecification { def "receiving message in spring listener generates spans"() { setup: diff --git a/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/SpringTemplateJMS2Test.groovy b/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/SpringTemplateJMS2Test.groovy index f92de5f63a8..a1000cb5865 100644 --- a/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/SpringTemplateJMS2Test.groovy +++ b/dd-java-agent/instrumentation/jakarta-jms/src/test/groovy/SpringTemplateJMS2Test.groovy @@ -1,5 +1,5 @@ import com.google.common.io.Files -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.hornetq.api.core.TransportConfiguration import org.hornetq.api.core.client.HornetQClient @@ -24,7 +24,7 @@ import java.util.concurrent.TimeUnit import static JMS2Test.consumerTrace import static JMS2Test.producerTrace -class SpringTemplateJMS2Test extends AgentTestRunner { +class SpringTemplateJMS2Test extends InstrumentationSpecification { @Shared HornetQServer server @Shared diff --git a/dd-java-agent/instrumentation/jakarta-mail/src/test/groovy/JakartaMailInstrumentationTest.groovy b/dd-java-agent/instrumentation/jakarta-mail/src/test/groovy/JakartaMailInstrumentationTest.groovy index 10e199d447b..a5e0f4e53ab 100644 --- a/dd-java-agent/instrumentation/jakarta-mail/src/test/groovy/JakartaMailInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jakarta-mail/src/test/groovy/JakartaMailInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.EmailInjectionModule import jakarta.mail.Provider @@ -11,7 +11,7 @@ import jakarta.mail.internet.MimeBodyPart import jakarta.mail.internet.MimeMultipart -class JakartaMailInstrumentationTest extends AgentTestRunner { +class JakartaMailInstrumentationTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/test/groovy/JakartaRsAnnotations3InstrumentationTest.groovy b/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/test/groovy/JakartaRsAnnotations3InstrumentationTest.groovy index b9f7dfba8e6..2d68787a746 100644 --- a/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/test/groovy/JakartaRsAnnotations3InstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/test/groovy/JakartaRsAnnotations3InstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.TraceInstrumentationConfig import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.instrumentation.jakarta3.JakartaRsAnnotationsDecorator @@ -14,7 +14,7 @@ import jakarta.ws.rs.Path import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class JakartaRsAnnotations3InstrumentationTest extends AgentTestRunner { +class JakartaRsAnnotations3InstrumentationTest extends InstrumentationSpecification { def "instrumentation can be used as root span and resource is set to METHOD PATH"() { setup: diff --git a/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/test/groovy/JakartaRsFilterTest.groovy b/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/test/groovy/JakartaRsFilterTest.groovy index 8598c0a5d65..c9ed9f21374 100644 --- a/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/test/groovy/JakartaRsFilterTest.groovy +++ b/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/test/groovy/JakartaRsFilterTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import spock.lang.Shared @@ -12,7 +12,7 @@ import jakarta.ws.rs.ext.Provider import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -abstract class JakartaRsFilterTest extends AgentTestRunner { +abstract class JakartaRsFilterTest extends InstrumentationSpecification { @Shared SimpleRequestFilter simpleRequestFilter = new SimpleRequestFilter() diff --git a/dd-java-agent/instrumentation/jakarta-ws-annotations/src/test/groovy/WebServiceTest.groovy b/dd-java-agent/instrumentation/jakarta-ws-annotations/src/test/groovy/WebServiceTest.groovy index 5b34d15fff7..ecb869c15c8 100644 --- a/dd-java-agent/instrumentation/jakarta-ws-annotations/src/test/groovy/WebServiceTest.groovy +++ b/dd-java-agent/instrumentation/jakarta-ws-annotations/src/test/groovy/WebServiceTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import static org.junit.Assert.fail -class WebServiceTest extends AgentTestRunner { +class WebServiceTest extends InstrumentationSpecification { def "test successful interface request is traced"() { when: diff --git a/dd-java-agent/instrumentation/java-concurrent/java-completablefuture/src/test/groovy/CompletableFutureTest.groovy b/dd-java-agent/instrumentation/java-concurrent/java-completablefuture/src/test/groovy/CompletableFutureTest.groovy index 0bc84a10f68..022ac7e169a 100644 --- a/dd-java-agent/instrumentation/java-concurrent/java-completablefuture/src/test/groovy/CompletableFutureTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/java-completablefuture/src/test/groovy/CompletableFutureTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import datadog.trace.core.DDSpan @@ -16,7 +16,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace * Note: ideally this should live with the rest of ExecutorInstrumentationTest, * but this code needs java8 so we put it here for now. */ -class CompletableFutureTest extends AgentTestRunner { +class CompletableFutureTest extends InstrumentationSpecification { def "CompletableFuture test"() { setup: diff --git a/dd-java-agent/instrumentation/java-concurrent/java-completablefuture/src/test/groovy/TestFanout.groovy b/dd-java-agent/instrumentation/java-concurrent/java-completablefuture/src/test/groovy/TestFanout.groovy index 176a2dc85d4..0bb6f2bf571 100644 --- a/dd-java-agent/instrumentation/java-concurrent/java-completablefuture/src/test/groovy/TestFanout.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/java-completablefuture/src/test/groovy/TestFanout.groovy @@ -1,11 +1,11 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import java.util.concurrent.Executors import java.util.concurrent.ForkJoinPool import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class TestFanout extends AgentTestRunner { +class TestFanout extends InstrumentationSpecification { def "test propagate with fanout"() { when: diff --git a/dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/src/previewTest/groovy/StructuredConcurrencyTest.groovy b/dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/src/previewTest/groovy/StructuredConcurrencyTest.groovy index 24c157d1e80..67301903e9d 100644 --- a/dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/src/previewTest/groovy/StructuredConcurrencyTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/src/previewTest/groovy/StructuredConcurrencyTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import java.util.concurrent.Callable @@ -8,7 +8,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.agent.test.utils.TraceUtils.runnableUnderTrace import static java.time.Instant.now -class StructuredConcurrencyTest extends AgentTestRunner { +class StructuredConcurrencyTest extends InstrumentationSpecification { @Override boolean useStrictTraceWrites() { // TODO: Monitor in CI to validate fix effectiveness against freezes. diff --git a/dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/src/test/groovy/VirtualThreadTest.groovy b/dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/src/test/groovy/VirtualThreadTest.groovy index 9ace7d7f467..7bb36c7f024 100644 --- a/dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/src/test/groovy/VirtualThreadTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/src/test/groovy/VirtualThreadTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import datadog.trace.core.DDSpan import spock.lang.Shared @@ -8,7 +8,7 @@ import java.util.concurrent.ExecutorCompletionService import java.util.concurrent.Executors import java.util.concurrent.TimeUnit -class VirtualThreadTest extends AgentTestRunner { +class VirtualThreadTest extends InstrumentationSpecification { @Shared def executeRunnable = { e, c -> e.execute((Runnable) c) } @Shared diff --git a/dd-java-agent/instrumentation/java-concurrent/lambda-testing/src/test/groovy/ExecutorLambdaTest.groovy b/dd-java-agent/instrumentation/java-concurrent/lambda-testing/src/test/groovy/ExecutorLambdaTest.groovy index 84d73ead506..923386dcba2 100644 --- a/dd-java-agent/instrumentation/java-concurrent/lambda-testing/src/test/groovy/ExecutorLambdaTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/lambda-testing/src/test/groovy/ExecutorLambdaTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.apache.tomcat.util.threads.TaskQueue import org.apache.tomcat.util.threads.ThreadPoolExecutor import spock.lang.Shared @@ -9,7 +9,7 @@ import java.util.concurrent.TimeUnit import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class ExecutorLambdaTest extends AgentTestRunner { +class ExecutorLambdaTest extends InstrumentationSpecification { @Shared def executeRunnable = { e, c -> e.execute((Runnable) c) } @Shared diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/CrossedContextTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/CrossedContextTest.groovy index ba9cba5a036..b3eb6690e92 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/CrossedContextTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/CrossedContextTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan import io.netty.channel.DefaultEventLoopGroup import io.netty.channel.ThreadPerChannelEventLoop @@ -18,7 +18,7 @@ import java.util.concurrent.atomic.AtomicInteger import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class CrossedContextTest extends AgentTestRunner { +class CrossedContextTest extends InstrumentationSpecification { @Shared def executeRunnable = { e, c -> e.execute((Runnable) c) } diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/QueueTimingForkedTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/QueueTimingForkedTest.groovy index 85a1894581b..5e5c63bd95c 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/QueueTimingForkedTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/QueueTimingForkedTest.groovy @@ -1,5 +1,5 @@ import datadog.environment.JavaVirtualMachine -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.TestProfilingContextIntegration import datadog.trace.bootstrap.instrumentation.jfr.InstrumentationBasedProfiling @@ -9,7 +9,7 @@ import java.util.concurrent.LinkedBlockingQueue import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class QueueTimingForkedTest extends AgentTestRunner { +class QueueTimingForkedTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/TaskUnwrappingForkedTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/TaskUnwrappingForkedTest.groovy index 9be6c3ea83e..8cb7159c4ec 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/TaskUnwrappingForkedTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/TaskUnwrappingForkedTest.groovy @@ -1,11 +1,11 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.TaskWrapper import java.util.concurrent.Callable import java.util.concurrent.ForkJoinTask import java.util.concurrent.FutureTask -class TaskUnwrappingForkedTest extends AgentTestRunner { +class TaskUnwrappingForkedTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ContextLeakTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ContextLeakTest.groovy index 9e942ceb1e9..cb4e53df3dc 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ContextLeakTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ContextLeakTest.groovy @@ -1,6 +1,6 @@ package executor -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.AgentTracer import java.util.concurrent.Executors @@ -9,7 +9,7 @@ import java.util.concurrent.atomic.AtomicBoolean import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class ContextLeakTest extends AgentTestRunner { +class ContextLeakTest extends InstrumentationSpecification { def "trace should not leak into TPE Worker task when '#name'"() { setup: diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ExecutorInstrumentationTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ExecutorInstrumentationTest.groovy index b920f573a39..945a92c4e95 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ExecutorInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ExecutorInstrumentationTest.groovy @@ -1,7 +1,7 @@ package executor import com.google.common.util.concurrent.MoreExecutors -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.bootstrap.instrumentation.java.concurrent.RunnableWrapper @@ -28,7 +28,7 @@ import java.util.concurrent.TimeUnit import static org.junit.jupiter.api.Assumptions.assumeTrue -abstract class ExecutorInstrumentationTest extends AgentTestRunner { +abstract class ExecutorInstrumentationTest extends InstrumentationSpecification { @Shared def executeRunnable = { e, c -> e.execute((Runnable) c) } diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/NettyExecutorInstrumentationTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/NettyExecutorInstrumentationTest.groovy index adfa986dd9c..fc944416d94 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/NettyExecutorInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/NettyExecutorInstrumentationTest.groovy @@ -1,6 +1,6 @@ package executor -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import datadog.trace.core.DDSpan import io.netty.channel.DefaultEventLoopGroup @@ -19,7 +19,7 @@ import java.util.concurrent.TimeUnit import static org.junit.jupiter.api.Assumptions.assumeTrue -class NettyExecutorInstrumentationTest extends AgentTestRunner { +class NettyExecutorInstrumentationTest extends InstrumentationSpecification { @Shared boolean isLinux = System.getProperty("os.name").toLowerCase().contains("linux") diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RecursiveThreadPoolPropagationTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RecursiveThreadPoolPropagationTest.groovy index c13fd353f1b..957bf8cb1da 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RecursiveThreadPoolPropagationTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RecursiveThreadPoolPropagationTest.groovy @@ -1,6 +1,6 @@ package executor -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan import executor.recursive.RecursiveThreadPoolExecution import executor.recursive.RecursiveThreadPoolMixedSubmissionAndExecution @@ -11,7 +11,7 @@ import spock.lang.Shared import java.util.concurrent.Executors import java.util.concurrent.ForkJoinPool -class RecursiveThreadPoolPropagationTest extends AgentTestRunner { +class RecursiveThreadPoolPropagationTest extends InstrumentationSpecification { @Shared def recursiveSubmission = { executor, depth -> executor.submit(new RecursiveThreadPoolSubmission(executor, depth, 0)) } diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RejectedExecutionTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RejectedExecutionTest.groovy index 74b62a4c364..190085041dd 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RejectedExecutionTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RejectedExecutionTest.groovy @@ -1,6 +1,6 @@ package executor -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanId import datadog.trace.core.DDSpan import executor.rejectedexecutionhandler.ExecutingRejectedExecutionHandler @@ -22,7 +22,7 @@ import java.util.concurrent.TimeUnit import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class RejectedExecutionTest extends AgentTestRunner { +class RejectedExecutionTest extends InstrumentationSpecification { // TODO test elasticsearch RejectedExecutionHandlers which downcast or throw diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/forkjoin/ForkJoinPoolPropagationTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/forkjoin/ForkJoinPoolPropagationTest.groovy index 236a04e3e6b..ecf2103b0b3 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/forkjoin/ForkJoinPoolPropagationTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/forkjoin/ForkJoinPoolPropagationTest.groovy @@ -1,11 +1,11 @@ package forkjoin -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan import java.util.concurrent.ForkJoinPool -class ForkJoinPoolPropagationTest extends AgentTestRunner { +class ForkJoinPoolPropagationTest extends InstrumentationSpecification { def "test imbalanced recursive task propagation #parallelism FJP threads (async #async)" () { when: ForkJoinPool fjp = new ForkJoinPool(parallelism, diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/FutureTaskContinuationTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/FutureTaskContinuationTest.groovy index f20605be291..beff8f44426 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/FutureTaskContinuationTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/FutureTaskContinuationTest.groovy @@ -1,13 +1,13 @@ package runnable -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import java.util.concurrent.ExecutionException import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class FutureTaskContinuationTest extends AgentTestRunner { +class FutureTaskContinuationTest extends InstrumentationSpecification { SettableFuture future @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/ModuleInjectionTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/ModuleInjectionTest.groovy index 74639f9f4cb..1c9f1d844c6 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/ModuleInjectionTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/ModuleInjectionTest.groovy @@ -1,13 +1,13 @@ package runnable -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import javax.swing.* /** * This class tests that we correctly add module references when instrumenting */ -class ModuleInjectionTest extends AgentTestRunner { +class ModuleInjectionTest extends InstrumentationSpecification { /** * There's nothing special about RepaintManager other than * it's in a module (java.desktop) that doesn't read the "unnamed module" and it diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/timer/TimerTaskContinuationTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/timer/TimerTaskContinuationTest.groovy index 66b98ef054a..f2d4c37c72c 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/timer/TimerTaskContinuationTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/timer/TimerTaskContinuationTest.groovy @@ -5,7 +5,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.AgentScope import datadog.trace.bootstrap.instrumentation.api.AgentSpan import spock.lang.Shared @@ -13,7 +13,7 @@ import spock.lang.Shared import java.time.Instant import java.util.concurrent.CountDownLatch -class TimerTaskContinuationTest extends AgentTestRunner { +class TimerTaskContinuationTest extends InstrumentationSpecification { @Shared Timer timer = new Timer() diff --git a/dd-java-agent/instrumentation/java-directbytebuffer/src/test/groovy/DirectAllocationTrackingTest.groovy b/dd-java-agent/instrumentation/java-directbytebuffer/src/test/groovy/DirectAllocationTrackingTest.groovy index 6fb745ec506..f73585a46e6 100644 --- a/dd-java-agent/instrumentation/java-directbytebuffer/src/test/groovy/DirectAllocationTrackingTest.groovy +++ b/dd-java-agent/instrumentation/java-directbytebuffer/src/test/groovy/DirectAllocationTrackingTest.groovy @@ -1,5 +1,5 @@ import datadog.environment.JavaVirtualMachine -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.AgentTracer import datadog.trace.bootstrap.instrumentation.jfr.InstrumentationBasedProfiling import jdk.jfr.FlightRecorder @@ -19,7 +19,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace @Requires({ !JavaVirtualMachine.isJ9() }) -class DirectAllocationTrackingTest extends AgentTestRunner { +class DirectAllocationTrackingTest extends InstrumentationSpecification { Recording recording Instant start diff --git a/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/BaseIoCallSiteTest.groovy b/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/BaseIoCallSiteTest.groovy index e9e7e4f1959..4cc3e054ea0 100644 --- a/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/BaseIoCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/BaseIoCallSiteTest.groovy @@ -1,10 +1,10 @@ package datadog.trace.instrumentation.java.io -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.junit.Rule import org.junit.rules.TemporaryFolder -abstract class BaseIoCallSiteTest extends AgentTestRunner { +abstract class BaseIoCallSiteTest extends InstrumentationSpecification { @Rule TemporaryFolder temporaryFolder = new TemporaryFolder(parentFolder()) diff --git a/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/ByteBufferTest.groovy b/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/ByteBufferTest.groovy index ff65048116c..fe7259ff04c 100644 --- a/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/ByteBufferTest.groovy +++ b/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/ByteBufferTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.io -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.VulnerabilityMarks import datadog.trace.api.iast.propagation.PropagationModule @@ -8,7 +8,7 @@ import foo.bar.TestByteBufferSuite import java.nio.ByteBuffer -class ByteBufferTest extends AgentTestRunner { +class ByteBufferTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/InputStreamInstrumentationTest.groovy b/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/InputStreamInstrumentationTest.groovy index 2c348f5913f..e55378052db 100644 --- a/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/InputStreamInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/InputStreamInstrumentationTest.groovy @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.java.io -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import foo.bar.TestInputStreamSuite -class InputStreamInstrumentationTest extends AgentTestRunner { +class InputStreamInstrumentationTest extends InstrumentationSpecification { @Override diff --git a/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/ObjectInputStreamCallSiteTest.groovy b/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/ObjectInputStreamCallSiteTest.groovy index 38c997bd5ff..23d56c3e933 100644 --- a/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/ObjectInputStreamCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/ObjectInputStreamCallSiteTest.groovy @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.java.io -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.UntrustedDeserializationModule import foo.bar.TestObjectInputStreamSuite import foo.bar.TestCustomObjectInputStream -class ObjectInputStreamCallSiteTest extends AgentTestRunner { +class ObjectInputStreamCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/PrintWriterCallSiteTest.groovy b/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/PrintWriterCallSiteTest.groovy index c9dee3b6dbe..dbab8b113e3 100644 --- a/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/PrintWriterCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/PrintWriterCallSiteTest.groovy @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.java.io -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.XssModule import foo.bar.TestPrintWriterSuite import org.apache.catalina.connector.CoyoteWriter -class PrintWriterCallSiteTest extends AgentTestRunner { +class PrintWriterCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/java-lang-11/src/test/groovy/datadog/trace/instrumentation/java/lang/jdk11/StringCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/java-lang-11/src/test/groovy/datadog/trace/instrumentation/java/lang/jdk11/StringCallSiteTest.groovy index 4a0908a2747..d2d5bf435ad 100644 --- a/dd-java-agent/instrumentation/java-lang/java-lang-11/src/test/groovy/datadog/trace/instrumentation/java/lang/jdk11/StringCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/java-lang-11/src/test/groovy/datadog/trace/instrumentation/java/lang/jdk11/StringCallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.lang.jdk11 -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.StringModule import foo.bar.TestStringJDK11Suite @@ -9,7 +9,7 @@ import spock.lang.Requires @Requires({ jvm.java11Compatible }) -class StringCallSiteTest extends AgentTestRunner { +class StringCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/java-lang-15/src/test/groovy/datadog/trace/instrumentation/java/lang/jdk15/StringCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/java-lang-15/src/test/groovy/datadog/trace/instrumentation/java/lang/jdk15/StringCallSiteTest.groovy index bea96f705bd..c2e01a71352 100644 --- a/dd-java-agent/instrumentation/java-lang/java-lang-15/src/test/groovy/datadog/trace/instrumentation/java/lang/jdk15/StringCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/java-lang-15/src/test/groovy/datadog/trace/instrumentation/java/lang/jdk15/StringCallSiteTest.groovy @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.java.lang.jdk15 import com.github.javaparser.utils.StringEscapeUtils -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.StringModule import foo.bar.TestStringJDK15Suite @@ -10,7 +10,7 @@ import spock.lang.Requires @Requires({ jvm.java15Compatible }) -class StringCallSiteTest extends AgentTestRunner { +class StringCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/java-lang-17/src/test/groovy/datadog/trace/instrumentation/java/lang/jdk17/StringCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/java-lang-17/src/test/groovy/datadog/trace/instrumentation/java/lang/jdk17/StringCallSiteTest.groovy index cce0b795f7e..2ac677240ba 100644 --- a/dd-java-agent/instrumentation/java-lang/java-lang-17/src/test/groovy/datadog/trace/instrumentation/java/lang/jdk17/StringCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/java-lang-17/src/test/groovy/datadog/trace/instrumentation/java/lang/jdk17/StringCallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.lang.jdk17 -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.StringModule import foo.bar.TestStringJDK17Suite @@ -9,7 +9,7 @@ import spock.lang.Requires @Requires({ jvm.java17Compatible }) -class StringCallSiteTest extends AgentTestRunner { +class StringCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/java-lang-9/src/test/groovy/datadog/trace/instrumentation/java/lang/invoke/Lookup9CallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/java-lang-9/src/test/groovy/datadog/trace/instrumentation/java/lang/invoke/Lookup9CallSiteTest.groovy index 3fa7dab7d3d..cb33f81a19a 100644 --- a/dd-java-agent/instrumentation/java-lang/java-lang-9/src/test/groovy/datadog/trace/instrumentation/java/lang/invoke/Lookup9CallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/java-lang-9/src/test/groovy/datadog/trace/instrumentation/java/lang/invoke/Lookup9CallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.lang.invoke -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.ReflectionInjectionModule import foo.bar.TestLookup9Suite @@ -9,7 +9,7 @@ import spock.lang.Requires @Requires({ jvm.java9Compatible }) -class Lookup9CallSiteTest extends AgentTestRunner { +class Lookup9CallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/java-lang-9/src/test/groovy/datadog/trace/instrumentation/java/lang/invoke/StringConcatFactoryCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/java-lang-9/src/test/groovy/datadog/trace/instrumentation/java/lang/invoke/StringConcatFactoryCallSiteTest.groovy index 7c47e4e96ff..efb7f32702a 100644 --- a/dd-java-agent/instrumentation/java-lang/java-lang-9/src/test/groovy/datadog/trace/instrumentation/java/lang/invoke/StringConcatFactoryCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/java-lang-9/src/test/groovy/datadog/trace/instrumentation/java/lang/invoke/StringConcatFactoryCallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.lang.invoke -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.StringModule import foo.bar.TestStringConcatFactorySuite @@ -11,7 +11,7 @@ import static foo.bar.TestStringConcatFactorySuite.stringPlusWithPrimitive @Requires({ jvm.java9Compatible }) -class StringConcatFactoryCallSiteTest extends AgentTestRunner { +class StringConcatFactoryCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ClassCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ClassCallSiteTest.groovy index 70d987e08ff..ba9b980ffac 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ClassCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ClassCallSiteTest.groovy @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.ReflectionInjectionModule import foo.bar.TestClassSuite -class ClassCallSiteTest extends AgentTestRunner { +class ClassCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ClassLoaderCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ClassLoaderCallSiteTest.groovy index 8d259b36062..a34b619bc3d 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ClassLoaderCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ClassLoaderCallSiteTest.groovy @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.ReflectionInjectionModule import foo.bar.TestClassLoaderSuite -class ClassLoaderCallSiteTest extends AgentTestRunner { +class ClassLoaderCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/LookupCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/LookupCallSiteTest.groovy index f4a542518f5..46066800145 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/LookupCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/LookupCallSiteTest.groovy @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.ReflectionInjectionModule import foo.bar.TestLookupSuite import java.lang.invoke.MethodType -class LookupCallSiteTest extends AgentTestRunner { +class LookupCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/MathCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/MathCallSiteTest.groovy index f9b8bf0f126..389106104c1 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/MathCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/MathCallSiteTest.groovy @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.WeakRandomnessModule import foo.bar.TestMathSuite -class MathCallSiteTest extends AgentTestRunner { +class MathCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ProcessBuilderCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ProcessBuilderCallSiteTest.groovy index fc84fd3335e..722d62db061 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ProcessBuilderCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ProcessBuilderCallSiteTest.groovy @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.CommandInjectionModule import foo.bar.TestProcessBuilderSuite -class ProcessBuilderCallSiteTest extends AgentTestRunner { +class ProcessBuilderCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ProcessImplInstrumentationExecCmdRaspForkedTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ProcessImplInstrumentationExecCmdRaspForkedTest.groovy index 1746329f2ee..a3f3611b721 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ProcessImplInstrumentationExecCmdRaspForkedTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ProcessImplInstrumentationExecCmdRaspForkedTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.AppSecConfig import datadog.trace.api.gateway.CallbackProvider import datadog.trace.api.gateway.Flow @@ -16,7 +16,7 @@ import java.util.function.BiFunction import static datadog.trace.api.gateway.Events.EVENTS -class ProcessImplInstrumentationExecCmdRaspForkedTest extends AgentTestRunner { +class ProcessImplInstrumentationExecCmdRaspForkedTest extends InstrumentationSpecification { @Shared protected static final ORIGINAL_TRACER = AgentTracer.get() diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ProcessImplInstrumentationSpecification.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ProcessImplInstrumentationSpecification.groovy index ce293a99165..f2c33d9145d 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ProcessImplInstrumentationSpecification.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/ProcessImplInstrumentationSpecification.groovy @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.SpanAssert import datadog.trace.agent.test.utils.TraceUtils import datadog.trace.bootstrap.ActiveSubsystems import java.util.concurrent.TimeUnit -class ProcessImplInstrumentationSpecification extends AgentTestRunner { +class ProcessImplInstrumentationSpecification extends InstrumentationSpecification { boolean previousAppsecState = false diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/RuntimeCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/RuntimeCallSiteTest.groovy index 17469a868ca..7eb305e3b8f 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/RuntimeCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/RuntimeCallSiteTest.groovy @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.CommandInjectionModule import foo.bar.TestRuntimeSuite import static org.mockito.Mockito.mock -class RuntimeCallSiteTest extends AgentTestRunner { +class RuntimeCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/RuntimeInstrumentationForkedTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/RuntimeInstrumentationForkedTest.groovy index acfc16a5b9b..a3a0391ecc4 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/RuntimeInstrumentationForkedTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/RuntimeInstrumentationForkedTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.AppSecConfig import datadog.trace.api.gateway.CallbackProvider import static datadog.trace.api.gateway.Events.EVENTS @@ -14,7 +14,7 @@ import spock.lang.Shared import java.util.function.BiFunction -class RuntimeInstrumentationForkedTest extends AgentTestRunner{ +class RuntimeInstrumentationForkedTest extends InstrumentationSpecification{ @Shared protected static final ORIGINAL_TRACER = AgentTracer.get() diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringBuilderCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringBuilderCallSiteTest.groovy index a3b7b8695cf..30817414855 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringBuilderCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringBuilderCallSiteTest.groovy @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.StringModule import foo.bar.TestStringBufferSuite import foo.bar.TestStringBuilderSuite -class StringBuilderCallSiteTest extends AgentTestRunner { +class StringBuilderCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringCallSiteTest.groovy index 1bd09783c3b..66866caa778 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringCallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.StringModule import foo.bar.TestStringSuite @@ -9,7 +9,7 @@ import groovy.transform.CompileDynamic import static datadog.trace.api.config.IastConfig.IAST_ENABLED @CompileDynamic -class StringCallSiteTest extends AgentTestRunner { +class StringCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringExperimentalCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringExperimentalCallSiteTest.groovy index cc1a556d726..07f7c8cb54d 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringExperimentalCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringExperimentalCallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.StringModule import foo.bar.TestStringSuite @@ -8,7 +8,7 @@ import foo.bar.TestStringSuite import static datadog.trace.api.config.IastConfig.IAST_ENABLED import static datadog.trace.api.config.IastConfig.IAST_EXPERIMENTAL_PROPAGATION_ENABLED -class StringExperimentalCallSiteTest extends AgentTestRunner { +class StringExperimentalCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringFullDetectionCallSiteForkedTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringFullDetectionCallSiteForkedTest.groovy index 08d8a48122b..cf888a7699a 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringFullDetectionCallSiteForkedTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/StringFullDetectionCallSiteForkedTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.lang -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.IastConfig import datadog.trace.api.iast.IastDetectionMode import datadog.trace.api.iast.InstrumentationBridge @@ -11,7 +11,7 @@ import foo.bar.TestStringSuite import java.nio.charset.Charset -class StringFullDetectionCallSiteForkedTest extends AgentTestRunner { +class StringFullDetectionCallSiteForkedTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URICallSIteTest.groovy b/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URICallSIteTest.groovy index 882f8dc7605..4dac9ebf1c5 100644 --- a/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URICallSIteTest.groovy +++ b/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URICallSIteTest.groovy @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.java.net -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.CodecModule import datadog.trace.api.iast.propagation.PropagationModule import foo.bar.TestURICallSiteSuite -class URICallSIteTest extends AgentTestRunner { +class URICallSIteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLCallSiteTest.groovy b/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLCallSiteTest.groovy index 002bd2f7b86..ca03a39b13d 100644 --- a/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLCallSiteTest.groovy @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.java.net -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.CodecModule import datadog.trace.api.iast.propagation.PropagationModule import foo.bar.TestURLCallSiteSuite -class URLCallSiteTest extends AgentTestRunner { +class URLCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLDecoderCallSiteTest.groovy b/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLDecoderCallSiteTest.groovy index 89505cb82ee..78af61cb237 100644 --- a/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLDecoderCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLDecoderCallSiteTest.groovy @@ -3,9 +3,9 @@ package datadog.trace.instrumentation.java.net import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.CodecModule import foo.bar.TestURLDecoderCallSiteSuite -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification -class URLDecoderCallSiteTest extends AgentTestRunner { +class URLDecoderCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLEncoderCallSiteTest.groovy b/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLEncoderCallSiteTest.groovy index 1efcb3c5477..5e75f298b28 100644 --- a/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLEncoderCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLEncoderCallSiteTest.groovy @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.java.net -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.CodecModule import datadog.trace.api.iast.propagation.PropagationModule import foo.bar.TestURLEncoderCallSiteSuite -class URLEncoderCallSiteTest extends AgentTestRunner { +class URLEncoderCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLSinkCallSiteTest.groovy b/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLSinkCallSiteTest.groovy index ec5a78ad5e3..3be4e1c68e5 100644 --- a/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLSinkCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-net/src/test/groovy/datadog/trace/instrumentation/java/net/URLSinkCallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.java.net -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.AppSecConfig import datadog.trace.api.config.IastConfig import datadog.trace.api.gateway.CallbackProvider @@ -18,7 +18,7 @@ import java.util.function.BiFunction import static datadog.trace.api.gateway.Events.EVENTS -class URLSinkCallSiteTest extends AgentTestRunner { +class URLSinkCallSiteTest extends InstrumentationSpecification { @Shared protected static final ORIGINAL_TRACER = AgentTracer.get() diff --git a/dd-java-agent/instrumentation/java-security/src/test/groovy/test/WeakCipherTest.groovy b/dd-java-agent/instrumentation/java-security/src/test/groovy/test/WeakCipherTest.groovy index 8a9f99c327c..1f6747267cb 100644 --- a/dd-java-agent/instrumentation/java-security/src/test/groovy/test/WeakCipherTest.groovy +++ b/dd-java-agent/instrumentation/java-security/src/test/groovy/test/WeakCipherTest.groovy @@ -1,6 +1,6 @@ package test -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.WeakCipherModule import foo.bar.TestSuite @@ -11,7 +11,7 @@ import java.security.Provider import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class WeakCipherTest extends AgentTestRunner { +class WeakCipherTest extends InstrumentationSpecification { def "unavailable cipher algorithm"() { diff --git a/dd-java-agent/instrumentation/java-security/src/test/groovy/test/WeakHashTest.groovy b/dd-java-agent/instrumentation/java-security/src/test/groovy/test/WeakHashTest.groovy index fbe64a509a7..8625efe9337 100644 --- a/dd-java-agent/instrumentation/java-security/src/test/groovy/test/WeakHashTest.groovy +++ b/dd-java-agent/instrumentation/java-security/src/test/groovy/test/WeakHashTest.groovy @@ -1,6 +1,6 @@ package test -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.WeakHashModule import foo.bar.TestSuite @@ -11,7 +11,7 @@ import java.security.Provider import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class WeakHashTest extends AgentTestRunner { +class WeakHashTest extends InstrumentationSpecification { def "unavailable hash algorithm"() { diff --git a/dd-java-agent/instrumentation/java-util/src/test/groovy/datadog/trace/instrumentation/java/util/RandomCallSiteTest.groovy b/dd-java-agent/instrumentation/java-util/src/test/groovy/datadog/trace/instrumentation/java/util/RandomCallSiteTest.groovy index f0971c33df2..efa2092ff48 100644 --- a/dd-java-agent/instrumentation/java-util/src/test/groovy/datadog/trace/instrumentation/java/util/RandomCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-util/src/test/groovy/datadog/trace/instrumentation/java/util/RandomCallSiteTest.groovy @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.java.util -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.WeakRandomnessModule import foo.bar.TestRandomSuite import java.security.SecureRandom -class RandomCallSiteTest extends AgentTestRunner { +class RandomCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/java-util/src/test/groovy/datadog/trace/instrumentation/java/util/concurrent/ThreadLocalRandomCallSiteTest.groovy b/dd-java-agent/instrumentation/java-util/src/test/groovy/datadog/trace/instrumentation/java/util/concurrent/ThreadLocalRandomCallSiteTest.groovy index 4855a949f25..4d37c3af248 100644 --- a/dd-java-agent/instrumentation/java-util/src/test/groovy/datadog/trace/instrumentation/java/util/concurrent/ThreadLocalRandomCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-util/src/test/groovy/datadog/trace/instrumentation/java/util/concurrent/ThreadLocalRandomCallSiteTest.groovy @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.java.util.concurrent -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.WeakRandomnessModule import foo.bar.TestThreadLocalRandomSuite import java.util.concurrent.ThreadLocalRandom -class ThreadLocalRandomCallSiteTest extends AgentTestRunner { +class ThreadLocalRandomCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/javax-mail/src/test/groovy/JavaxMailInstrumentationTest.groovy b/dd-java-agent/instrumentation/javax-mail/src/test/groovy/JavaxMailInstrumentationTest.groovy index b349294be43..63408cd5c92 100644 --- a/dd-java-agent/instrumentation/javax-mail/src/test/groovy/JavaxMailInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/javax-mail/src/test/groovy/JavaxMailInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.EmailInjectionModule @@ -13,7 +13,7 @@ import javax.mail.Provider import javax.mail.internet.MimeMultipart -class JavaxMailInstrumentationTest extends AgentTestRunner { +class JavaxMailInstrumentationTest extends InstrumentationSpecification { @Override void configurePreAgent() { injectSysConfig("dd.iast.enabled", "true") diff --git a/dd-java-agent/instrumentation/javax-naming/src/test/groovy/DirContextCallSiteTest.groovy b/dd-java-agent/instrumentation/javax-naming/src/test/groovy/DirContextCallSiteTest.groovy index eed9695ab42..4d1de9b6bcf 100644 --- a/dd-java-agent/instrumentation/javax-naming/src/test/groovy/DirContextCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/javax-naming/src/test/groovy/DirContextCallSiteTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.LdapInjectionModule import foo.bar.TestDirContextSuite @@ -10,7 +10,7 @@ import javax.naming.directory.InitialDirContext import javax.naming.directory.SearchControls @CompileDynamic -class DirContextCallSiteTest extends AgentTestRunner { +class DirContextCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/javax-xml/src/test/groovy/datadog/trace/instrumentation/javax/xml/XPathInstrumentationTest.groovy b/dd-java-agent/instrumentation/javax-xml/src/test/groovy/datadog/trace/instrumentation/javax/xml/XPathInstrumentationTest.groovy index d5ce4883ee4..5a78655124d 100644 --- a/dd-java-agent/instrumentation/javax-xml/src/test/groovy/datadog/trace/instrumentation/javax/xml/XPathInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/javax-xml/src/test/groovy/datadog/trace/instrumentation/javax/xml/XPathInstrumentationTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.javax.xml -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.XPathInjectionModule import foo.bar.TestXPathSuite @@ -10,7 +10,7 @@ import javax.xml.parsers.DocumentBuilderFactory import javax.xml.xpath.XPathConstants import javax.xml.xpath.XPathFactory -class XPathInstrumentationTest extends AgentTestRunner { +class XPathInstrumentationTest extends InstrumentationSpecification { private static final String XML_STRING = """ diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JaxRsAnnotations1InstrumentationTest.groovy b/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JaxRsAnnotations1InstrumentationTest.groovy index bb594d64145..f54ddde50f5 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JaxRsAnnotations1InstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JaxRsAnnotations1InstrumentationTest.groovy @@ -1,6 +1,6 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.TraceInstrumentationConfig import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.instrumentation.jaxrs1.JaxRsAnnotationsDecorator @@ -14,7 +14,7 @@ import javax.ws.rs.POST import javax.ws.rs.PUT import javax.ws.rs.Path -class JaxRsAnnotations1InstrumentationTest extends AgentTestRunner { +class JaxRsAnnotations1InstrumentationTest extends InstrumentationSpecification { def "instrumentation can be used as root span and resource is set to METHOD PATH"() { setup: diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JerseyTest.groovy b/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JerseyTest.groovy index 8bedeff5232..ba6687b7bea 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JerseyTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JerseyTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import io.dropwizard.testing.junit.ResourceTestRule @@ -7,7 +7,7 @@ import spock.lang.Shared import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class JerseyTest extends AgentTestRunner { +class JerseyTest extends InstrumentationSpecification { @Shared @ClassRule diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/nestedTest/groovy/NestedResourcesTest.groovy b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/nestedTest/groovy/NestedResourcesTest.groovy index c720d556c64..061c180a279 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/nestedTest/groovy/NestedResourcesTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/nestedTest/groovy/NestedResourcesTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import io.dropwizard.testing.junit.ResourceTestRule @@ -9,7 +9,7 @@ import javax.ws.rs.core.Response import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class NestedResourcesTest extends AgentTestRunner { +class NestedResourcesTest extends InstrumentationSpecification { @Shared @ClassRule ResourceTestRule resources = ResourceTestRule.builder() diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsAnnotations2InstrumentationTest.groovy b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsAnnotations2InstrumentationTest.groovy index 4ee074d4c9e..fe542a6baac 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsAnnotations2InstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsAnnotations2InstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.TraceInstrumentationConfig import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.instrumentation.jaxrs2.JaxRsAnnotationsDecorator @@ -14,7 +14,7 @@ import javax.ws.rs.Path import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class JaxRsAnnotations2InstrumentationTest extends AgentTestRunner { +class JaxRsAnnotations2InstrumentationTest extends InstrumentationSpecification { def "instrumentation can be used as root span and resource is set to METHOD PATH"() { setup: diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsFilterTest.groovy b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsFilterTest.groovy index a2de27b8339..495dd6d7c13 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsFilterTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsFilterTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import io.dropwizard.testing.junit.ResourceTestRule @@ -19,7 +19,7 @@ import javax.ws.rs.ext.Provider import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -abstract class JaxRsFilterTest extends AgentTestRunner { +abstract class JaxRsFilterTest extends InstrumentationSpecification { @Shared SimpleRequestFilter simpleRequestFilter = new SimpleRequestFilter() diff --git a/dd-java-agent/instrumentation/jax-rs-client-2.0/connection-error-handling-jersey/src/test/groovy/WrappingResponseCallbackTest.groovy b/dd-java-agent/instrumentation/jax-rs-client-2.0/connection-error-handling-jersey/src/test/groovy/WrappingResponseCallbackTest.groovy index 3decbeb0044..052f465c962 100644 --- a/dd-java-agent/instrumentation/jax-rs-client-2.0/connection-error-handling-jersey/src/test/groovy/WrappingResponseCallbackTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-client-2.0/connection-error-handling-jersey/src/test/groovy/WrappingResponseCallbackTest.groovy @@ -1,6 +1,6 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.JAX_RS_EXCEPTION_AS_ERROR_ENABLED -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.jaxrs.ClientTracingFilter import javax.ws.rs.ProcessingException import org.glassfish.jersey.client.ClientConfig @@ -9,7 +9,7 @@ import org.glassfish.jersey.client.JerseyClient import org.glassfish.jersey.client.WrappingResponseCallback import org.glassfish.jersey.internal.MapPropertiesDelegate -class WrappingResponseCallbackTest extends AgentTestRunner { +class WrappingResponseCallbackTest extends InstrumentationSpecification { def "handleProcessingException properly utilizes the config"() { setup: if (jaxRsExceptionAsErrorEnabled != null) { diff --git a/dd-java-agent/instrumentation/jax-rs-client-2.0/connection-error-handling-resteasy/src/test/groovy/ResteasyClientConnectionErrorsInstrumentationTest.groovy b/dd-java-agent/instrumentation/jax-rs-client-2.0/connection-error-handling-resteasy/src/test/groovy/ResteasyClientConnectionErrorsInstrumentationTest.groovy index 53a87922730..f331cd389a3 100644 --- a/dd-java-agent/instrumentation/jax-rs-client-2.0/connection-error-handling-resteasy/src/test/groovy/ResteasyClientConnectionErrorsInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-client-2.0/connection-error-handling-resteasy/src/test/groovy/ResteasyClientConnectionErrorsInstrumentationTest.groovy @@ -1,12 +1,12 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.JAX_RS_EXCEPTION_AS_ERROR_ENABLED -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.connection_error.resteasy.ResteasyClientConnectionErrorInstrumentation import datadog.trace.instrumentation.jaxrs.ClientTracingFilter import org.jboss.resteasy.client.jaxrs.internal.ClientConfiguration import org.jboss.resteasy.spi.ResteasyProviderFactory -class ResteasyClientConnectionErrorsInstrumentationTest extends AgentTestRunner { +class ResteasyClientConnectionErrorsInstrumentationTest extends InstrumentationSpecification { def "handleError does not generate traces for non-exceptions"() { setup: if (jaxRsExceptionAsErrorEnabled != null) { diff --git a/dd-java-agent/instrumentation/jax-rs-client-2.0/connection-error-handling-resteasy/src/test/groovy/WrappedFutureTest.groovy b/dd-java-agent/instrumentation/jax-rs-client-2.0/connection-error-handling-resteasy/src/test/groovy/WrappedFutureTest.groovy index 59f1fe1de68..73d242dd783 100644 --- a/dd-java-agent/instrumentation/jax-rs-client-2.0/connection-error-handling-resteasy/src/test/groovy/WrappedFutureTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-client-2.0/connection-error-handling-resteasy/src/test/groovy/WrappedFutureTest.groovy @@ -1,13 +1,13 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.JAX_RS_EXCEPTION_AS_ERROR_ENABLED -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.connection_error.resteasy.WrappedFuture import datadog.trace.instrumentation.jaxrs.ClientTracingFilter import java.util.concurrent.CompletableFuture import org.jboss.resteasy.client.jaxrs.internal.ClientConfiguration import org.jboss.resteasy.spi.ResteasyProviderFactory -class WrappedFutureTest extends AgentTestRunner { +class WrappedFutureTest extends InstrumentationSpecification { def "wrappedFuture does not generate traces for non-exceptions"() { setup: if (jaxRsExceptionAsErrorEnabled != null) { diff --git a/dd-java-agent/instrumentation/jax-rs-client-2.0/src/test/groovy/JaxMultithreadedClientTest.groovy b/dd-java-agent/instrumentation/jax-rs-client-2.0/src/test/groovy/JaxMultithreadedClientTest.groovy index 279902dd9c7..8d5a4305fde 100644 --- a/dd-java-agent/instrumentation/jax-rs-client-2.0/src/test/groovy/JaxMultithreadedClientTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-client-2.0/src/test/groovy/JaxMultithreadedClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.glassfish.jersey.client.JerseyClientBuilder import spock.lang.AutoCleanup import spock.lang.Shared @@ -12,7 +12,7 @@ import java.util.concurrent.TimeUnit import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer -class JaxMultithreadedClientTest extends AgentTestRunner { +class JaxMultithreadedClientTest extends InstrumentationSpecification { @Shared ExecutorService executor = Executors.newFixedThreadPool(10) diff --git a/dd-java-agent/instrumentation/jax-ws-annotations-1/src/test/groovy/WebServiceTest.groovy b/dd-java-agent/instrumentation/jax-ws-annotations-1/src/test/groovy/WebServiceTest.groovy index 67a0d043233..02cd9bd4ad5 100644 --- a/dd-java-agent/instrumentation/jax-ws-annotations-1/src/test/groovy/WebServiceTest.groovy +++ b/dd-java-agent/instrumentation/jax-ws-annotations-1/src/test/groovy/WebServiceTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import static org.junit.Assert.fail -class WebServiceTest extends AgentTestRunner { +class WebServiceTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/jax-ws-annotations-2/src/test/groovy/WebServiceProviderTest.groovy b/dd-java-agent/instrumentation/jax-ws-annotations-2/src/test/groovy/WebServiceProviderTest.groovy index bf9ea21d44f..153b243c664 100644 --- a/dd-java-agent/instrumentation/jax-ws-annotations-2/src/test/groovy/WebServiceProviderTest.groovy +++ b/dd-java-agent/instrumentation/jax-ws-annotations-2/src/test/groovy/WebServiceProviderTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import static org.junit.Assert.fail -class WebServiceProviderTest extends AgentTestRunner { +class WebServiceProviderTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/jdbc/build.gradle b/dd-java-agent/instrumentation/jdbc/build.gradle index c7542d24e2b..dd9225c9ae1 100644 --- a/dd-java-agent/instrumentation/jdbc/build.gradle +++ b/dd-java-agent/instrumentation/jdbc/build.gradle @@ -3,6 +3,10 @@ plugins { id 'me.champeau.jmh' } +ext { + latestDepJava11TestMinJavaVersionForTests = JavaVersion.VERSION_11 +} + muzzle { pass { coreJdk() @@ -21,7 +25,7 @@ addTestSuiteExtendingForDir('latestDepJava11Test', 'latestDepTest', 'test') dependencies { compileOnly group: 'com.zaxxer', name: 'HikariCP', version: '2.4.0' - testImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + testImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') // jdbc unit testing testImplementation group: 'com.h2database', name: 'h2', version: '[1.3.168,1.3.169]'// first jdk 1.6 compatible diff --git a/dd-java-agent/instrumentation/jdbc/scalikejdbc/src/test/groovy/ScalikeJDBCInstrumentationTest.groovy b/dd-java-agent/instrumentation/jdbc/scalikejdbc/src/test/groovy/ScalikeJDBCInstrumentationTest.groovy index aa46641ceeb..c2644ff25d9 100644 --- a/dd-java-agent/instrumentation/jdbc/scalikejdbc/src/test/groovy/ScalikeJDBCInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/scalikejdbc/src/test/groovy/ScalikeJDBCInstrumentationTest.groovy @@ -1,7 +1,7 @@ import com.mchange.v2.c3p0.ComboPooledDataSource import com.zaxxer.hikari.HikariConfig import com.zaxxer.hikari.HikariDataSource -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import spock.lang.Shared @@ -11,7 +11,7 @@ import javax.sql.DataSource import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class ScalikeJDBCInstrumentationTest extends AgentTestRunner { +class ScalikeJDBCInstrumentationTest extends InstrumentationSpecification { @Shared def dbName = "scalikejdbcUnitTest" diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/DBMInjectionForkedTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/DBMInjectionForkedTest.groovy index 12ecd5e4b85..9057295752b 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/DBMInjectionForkedTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/DBMInjectionForkedTest.groovy @@ -1,11 +1,11 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.TraceInstrumentationConfig import datadog.trace.api.config.TracerConfig import test.TestConnection import test.TestPreparedStatement import test.TestStatement -class DBMInjectionForkedTest extends AgentTestRunner { +class DBMInjectionForkedTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCConnectionUrlParserTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCConnectionUrlParserTest.groovy index 75e9c4e2d70..22d7565dfd2 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCConnectionUrlParserTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCConnectionUrlParserTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.jdbc.DBInfo import spock.lang.Shared import static datadog.trace.bootstrap.instrumentation.jdbc.JDBCConnectionUrlParser.extractDBInfo -class JDBCConnectionUrlParserTest extends AgentTestRunner { +class JDBCConnectionUrlParserTest extends InstrumentationSpecification { @Shared def stdProps = { diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCDecoratorTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCDecoratorTest.groovy index 1cc7c76ea1c..f08c7bda13b 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCDecoratorTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCDecoratorTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.jdbc.DBInfo import static datadog.trace.api.config.TraceInstrumentationConfig.DB_DBM_PROPAGATION_MODE_MODE import static datadog.trace.instrumentation.jdbc.JDBCDecorator.DECORATE -abstract class JDBCDecoratorTest extends AgentTestRunner { +abstract class JDBCDecoratorTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCWrappedInterfacesTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCWrappedInterfacesTest.groovy index db15558d196..d3477bdb9d5 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCWrappedInterfacesTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCWrappedInterfacesTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import org.h2.Driver @@ -14,7 +14,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace * This tests all combinations of wrapped/unwrapped connections and prepared statements * H2 classes are called out because the don't implement the Wrapper interface. They are based an older spec leading to AbstractMethodError */ -class JDBCWrappedInterfacesTest extends AgentTestRunner { +class JDBCWrappedInterfacesTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy index ce516c91035..11c6c05d51a 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.BaseHash import datadog.trace.api.Config import datadog.trace.api.ProcessTags @@ -6,9 +6,10 @@ import datadog.trace.bootstrap.instrumentation.api.AgentSpan import datadog.trace.bootstrap.instrumentation.api.AgentTracer import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.instrumentation.jdbc.SQLCommenter + import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class SQLCommenterTest extends AgentTestRunner { +class SQLCommenterTest extends InstrumentationSpecification { def "test find first word"() { setup: diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLServerInjectionForkedTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLServerInjectionForkedTest.groovy index e2cf09b8ddd..7b621e225e0 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLServerInjectionForkedTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLServerInjectionForkedTest.groovy @@ -1,12 +1,12 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.TraceInstrumentationConfig import test.TestConnection import test.TestDatabaseMetaData import test.TestStatement -class SQLServerInjectionForkedTest extends AgentTestRunner { +class SQLServerInjectionForkedTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/jersey/build.gradle b/dd-java-agent/instrumentation/jersey/build.gradle index 6994d611389..e256037374d 100644 --- a/dd-java-agent/instrumentation/jersey/build.gradle +++ b/dd-java-agent/instrumentation/jersey/build.gradle @@ -44,11 +44,11 @@ dependencies { testImplementation group: 'jakarta.ws.rs', name: 'jakarta.ws.rs-api', version: '3.0.0' testImplementation group: 'org.glassfish.jersey.core', name: 'jersey-common', version: jersey3Version - jersey2JettyTestImplementation project(':dd-java-agent:testing'), { + jersey2JettyTestImplementation project(':dd-java-agent:instrumentation-testing'), { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } - jersey2JettyTestImplementation testFixtures(project(':dd-java-agent:appsec')) - jersey2JettyTestImplementation testFixtures(project(':dd-java-agent:agent-iast')) + jersey2JettyTestImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') + jersey2JettyTestImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') jersey2JettyTestImplementation group: 'org.glassfish.jersey.containers', name: 'jersey-container-jetty-http', version : jersey2Version jersey2JettyTestImplementation group: 'org.glassfish.jersey.media', name: 'jersey-media-multipart', version: jersey2Version jersey2JettyTestImplementation group: 'org.glassfish.jersey.media', name: 'jersey-media-json-jackson', version: jersey2Version @@ -58,11 +58,11 @@ dependencies { jersey2JettyTestRuntimeOnly project(':dd-java-agent:instrumentation:jersey-2-appsec') jersey2JettyTestRuntimeOnly project(':dd-java-agent:instrumentation:jax-rs-annotations-2') - jersey3JettyTestImplementation project(':dd-java-agent:testing'), { + jersey3JettyTestImplementation project(':dd-java-agent:instrumentation-testing'), { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } - jersey3JettyTestImplementation testFixtures(project(':dd-java-agent:appsec')) - jersey3JettyTestImplementation testFixtures(project(':dd-java-agent:agent-iast')) + jersey3JettyTestImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') + jersey3JettyTestImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') jersey3JettyTestImplementation group: 'org.glassfish.jersey.containers', name: 'jersey-container-jetty-http', version : jersey3Version jersey3JettyTestImplementation group: 'org.glassfish.jersey.media', name: 'jersey-media-multipart', version: jersey3Version jersey3JettyTestImplementation group: 'org.glassfish.jersey.media', name: 'jersey-media-json-jackson', version: jersey3Version diff --git a/dd-java-agent/instrumentation/jersey/src/test/groovy/datadog/trace/instrumentation/jersey/JakartaWSResponseInstrumentationTest.groovy b/dd-java-agent/instrumentation/jersey/src/test/groovy/datadog/trace/instrumentation/jersey/JakartaWSResponseInstrumentationTest.groovy index 1866d801bb9..43e640f490a 100644 --- a/dd-java-agent/instrumentation/jersey/src/test/groovy/datadog/trace/instrumentation/jersey/JakartaWSResponseInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jersey/src/test/groovy/datadog/trace/instrumentation/jersey/JakartaWSResponseInstrumentationTest.groovy @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.jersey -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.HttpResponseHeaderModule import datadog.trace.api.iast.sink.UnvalidatedRedirectModule import jakarta.ws.rs.core.NewCookie import jakarta.ws.rs.core.Response -class JakartaWSResponseInstrumentationTest extends AgentTestRunner { +class JakartaWSResponseInstrumentationTest extends InstrumentationSpecification { @Override diff --git a/dd-java-agent/instrumentation/jetty-11/build.gradle b/dd-java-agent/instrumentation/jetty-11/build.gradle index 12f5dc77c96..9b4c0b31be4 100644 --- a/dd-java-agent/instrumentation/jetty-11/build.gradle +++ b/dd-java-agent/instrumentation/jetty-11/build.gradle @@ -43,11 +43,11 @@ dependencies { - testFixturesImplementation(project(':dd-java-agent:testing')) { + testFixturesImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } // Don't want to conflict with jetty from the test server. - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testImplementation ("org.eclipse.jetty:jetty-server:11.0.0") { @@ -61,7 +61,7 @@ dependencies { } testImplementation(project(':dd-java-agent:instrumentation:jetty-appsec-9.3')) testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:request-5')) - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty-9') testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:request-5') testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:javax-websocket-1.0') diff --git a/dd-java-agent/instrumentation/jetty-11/src/test/groovy/HttpChannelAppSecTest.groovy b/dd-java-agent/instrumentation/jetty-11/src/test/groovy/HttpChannelAppSecTest.groovy index 4cff73246b2..9e52f3611d7 100644 --- a/dd-java-agent/instrumentation/jetty-11/src/test/groovy/HttpChannelAppSecTest.groovy +++ b/dd-java-agent/instrumentation/jetty-11/src/test/groovy/HttpChannelAppSecTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import net.bytebuddy.jar.asm.ClassReader import net.bytebuddy.jar.asm.ClassVisitor import net.bytebuddy.jar.asm.MethodVisitor @@ -9,7 +9,7 @@ import java.lang.instrument.ClassFileTransformer import java.lang.instrument.IllegalClassFormatException import java.security.ProtectionDomain -class HttpChannelAppSecTest extends AgentTestRunner { +class HttpChannelAppSecTest extends InstrumentationSpecification { void 'test blocking capabilities in HttpChannel'() { given: diff --git a/dd-java-agent/instrumentation/jetty-12/build.gradle b/dd-java-agent/instrumentation/jetty-12/build.gradle index 470dfbe1d3a..3ed11dcdb1c 100644 --- a/dd-java-agent/instrumentation/jetty-12/build.gradle +++ b/dd-java-agent/instrumentation/jetty-12/build.gradle @@ -63,7 +63,7 @@ dependencies { implementation project(':dd-java-agent:instrumentation:jetty-common') // Don't want to conflict with jetty from the test server. - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testImplementation ("org.eclipse.jetty:jetty-server:12.0.0") { @@ -78,7 +78,7 @@ dependencies { testRuntimeOnly project(":dd-java-agent:instrumentation:websocket:jetty-websocket:jetty-websocket-10") testRuntimeOnly project(":dd-java-agent:instrumentation:websocket:jetty-websocket:jetty-websocket-11") testRuntimeOnly project(":dd-java-agent:instrumentation:websocket:jetty-websocket:jetty-websocket-12") - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:jetty-9') testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:request-5') testRuntimeOnly(project(':dd-java-agent:instrumentation:jetty-11')) diff --git a/dd-java-agent/instrumentation/jetty-7.0/build.gradle b/dd-java-agent/instrumentation/jetty-7.0/build.gradle index 7c2473439a5..8667f3cbc25 100644 --- a/dd-java-agent/instrumentation/jetty-7.0/build.gradle +++ b/dd-java-agent/instrumentation/jetty-7.0/build.gradle @@ -17,7 +17,7 @@ dependencies { implementation project(':dd-java-agent:instrumentation:jetty-common') // Don't want to conflict with jetty from the test server. - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testImplementation project(':dd-java-agent:instrumentation:jetty-util') diff --git a/dd-java-agent/instrumentation/jetty-7.6/build.gradle b/dd-java-agent/instrumentation/jetty-7.6/build.gradle index d8277cab97e..d4fdc0fd6bd 100644 --- a/dd-java-agent/instrumentation/jetty-7.6/build.gradle +++ b/dd-java-agent/instrumentation/jetty-7.6/build.gradle @@ -17,7 +17,7 @@ dependencies { implementation project(':dd-java-agent:instrumentation:jetty-common') // Don't want to conflict with jetty from the test server. - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testImplementation project(':dd-java-agent:instrumentation:jetty-util') diff --git a/dd-java-agent/instrumentation/jetty-9/build.gradle b/dd-java-agent/instrumentation/jetty-9/build.gradle index de8c939dab4..ed8051b5cf4 100644 --- a/dd-java-agent/instrumentation/jetty-9/build.gradle +++ b/dd-java-agent/instrumentation/jetty-9/build.gradle @@ -163,11 +163,11 @@ dependencies { builtBy = ['compileJava'] } - testFixturesImplementation(project(':dd-java-agent:testing')) { + testFixturesImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } // Don't want to conflict with jetty from the test server. - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testImplementation project(':dd-java-agent:instrumentation:jetty-util') @@ -187,7 +187,7 @@ dependencies { testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jetty-websocket:jetty-websocket-10') testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:request-3')) testFixturesImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:request-3')) - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.2.30.v20200428' jetty92TestImplementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.2.30.v20200428' diff --git a/dd-java-agent/instrumentation/jetty-client/jetty-client-10.0/build.gradle b/dd-java-agent/instrumentation/jetty-client/jetty-client-10.0/build.gradle index bef44b496ae..ab6e34c6d3e 100644 --- a/dd-java-agent/instrumentation/jetty-client/jetty-client-10.0/build.gradle +++ b/dd-java-agent/instrumentation/jetty-client/jetty-client-10.0/build.gradle @@ -38,11 +38,12 @@ dependencies { } //because contains some instrumentation that still apply testImplementation(project(':dd-java-agent:instrumentation:jetty-client:jetty-client-9.1')) - testImplementation(project(path:':dd-java-agent:testing', configuration:'shadow')) { + testImplementation(project(path:':dd-java-agent:testing', 'configuration': 'shadow')) { // explicitly declared below. exclude group: 'org.eclipse.jetty' } testImplementation project(':dd-java-agent:instrumentation:jetty-util') + testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '10.0.0' testImplementation group: 'org.eclipse.jetty', name: 'jetty-client', version: '10.0.0' jetty10LatestDepTestImplementation group: 'org.eclipse.jetty', name: 'jetty-client', version: '10.+' jetty11TestImplementation group: 'org.eclipse.jetty', name: 'jetty-client', version: '11.0.0' diff --git a/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/build.gradle b/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/build.gradle index f726648b022..d6b8994dce2 100644 --- a/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/build.gradle +++ b/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/build.gradle @@ -31,7 +31,7 @@ dependencies { testImplementation(project(':dd-java-agent:instrumentation:jetty-client:jetty-client-9.1')) testImplementation(project(':dd-java-agent:instrumentation:jetty-client:jetty-client-10.0')) - testImplementation(project(path:':dd-java-agent:testing', configuration:'shadow')) { + testImplementation(project(path:':dd-java-agent:testing', 'configuration': 'shadow')) { // explicitly declared below. exclude group: 'org.eclipse.jetty' } diff --git a/dd-java-agent/instrumentation/jetty-client/jetty-client-9.1/build.gradle b/dd-java-agent/instrumentation/jetty-client/jetty-client-9.1/build.gradle index 0b606c3bc8b..18579cc66fb 100644 --- a/dd-java-agent/instrumentation/jetty-client/jetty-client-9.1/build.gradle +++ b/dd-java-agent/instrumentation/jetty-client/jetty-client-9.1/build.gradle @@ -51,7 +51,7 @@ dependencies { implementation(project(':dd-java-agent:instrumentation:jetty-client:jetty-client-common')) { transitive = false } - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { // explicitly declared below. exclude group: 'org.eclipse.jetty' } diff --git a/dd-java-agent/instrumentation/jetty-common/build.gradle b/dd-java-agent/instrumentation/jetty-common/build.gradle index cdf037556ae..b72b2c63300 100644 --- a/dd-java-agent/instrumentation/jetty-common/build.gradle +++ b/dd-java-agent/instrumentation/jetty-common/build.gradle @@ -6,7 +6,7 @@ addTestSuiteForDir('latestDepTest', 'test') dependencies { compileOnly group: 'org.eclipse.jetty', name: 'jetty-server', version: '7.0.0.v20091005' - testImplementation project(':dd-java-agent:testing'), { + testImplementation project(':dd-java-agent:instrumentation-testing'), { exclude group: 'org.eclipse.jetty' } testImplementation group: 'org.eclipse.jetty', name: 'jetty-server', version: '7.0.0.v20091005' diff --git a/dd-java-agent/instrumentation/jetty-common/src/test/groovy/datadog/trace/instrumentation/jetty/JettyBlockingHelperSpecification.groovy b/dd-java-agent/instrumentation/jetty-common/src/test/groovy/datadog/trace/instrumentation/jetty/JettyBlockingHelperSpecification.groovy index f1b5173cfd2..dcf9c7bed42 100644 --- a/dd-java-agent/instrumentation/jetty-common/src/test/groovy/datadog/trace/instrumentation/jetty/JettyBlockingHelperSpecification.groovy +++ b/dd-java-agent/instrumentation/jetty-common/src/test/groovy/datadog/trace/instrumentation/jetty/JettyBlockingHelperSpecification.groovy @@ -1,19 +1,16 @@ package datadog.trace.instrumentation.jetty import datadog.trace.api.gateway.Flow -import datadog.trace.api.gateway.RequestContext import datadog.trace.api.internal.TraceSegment -import datadog.trace.bootstrap.instrumentation.api.AgentSpan +import datadog.trace.test.util.DDSpecification import org.eclipse.jetty.server.Request import org.eclipse.jetty.server.Response -import spock.lang.Specification import javax.servlet.ServletOutputStream import static datadog.appsec.api.blocking.BlockingContentType.AUTO -// WARNING: Test is never found nor run -class JettyBlockingHelperSpecification extends Specification { +class JettyBlockingHelperSpecification extends DDSpecification { def 'block completes successfully'() { setup: Request req = Mock() @@ -21,20 +18,11 @@ class JettyBlockingHelperSpecification extends Specification { ServletOutputStream os = Mock() TraceSegment seg = Mock() def rba = new Flow.Action.RequestBlockingAction(402, AUTO) - RequestContext requestContext = Stub(RequestContext) { - getTraceSegment() >> seg - getBlockResponseFunction() >> rba - } - AgentSpan span = Stub(AgentSpan) { - getRequestContext() >> requestContext - getRequestBlockingAction() >> rba - } when: - JettyBlockingHelper.block(req, resp, span) + JettyBlockingHelper.block(seg, req, resp, rba.getStatusCode(), rba.getBlockingContentType(), rba.getExtraHeaders()) then: - false == true // Proof test is never run 1 * resp.isCommitted() >> false 1 * resp.setStatus(402) 1 * req.getHeader('Accept') >> 'text/html' diff --git a/dd-java-agent/instrumentation/jetty-util/src/test/groovy/JettyExecutorInstrumentationTest.groovy b/dd-java-agent/instrumentation/jetty-util/src/test/groovy/JettyExecutorInstrumentationTest.groovy index 8d0cf85dcf7..542bfcd614f 100644 --- a/dd-java-agent/instrumentation/jetty-util/src/test/groovy/JettyExecutorInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jetty-util/src/test/groovy/JettyExecutorInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import datadog.trace.core.DDSpan import org.eclipse.jetty.util.thread.MonitoredQueuedThreadPool @@ -12,7 +12,7 @@ import java.util.concurrent.Executors import static org.junit.jupiter.api.Assumptions.assumeTrue -class JettyExecutorInstrumentationTest extends AgentTestRunner { +class JettyExecutorInstrumentationTest extends InstrumentationSpecification { @Shared ExecutorService exHolder = null diff --git a/dd-java-agent/instrumentation/jms/src/latestDepTest/groovy/JMS2Test.groovy b/dd-java-agent/instrumentation/jms/src/latestDepTest/groovy/JMS2Test.groovy index d18f606d0f8..c6796b5cf4e 100644 --- a/dd-java-agent/instrumentation/jms/src/latestDepTest/groovy/JMS2Test.groovy +++ b/dd-java-agent/instrumentation/jms/src/latestDepTest/groovy/JMS2Test.groovy @@ -1,5 +1,5 @@ import com.google.common.io.Files -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.ListWriterAssert import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.InstrumentationTags @@ -27,7 +27,7 @@ import javax.jms.TextMessage import java.util.concurrent.CountDownLatch import java.util.concurrent.atomic.AtomicReference -class JMS2Test extends AgentTestRunner { +class JMS2Test extends InstrumentationSpecification { @Shared HornetQServer server @Shared diff --git a/dd-java-agent/instrumentation/jms/src/latestDepTest/groovy/SpringListenerJMS2Test.groovy b/dd-java-agent/instrumentation/jms/src/latestDepTest/groovy/SpringListenerJMS2Test.groovy index e17959375bb..0856cdab048 100644 --- a/dd-java-agent/instrumentation/jms/src/latestDepTest/groovy/SpringListenerJMS2Test.groovy +++ b/dd-java-agent/instrumentation/jms/src/latestDepTest/groovy/SpringListenerJMS2Test.groovy @@ -16,7 +16,7 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import listener.Config import org.springframework.context.annotation.AnnotationConfigApplicationContext import org.springframework.jms.core.JmsTemplate @@ -26,7 +26,7 @@ import javax.jms.ConnectionFactory import static JMS2Test.consumerTrace import static JMS2Test.producerTrace -class SpringListenerJMS2Test extends AgentTestRunner { +class SpringListenerJMS2Test extends InstrumentationSpecification { def "receiving message in spring listener generates spans"() { setup: diff --git a/dd-java-agent/instrumentation/jms/src/latestDepTest/groovy/SpringTemplateJMS2Test.groovy b/dd-java-agent/instrumentation/jms/src/latestDepTest/groovy/SpringTemplateJMS2Test.groovy index 8cc4f2179c5..25163435b0c 100644 --- a/dd-java-agent/instrumentation/jms/src/latestDepTest/groovy/SpringTemplateJMS2Test.groovy +++ b/dd-java-agent/instrumentation/jms/src/latestDepTest/groovy/SpringTemplateJMS2Test.groovy @@ -1,5 +1,5 @@ import com.google.common.io.Files -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.hornetq.api.core.TransportConfiguration import org.hornetq.api.core.client.HornetQClient import org.hornetq.api.jms.HornetQJMSClient @@ -22,7 +22,7 @@ import java.util.concurrent.TimeUnit import static JMS2Test.consumerTrace import static JMS2Test.producerTrace -class SpringTemplateJMS2Test extends AgentTestRunner { +class SpringTemplateJMS2Test extends InstrumentationSpecification { @Shared HornetQServer server @Shared diff --git a/dd-java-agent/instrumentation/jms/src/test/groovy/MDBTest.groovy b/dd-java-agent/instrumentation/jms/src/test/groovy/MDBTest.groovy index 20f59672d72..8baadc802a3 100644 --- a/dd-java-agent/instrumentation/jms/src/test/groovy/MDBTest.groovy +++ b/dd-java-agent/instrumentation/jms/src/test/groovy/MDBTest.groovy @@ -1,11 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.ListWriterAssert import spock.lang.Shared -import static datadog.trace.agent.test.asserts.ListWriterAssert.assertTraces import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class MDBTest extends AgentTestRunner { +class MDBTest extends InstrumentationSpecification { @Shared def msg = new MDBJmsMsg() diff --git a/dd-java-agent/instrumentation/jms/src/test/groovy/SpringListenerJMS1Test.groovy b/dd-java-agent/instrumentation/jms/src/test/groovy/SpringListenerJMS1Test.groovy index 87e9db12514..5c8e4f259e8 100644 --- a/dd-java-agent/instrumentation/jms/src/test/groovy/SpringListenerJMS1Test.groovy +++ b/dd-java-agent/instrumentation/jms/src/test/groovy/SpringListenerJMS1Test.groovy @@ -15,7 +15,7 @@ */ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.test.util.Flaky import listener.Config import org.apache.activemq.junit.EmbeddedActiveMQBroker @@ -28,7 +28,7 @@ import static JMS1Test.consumerTrace import static JMS1Test.producerTrace @Flaky -class SpringListenerJMS1Test extends AgentTestRunner { +class SpringListenerJMS1Test extends InstrumentationSpecification { def "receiving message in spring listener generates spans"() { setup: diff --git a/dd-java-agent/instrumentation/jms/src/test/groovy/SpringTemplateJMS1Test.groovy b/dd-java-agent/instrumentation/jms/src/test/groovy/SpringTemplateJMS1Test.groovy index f903466e125..66a0f229d5d 100644 --- a/dd-java-agent/instrumentation/jms/src/test/groovy/SpringTemplateJMS1Test.groovy +++ b/dd-java-agent/instrumentation/jms/src/test/groovy/SpringTemplateJMS1Test.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.test.util.Flaky import org.apache.activemq.ActiveMQConnectionFactory import org.apache.activemq.junit.EmbeddedActiveMQBroker @@ -13,7 +13,7 @@ import java.util.concurrent.TimeUnit import static JMS1Test.consumerTrace import static JMS1Test.producerTrace -class SpringTemplateJMS1Test extends AgentTestRunner { +class SpringTemplateJMS1Test extends InstrumentationSpecification { @Shared EmbeddedActiveMQBroker broker = new EmbeddedActiveMQBroker() @Shared diff --git a/dd-java-agent/instrumentation/jose-jwt/src/test/groovy/JWTParserInstrumentationTest.groovy b/dd-java-agent/instrumentation/jose-jwt/src/test/groovy/JWTParserInstrumentationTest.groovy index 2d649db0aa2..fad06f1c29a 100644 --- a/dd-java-agent/instrumentation/jose-jwt/src/test/groovy/JWTParserInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jose-jwt/src/test/groovy/JWTParserInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -6,7 +6,7 @@ import datadog.trace.api.iast.propagation.PropagationModule import datadog.trace.bootstrap.instrumentation.api.AgentTracer import datadog.trace.bootstrap.instrumentation.api.TagContext -class JWTParserInstrumentationTest extends AgentTestRunner { +class JWTParserInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/jsp-2.3/src/test/groovy/JSPTestBase.groovy b/dd-java-agent/instrumentation/jsp-2.3/src/test/groovy/JSPTestBase.groovy index d8fb6d7dc86..c23ec30388d 100644 --- a/dd-java-agent/instrumentation/jsp-2.3/src/test/groovy/JSPTestBase.groovy +++ b/dd-java-agent/instrumentation/jsp-2.3/src/test/groovy/JSPTestBase.groovy @@ -1,5 +1,5 @@ import com.google.common.io.Files -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.OkHttpUtils import datadog.trace.agent.test.utils.PortUtils import net.bytebuddy.utility.JavaModule @@ -9,7 +9,7 @@ import org.apache.catalina.LifecycleException import org.apache.catalina.startup.Tomcat import spock.lang.Shared -abstract class JSPTestBase extends AgentTestRunner { +abstract class JSPTestBase extends InstrumentationSpecification { @Shared int port @Shared diff --git a/dd-java-agent/instrumentation/junit-4.10/build.gradle b/dd-java-agent/instrumentation/junit-4.10/build.gradle index 64ed32abf76..8a6c4ffc0e1 100644 --- a/dd-java-agent/instrumentation/junit-4.10/build.gradle +++ b/dd-java-agent/instrumentation/junit-4.10/build.gradle @@ -19,7 +19,7 @@ tasks.named("compileLatestDepTestGroovy").configure { dependencies { compileOnly group: 'junit', name: 'junit', version: '4.10' - testImplementation testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') // version used below is not the minimum one that we support, // but the tests need to use it in order to be compliant with Spock 2.x diff --git a/dd-java-agent/instrumentation/junit-4.10/cucumber-junit-4/build.gradle b/dd-java-agent/instrumentation/junit-4.10/cucumber-junit-4/build.gradle index 871afe9b522..f41fa06eeac 100644 --- a/dd-java-agent/instrumentation/junit-4.10/cucumber-junit-4/build.gradle +++ b/dd-java-agent/instrumentation/junit-4.10/cucumber-junit-4/build.gradle @@ -14,7 +14,7 @@ dependencies { implementation project(':dd-java-agent:instrumentation:junit-4.10') compileOnly group: 'io.cucumber', name: 'cucumber-junit', version: '5.4.0' - testImplementation testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') // version used below is not the minimum one that we support, // but the tests need to use it in order to be compliant with Spock 2.x diff --git a/dd-java-agent/instrumentation/junit-4.10/junit-4.13/build.gradle b/dd-java-agent/instrumentation/junit-4.10/junit-4.13/build.gradle index 0de58ffa9c0..b29e570c575 100644 --- a/dd-java-agent/instrumentation/junit-4.10/junit-4.13/build.gradle +++ b/dd-java-agent/instrumentation/junit-4.10/junit-4.13/build.gradle @@ -14,7 +14,7 @@ dependencies { implementation project(':dd-java-agent:instrumentation:junit-4.10') compileOnly group: 'junit', name: 'junit', version: '4.13' - testImplementation testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') // version used below is not the minimum one that we support, // but the tests need to use it in order to be compliant with Spock 2.x diff --git a/dd-java-agent/instrumentation/junit-4.10/munit-junit-4/build.gradle b/dd-java-agent/instrumentation/junit-4.10/munit-junit-4/build.gradle index e3cda16d277..cf9775a506d 100644 --- a/dd-java-agent/instrumentation/junit-4.10/munit-junit-4/build.gradle +++ b/dd-java-agent/instrumentation/junit-4.10/munit-junit-4/build.gradle @@ -15,7 +15,7 @@ dependencies { implementation project(':dd-java-agent:instrumentation:junit-4.10') compileOnly group: 'org.scalameta', name: 'munit_2.13', version: '0.7.28' - testImplementation testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') // version used below is not the minimum one that we support, // but the tests need to use it in order to be compliant with Spock 2.x diff --git a/dd-java-agent/instrumentation/junit-5.3/build.gradle b/dd-java-agent/instrumentation/junit-5.3/build.gradle index 20560456845..cc51544c614 100644 --- a/dd-java-agent/instrumentation/junit-5.3/build.gradle +++ b/dd-java-agent/instrumentation/junit-5.3/build.gradle @@ -28,7 +28,7 @@ dependencies { compileOnly group: 'org.junit.platform', name: 'junit-platform-launcher', version: "$platformVersion" compileOnly group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: "$jupiterVersion" - testImplementation testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') // versions used below are not the minimum ones that we support, // but the tests need to use them in order to be compliant with Spock 2.x diff --git a/dd-java-agent/instrumentation/junit-5.3/cucumber-junit-5/build.gradle b/dd-java-agent/instrumentation/junit-5.3/cucumber-junit-5/build.gradle index 2d558b68c21..85b190534fa 100644 --- a/dd-java-agent/instrumentation/junit-5.3/cucumber-junit-5/build.gradle +++ b/dd-java-agent/instrumentation/junit-5.3/cucumber-junit-5/build.gradle @@ -17,7 +17,7 @@ dependencies { compileOnly group: 'io.cucumber', name: 'cucumber-junit-platform-engine', version: '5.4.0' compileOnly group: 'io.cucumber', name: 'cucumber-java', version: '5.4.0' - testImplementation testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') testImplementation group: 'org.junit.platform', name: 'junit-platform-launcher', version: '1.12.0' testImplementation group: 'org.junit.platform', name: 'junit-platform-suite', version: '1.12.0' diff --git a/dd-java-agent/instrumentation/junit-5.3/junit-5.8/build.gradle b/dd-java-agent/instrumentation/junit-5.3/junit-5.8/build.gradle index 7a236d02e8b..340f04855ec 100644 --- a/dd-java-agent/instrumentation/junit-5.3/junit-5.8/build.gradle +++ b/dd-java-agent/instrumentation/junit-5.3/junit-5.8/build.gradle @@ -32,7 +32,7 @@ dependencies { compileOnly group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: "$jupiterVersion" compileOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "$jupiterVersion" - testImplementation testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') // versions used below are not the minimum ones that we support, // but the tests need to use them in order to be compliant with Spock 2.x diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/build.gradle b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/build.gradle index 40134ed7360..34abb9356f6 100644 --- a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/build.gradle +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/build.gradle @@ -20,7 +20,7 @@ dependencies { compileOnly group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.7.2' compileOnly group: 'org.spockframework', name: 'spock-core', version: "2.0-groovy-${spockGroovyVersion}" - testImplementation testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') testImplementation group: 'org.junit.platform', name: 'junit-platform-launcher', version: '1.12.0' testImplementation group: 'org.spockframework', name: 'spock-core', version: "2.2-groovy-${spockGroovyVersion}" diff --git a/dd-java-agent/instrumentation/junit-5.3/src/test/java/org/example/TestFlaky.java b/dd-java-agent/instrumentation/junit-5.3/src/test/java/org/example/TestFlaky.java deleted file mode 100644 index 8681742e020..00000000000 --- a/dd-java-agent/instrumentation/junit-5.3/src/test/java/org/example/TestFlaky.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.example; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import org.junit.jupiter.api.Test; - -public class TestFlaky { - - public static int TEST_EXECUTIONS_IDX = 0; - - @Test - public void test_flake() { - assertEquals(0, TEST_EXECUTIONS_IDX++ % 2); - } -} diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/build.gradle b/dd-java-agent/instrumentation/kafka-clients-0.11/build.gradle index b7e069491ac..5df8c752ec0 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/build.gradle +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/build.gradle @@ -1,3 +1,6 @@ +import java.time.Duration +import java.time.temporal.ChronoUnit + muzzle { pass { name = "since-0.11" @@ -20,6 +23,13 @@ apply from: "$rootDir/gradle/java.gradle" addTestSuite('latestDepTest') addTestSuite('iastLatestDepTest3') +apply from: "$rootDir/gradle/configure_tests.gradle" + +// Increased time needed in CI due to migration from JUnit 4 SpockRunner to JUnit 5 SpockExtension +forkedTest { + timeout = Duration.of(15, ChronoUnit.MINUTES) +} + dependencies { compileOnly group: 'org.apache.kafka', name: 'kafka-clients', version: '0.11.0.0' implementation project(':dd-java-agent:instrumentation:kafka-common') @@ -34,7 +44,7 @@ dependencies { testRuntimeOnly project(':dd-java-agent:instrumentation:spring:spring-scheduling-3.1') testRuntimeOnly project(':dd-java-agent:instrumentation:reactor-core-3.1') testRuntimeOnly project(':dd-java-agent:instrumentation:reactive-streams') - testImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + testImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') // IAST testing dependencies @@ -62,7 +72,7 @@ dependencies { iastLatestDepTest3RuntimeOnly project(':dd-java-agent:instrumentation:jackson-core') iastLatestDepTest3RuntimeOnly project(':dd-java-agent:instrumentation:jackson-core:jackson-core-2.12') iastLatestDepTest3Implementation(group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.15.3') - iastLatestDepTest3Implementation(testFixtures(project(':dd-java-agent:agent-iast'))) + iastLatestDepTest3Implementation project(':dd-java-agent:agent-iast:iast-test-fixtures') } diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/KafkaClientCustomPropagationConfigTest.groovy b/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/KafkaClientCustomPropagationConfigTest.groovy index b85ba53974b..c9e45ac6a12 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/KafkaClientCustomPropagationConfigTest.groovy +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/KafkaClientCustomPropagationConfigTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.TraceInstrumentationConfig import datadog.trace.bootstrap.instrumentation.api.AgentSpan import org.apache.kafka.clients.consumer.ConsumerRecord @@ -24,7 +24,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan import static datadog.trace.instrumentation.kafka_clients.KafkaDecorator.KAFKA_PRODUCE -class KafkaClientCustomPropagationConfigTest extends AgentTestRunner { +class KafkaClientCustomPropagationConfigTest extends InstrumentationSpecification { static final SHARED_TOPIC = ["topic1", "topic2", "topic3", "topic4"] static final MESSAGE = "Testing without headers for certain topics" diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/KafkaReactorForkedTest.groovy b/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/KafkaReactorForkedTest.groovy index 30875d487e1..8bb8314421a 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/KafkaReactorForkedTest.groovy +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/KafkaReactorForkedTest.groovy @@ -1,7 +1,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.bootstrap.instrumentation.api.InstrumentationTags import datadog.trace.bootstrap.instrumentation.api.Tags @@ -26,7 +26,7 @@ import java.util.concurrent.CountDownLatch import java.util.concurrent.LinkedBlockingQueue import java.util.concurrent.TimeUnit -class KafkaReactorForkedTest extends AgentTestRunner { +class KafkaReactorForkedTest extends InstrumentationSpecification { @Rule // create 4 partitions for more parallelism KafkaEmbedded embeddedKafka = new KafkaEmbedded(1, true, 4, KafkaClientTestBase.SHARED_TOPIC) diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/TextMapExtractAdapterTest.groovy b/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/TextMapExtractAdapterTest.groovy index a6e227830c6..666a0d8357a 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/TextMapExtractAdapterTest.groovy +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/TextMapExtractAdapterTest.groovy @@ -1,5 +1,5 @@ import com.google.common.io.BaseEncoding -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.AgentPropagation import datadog.trace.instrumentation.kafka_clients.TextMapExtractAdapter import org.apache.kafka.common.header.Headers @@ -8,7 +8,7 @@ import org.apache.kafka.common.header.internals.RecordHeaders import java.nio.charset.StandardCharsets -class TextMapExtractAdapterTest extends AgentTestRunner { +class TextMapExtractAdapterTest extends InstrumentationSpecification { def "check can decode base64 mangled headers"() { given: diff --git a/dd-java-agent/instrumentation/kafka-clients-3.8/src/test/groovy/KafkaClientCustomPropagationConfigTest.groovy b/dd-java-agent/instrumentation/kafka-clients-3.8/src/test/groovy/KafkaClientCustomPropagationConfigTest.groovy index 9e083def0e4..08661cd0f5d 100644 --- a/dd-java-agent/instrumentation/kafka-clients-3.8/src/test/groovy/KafkaClientCustomPropagationConfigTest.groovy +++ b/dd-java-agent/instrumentation/kafka-clients-3.8/src/test/groovy/KafkaClientCustomPropagationConfigTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.TraceInstrumentationConfig import datadog.trace.bootstrap.instrumentation.api.AgentSpan import org.apache.kafka.clients.consumer.ConsumerRecord @@ -25,7 +25,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan import static datadog.trace.instrumentation.kafka_clients38.KafkaDecorator.KAFKA_PRODUCE -class KafkaClientCustomPropagationConfigTest extends AgentTestRunner { +class KafkaClientCustomPropagationConfigTest extends InstrumentationSpecification { static final SHARED_TOPIC = ["topic1", "topic2", "topic3", "topic4"] static final MESSAGE = "Testing without headers for certain topics" diff --git a/dd-java-agent/instrumentation/kafka-clients-3.8/src/test/groovy/TextMapExtractAdapterTest.groovy b/dd-java-agent/instrumentation/kafka-clients-3.8/src/test/groovy/TextMapExtractAdapterTest.groovy index a94e291a97f..103e2ed95ba 100644 --- a/dd-java-agent/instrumentation/kafka-clients-3.8/src/test/groovy/TextMapExtractAdapterTest.groovy +++ b/dd-java-agent/instrumentation/kafka-clients-3.8/src/test/groovy/TextMapExtractAdapterTest.groovy @@ -1,5 +1,5 @@ import com.google.common.io.BaseEncoding -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.AgentPropagation import datadog.trace.instrumentation.kafka_clients38.TextMapExtractAdapter import org.apache.kafka.common.header.Headers @@ -8,7 +8,7 @@ import org.apache.kafka.common.header.internals.RecordHeaders import java.nio.charset.StandardCharsets -class TextMapExtractAdapterTest extends AgentTestRunner { +class TextMapExtractAdapterTest extends InstrumentationSpecification { def "check can decode base64 mangled headers"() { given: diff --git a/dd-java-agent/instrumentation/kafka-connect-0.11/build.gradle b/dd-java-agent/instrumentation/kafka-connect-0.11/build.gradle index e5ac493608e..ff8c27051f0 100644 --- a/dd-java-agent/instrumentation/kafka-connect-0.11/build.gradle +++ b/dd-java-agent/instrumentation/kafka-connect-0.11/build.gradle @@ -13,7 +13,7 @@ apply from: "$rootDir/gradle/java.gradle" dependencies { compileOnly group: 'org.apache.kafka', name: 'connect-runtime', version: '0.11.0.0' - testImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + testImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:iast-instrumenter') testRuntimeOnly project(':dd-java-agent:instrumentation:java-lang') testRuntimeOnly project(':dd-java-agent:instrumentation:java-io') diff --git a/dd-java-agent/instrumentation/kafka-connect-0.11/src/test/groovy/ConnectWorkerInstrumentationTest.groovy b/dd-java-agent/instrumentation/kafka-connect-0.11/src/test/groovy/ConnectWorkerInstrumentationTest.groovy index 1b4a73aede0..bc7857d1f7a 100644 --- a/dd-java-agent/instrumentation/kafka-connect-0.11/src/test/groovy/ConnectWorkerInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/kafka-connect-0.11/src/test/groovy/ConnectWorkerInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.datastreams.StatsGroup import org.apache.kafka.clients.admin.AdminClient import org.apache.kafka.clients.admin.AdminClientConfig @@ -28,7 +28,7 @@ import java.time.Duration import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit -class ConnectWorkerInstrumentationTest extends AgentTestRunner { +class ConnectWorkerInstrumentationTest extends InstrumentationSpecification { @Shared EmbeddedKafkaBroker embeddedKafka = new EmbeddedKafkaBroker(1, false, 1, 'test-topic') diff --git a/dd-java-agent/instrumentation/kafka-streams-0.11/src/latestDepTest/groovy/KafkaStreamsTest.groovy b/dd-java-agent/instrumentation/kafka-streams-0.11/src/latestDepTest/groovy/KafkaStreamsTest.groovy index 436fdf6d68e..96bc5cb52d3 100644 --- a/dd-java-agent/instrumentation/kafka-streams-0.11/src/latestDepTest/groovy/KafkaStreamsTest.groovy +++ b/dd-java-agent/instrumentation/kafka-streams-0.11/src/latestDepTest/groovy/KafkaStreamsTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDTags import datadog.trace.bootstrap.instrumentation.api.InstrumentationTags import datadog.trace.bootstrap.instrumentation.api.Tags @@ -29,7 +29,7 @@ import java.util.concurrent.LinkedBlockingQueue import java.util.concurrent.TimeUnit @Flaky("https://github.com/DataDog/dd-trace-java/issues/3865") -class KafkaStreamsTest extends AgentTestRunner { +class KafkaStreamsTest extends InstrumentationSpecification { static final STREAM_PENDING = "test.pending" static final STREAM_PROCESSED = "test.processed" diff --git a/dd-java-agent/instrumentation/karate/build.gradle b/dd-java-agent/instrumentation/karate/build.gradle index 2832208a3f2..f5146cfc221 100644 --- a/dd-java-agent/instrumentation/karate/build.gradle +++ b/dd-java-agent/instrumentation/karate/build.gradle @@ -27,7 +27,7 @@ addTestSuiteForDir('karate131Test', 'test') dependencies { compileOnly group: 'com.intuit.karate', name: 'karate-core', version: '1.0.0' - testImplementation testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') testImplementation group: 'org.junit.platform', name: 'junit-platform-launcher', version: '1.8.2' testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.8.2' diff --git a/dd-java-agent/instrumentation/kotlin-coroutines/build.gradle b/dd-java-agent/instrumentation/kotlin-coroutines/build.gradle index 66935b361c3..9f723812ebc 100644 --- a/dd-java-agent/instrumentation/kotlin-coroutines/build.gradle +++ b/dd-java-agent/instrumentation/kotlin-coroutines/build.gradle @@ -47,7 +47,7 @@ dependencies { testFixturesImplementation libs.coroutines testFixturesApi project(':dd-trace-api') testFixturesApi project(':dd-java-agent:instrumentation:trace-annotation') - testFixturesApi project(':dd-java-agent:testing') + testFixturesApi project(':dd-java-agent:instrumentation-testing') testFixturesApi 'com.github.spotbugs:spotbugs-annotations:4.2.0' testImplementation libs.kotlin diff --git a/dd-java-agent/instrumentation/kotlin-coroutines/src/testFixtures/groovy/datadog/trace/instrumentation/kotlin/coroutines/AbstractKotlinCoroutineInstrumentationTest.groovy b/dd-java-agent/instrumentation/kotlin-coroutines/src/testFixtures/groovy/datadog/trace/instrumentation/kotlin/coroutines/AbstractKotlinCoroutineInstrumentationTest.groovy index 13f951a3570..15677471734 100644 --- a/dd-java-agent/instrumentation/kotlin-coroutines/src/testFixtures/groovy/datadog/trace/instrumentation/kotlin/coroutines/AbstractKotlinCoroutineInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/kotlin-coroutines/src/testFixtures/groovy/datadog/trace/instrumentation/kotlin/coroutines/AbstractKotlinCoroutineInstrumentationTest.groovy @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.kotlin.coroutines -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ThreadPoolDispatcherKt import spock.lang.Shared -abstract class AbstractKotlinCoroutineInstrumentationTest extends AgentTestRunner { +abstract class AbstractKotlinCoroutineInstrumentationTest extends InstrumentationSpecification { protected abstract T getCoreKotlinCoroutineTestsInstance(CoroutineDispatcher dispatcher) diff --git a/dd-java-agent/instrumentation/liberty-20/build.gradle b/dd-java-agent/instrumentation/liberty-20/build.gradle index 0f5829507ab..3bd1b8259f4 100644 --- a/dd-java-agent/instrumentation/liberty-20/build.gradle +++ b/dd-java-agent/instrumentation/liberty-20/build.gradle @@ -29,7 +29,7 @@ dependencies { implementation project(':dd-java-agent:instrumentation:servlet-common') testImplementation files({ tasks.installOpenLibertyDeps.wsServerJar }) - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:osgi-4.3') testRuntimeOnly files({ tasks.filterLogbackClassic.filteredLogbackDir }) testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:request-3') diff --git a/dd-java-agent/instrumentation/liberty-23/build.gradle b/dd-java-agent/instrumentation/liberty-23/build.gradle index fc97f44a6a0..56c5a933e47 100644 --- a/dd-java-agent/instrumentation/liberty-23/build.gradle +++ b/dd-java-agent/instrumentation/liberty-23/build.gradle @@ -31,7 +31,7 @@ dependencies { implementation project(':dd-java-agent:instrumentation:servlet:request-5') testImplementation files({ tasks.installOpenLibertyDeps.wsServerJar }) - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:osgi-4.3') testRuntimeOnly files({ tasks.filterLogbackClassic.filteredLogbackDir }) testRuntimeOnly project(':dd-java-agent:instrumentation:liberty-20') diff --git a/dd-java-agent/instrumentation/log4j1/src/test/groovy/MdcTest.groovy b/dd-java-agent/instrumentation/log4j1/src/test/groovy/MdcTest.groovy index f457cf5bb3f..f79fccda5d3 100644 --- a/dd-java-agent/instrumentation/log4j1/src/test/groovy/MdcTest.groovy +++ b/dd-java-agent/instrumentation/log4j1/src/test/groovy/MdcTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.apache.log4j.Category import org.apache.log4j.MDC import org.apache.log4j.Priority import org.apache.log4j.spi.LoggingEvent -class MdcTest extends AgentTestRunner { +class MdcTest extends InstrumentationSpecification { def "should preserve mdc when logging injection is #injectionEnabled"() { setup: injectSysConfig("logs.injection", injectionEnabled) diff --git a/dd-java-agent/instrumentation/log4j2/logs-intake/src/test/groovy/Log4jDatadogAppenderTest.groovy b/dd-java-agent/instrumentation/log4j2/logs-intake/src/test/groovy/Log4jDatadogAppenderTest.groovy index e0dfd8cd5d5..b69608b32d0 100644 --- a/dd-java-agent/instrumentation/log4j2/logs-intake/src/test/groovy/Log4jDatadogAppenderTest.groovy +++ b/dd-java-agent/instrumentation/log4j2/logs-intake/src/test/groovy/Log4jDatadogAppenderTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.GeneralConfig import datadog.trace.api.logging.intake.LogsIntake import datadog.trace.api.logging.intake.LogsWriter @@ -10,7 +10,7 @@ import spock.util.environment.Jvm import java.nio.file.Files import java.nio.file.Path -class Log4jDatadogAppenderTest extends AgentTestRunner { +class Log4jDatadogAppenderTest extends InstrumentationSpecification { private static Path agentKeyFile private static DummyLogsWriter logsWriter diff --git a/dd-java-agent/instrumentation/maven-3.2.1/build.gradle b/dd-java-agent/instrumentation/maven-3.2.1/build.gradle index f2148ebea1c..6afad36c487 100644 --- a/dd-java-agent/instrumentation/maven-3.2.1/build.gradle +++ b/dd-java-agent/instrumentation/maven-3.2.1/build.gradle @@ -14,7 +14,7 @@ addTestSuiteForDir('latestDepTest', 'test') dependencies { compileOnly 'org.apache.maven:maven-embedder:3.2.1' - testImplementation testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') // this is not the earliest version of Maven that we support, // but using the earliest one is not possible here because of dependency conflicts diff --git a/dd-java-agent/instrumentation/mongo/driver-3.1/src/test/groovy/BsonScrubber31Test.groovy b/dd-java-agent/instrumentation/mongo/driver-3.1/src/test/groovy/BsonScrubber31Test.groovy index 88631851eb6..b96c19f7034 100644 --- a/dd-java-agent/instrumentation/mongo/driver-3.1/src/test/groovy/BsonScrubber31Test.groovy +++ b/dd-java-agent/instrumentation/mongo/driver-3.1/src/test/groovy/BsonScrubber31Test.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.mongo.BsonScrubber31 import org.bson.BsonDocument import org.bson.BsonDocumentReader -class BsonScrubber31Test extends AgentTestRunner { +class BsonScrubber31Test extends InstrumentationSpecification { def "test BSON scrubber"() { setup: diff --git a/dd-java-agent/instrumentation/mongo/driver-3.4/src/test/groovy/BsonScrubber34Test.groovy b/dd-java-agent/instrumentation/mongo/driver-3.4/src/test/groovy/BsonScrubber34Test.groovy index d7e7befbcc9..c019c2e5c2d 100644 --- a/dd-java-agent/instrumentation/mongo/driver-3.4/src/test/groovy/BsonScrubber34Test.groovy +++ b/dd-java-agent/instrumentation/mongo/driver-3.4/src/test/groovy/BsonScrubber34Test.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.mongo.BsonScrubber34 import org.bson.BsonDocument import org.bson.BsonDocumentReader -class BsonScrubber34Test extends AgentTestRunner { +class BsonScrubber34Test extends InstrumentationSpecification { def "test BSON scrubber"() { setup: diff --git a/dd-java-agent/instrumentation/netty-4.0/src/test/groovy/Netty40PipelineTest.groovy b/dd-java-agent/instrumentation/netty-4.0/src/test/groovy/Netty40PipelineTest.groovy index bc6f6af2c48..9ea23bb4af4 100644 --- a/dd-java-agent/instrumentation/netty-4.0/src/test/groovy/Netty40PipelineTest.groovy +++ b/dd-java-agent/instrumentation/netty-4.0/src/test/groovy/Netty40PipelineTest.groovy @@ -1,11 +1,11 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.netty40.client.HttpClientTracingHandler import io.netty.channel.ChannelHandler import io.netty.channel.ChannelHandlerContext import io.netty.channel.embedded.EmbeddedChannel import io.netty.handler.codec.http.HttpClientCodec -class Netty40PipelineTest extends AgentTestRunner { +class Netty40PipelineTest extends InstrumentationSpecification { def "when a handler is added to the netty pipeline we add our tracing handler"() { setup: diff --git a/dd-java-agent/instrumentation/netty-4.1/src/test/groovy/Netty41PipelineTest.groovy b/dd-java-agent/instrumentation/netty-4.1/src/test/groovy/Netty41PipelineTest.groovy index c141dd42f1e..3d390bdb1d9 100644 --- a/dd-java-agent/instrumentation/netty-4.1/src/test/groovy/Netty41PipelineTest.groovy +++ b/dd-java-agent/instrumentation/netty-4.1/src/test/groovy/Netty41PipelineTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.netty41.client.HttpClientTracingHandler import io.netty.channel.Channel import io.netty.channel.ChannelHandler @@ -7,7 +7,7 @@ import io.netty.channel.ChannelInitializer import io.netty.channel.embedded.EmbeddedChannel import io.netty.handler.codec.http.HttpClientCodec -class Netty41PipelineTest extends AgentTestRunner { +class Netty41PipelineTest extends InstrumentationSpecification { def "when a handler is added to the netty pipeline we add our tracing handler"() { setup: diff --git a/dd-java-agent/instrumentation/netty-concurrent-4/src/test/groovy/TimingTest.groovy b/dd-java-agent/instrumentation/netty-concurrent-4/src/test/groovy/TimingTest.groovy index e5a5fcf561f..b6f8cbe5f86 100644 --- a/dd-java-agent/instrumentation/netty-concurrent-4/src/test/groovy/TimingTest.groovy +++ b/dd-java-agent/instrumentation/netty-concurrent-4/src/test/groovy/TimingTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.TestProfilingContextIntegration import datadog.trace.bootstrap.instrumentation.jfr.InstrumentationBasedProfiling import io.netty.util.concurrent.DefaultEventExecutorGroup @@ -8,7 +8,7 @@ import java.util.concurrent.TimeUnit import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class TimingTest extends AgentTestRunner { +class TimingTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/ognl-appsec/src/test/groovy/datadog/trace/instrumentation/ognl/OgnlInstrumentationSpec.groovy b/dd-java-agent/instrumentation/ognl-appsec/src/test/groovy/datadog/trace/instrumentation/ognl/OgnlInstrumentationSpec.groovy index 473d3cecad6..16282c29911 100644 --- a/dd-java-agent/instrumentation/ognl-appsec/src/test/groovy/datadog/trace/instrumentation/ognl/OgnlInstrumentationSpec.groovy +++ b/dd-java-agent/instrumentation/ognl-appsec/src/test/groovy/datadog/trace/instrumentation/ognl/OgnlInstrumentationSpec.groovy @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.ognl -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.AgentSpan import datadog.trace.bootstrap.instrumentation.api.AgentTracer import ognl.Ognl -class OgnlInstrumentationSpec extends AgentTestRunner { +class OgnlInstrumentationSpec extends InstrumentationSpecification { void 'creates a new span for ognl parsing expressions'() { when: AgentSpan span = AgentTracer.get().buildSpan("top-span").start() diff --git a/dd-java-agent/instrumentation/okhttp-2/build.gradle b/dd-java-agent/instrumentation/okhttp-2/build.gradle index db2c0e30f72..c21ff0254ac 100644 --- a/dd-java-agent/instrumentation/okhttp-2/build.gradle +++ b/dd-java-agent/instrumentation/okhttp-2/build.gradle @@ -28,7 +28,7 @@ dependencies { exclude module: 'okhttp' } - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude module: 'okhttp' } testImplementation(project(':dd-java-agent:instrumentation:java-concurrent')) { diff --git a/dd-java-agent/instrumentation/okhttp-2/src/test/groovy/IastOkHttp2InstrumentationTest.groovy b/dd-java-agent/instrumentation/okhttp-2/src/test/groovy/IastOkHttp2InstrumentationTest.groovy index 42d4909eb17..c836d978c20 100644 --- a/dd-java-agent/instrumentation/okhttp-2/src/test/groovy/IastOkHttp2InstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/okhttp-2/src/test/groovy/IastOkHttp2InstrumentationTest.groovy @@ -1,6 +1,6 @@ import com.squareup.okhttp.OkHttpClient import com.squareup.okhttp.Request -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.CodecModule import datadog.trace.api.iast.propagation.PropagationModule @@ -11,7 +11,7 @@ import spock.lang.Shared import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer -class IastOkHttp2InstrumentationTest extends AgentTestRunner { +class IastOkHttp2InstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/okhttp-3/src/test/groovy/IastOkHttp3InstrumentationTest.groovy b/dd-java-agent/instrumentation/okhttp-3/src/test/groovy/IastOkHttp3InstrumentationTest.groovy index 321d04cb743..69062242d35 100644 --- a/dd-java-agent/instrumentation/okhttp-3/src/test/groovy/IastOkHttp3InstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/okhttp-3/src/test/groovy/IastOkHttp3InstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.CodecModule import datadog.trace.api.iast.propagation.PropagationModule @@ -11,7 +11,7 @@ import spock.lang.Shared import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer -class IastOkHttp3InstrumentationTest extends AgentTestRunner { +class IastOkHttp3InstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/opensearch/rest/src/test/groovy/OpensearchRestClientTest.groovy b/dd-java-agent/instrumentation/opensearch/rest/src/test/groovy/OpensearchRestClientTest.groovy index d2031ebf8d2..fe8a6e8d4e3 100644 --- a/dd-java-agent/instrumentation/opensearch/rest/src/test/groovy/OpensearchRestClientTest.groovy +++ b/dd-java-agent/instrumentation/opensearch/rest/src/test/groovy/OpensearchRestClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import groovy.json.JsonSlurper @@ -18,7 +18,7 @@ import org.opensearch.node.Node import org.opensearch.transport.Netty4Plugin import spock.lang.Shared -class OpensearchRestClientTest extends AgentTestRunner { +class OpensearchRestClientTest extends InstrumentationSpecification { @Shared TransportAddress httpTransportAddress @Shared diff --git a/dd-java-agent/instrumentation/opensearch/transport/src/test/groovy/OpensearchNodeClientTest.groovy b/dd-java-agent/instrumentation/opensearch/transport/src/test/groovy/OpensearchNodeClientTest.groovy index 8233996f796..488b808d600 100644 --- a/dd-java-agent/instrumentation/opensearch/transport/src/test/groovy/OpensearchNodeClientTest.groovy +++ b/dd-java-agent/instrumentation/opensearch/transport/src/test/groovy/OpensearchNodeClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -15,7 +15,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static org.opensearch.cluster.ClusterName.CLUSTER_NAME_SETTING @Flaky -class OpensearchNodeClientTest extends AgentTestRunner { +class OpensearchNodeClientTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/opensearch/transport/src/test/groovy/OpensearchTransportClientTest.groovy b/dd-java-agent/instrumentation/opensearch/transport/src/test/groovy/OpensearchTransportClientTest.groovy index 9c78d1b87b4..273802eb278 100644 --- a/dd-java-agent/instrumentation/opensearch/transport/src/test/groovy/OpensearchTransportClientTest.groovy +++ b/dd-java-agent/instrumentation/opensearch/transport/src/test/groovy/OpensearchTransportClientTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -19,7 +19,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static org.opensearch.cluster.ClusterName.CLUSTER_NAME_SETTING @Flaky -class OpensearchTransportClientTest extends AgentTestRunner { +class OpensearchTransportClientTest extends InstrumentationSpecification { public static final long TIMEOUT = 10000 // 10 seconds @Shared diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy index e577e503658..dd7647676ae 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanId import datadog.trace.api.DDTags import datadog.trace.api.DDTraceId @@ -19,7 +19,7 @@ import io.opentelemetry.trace.Status import io.opentelemetry.trace.TracingContextUtils import spock.lang.Subject -class OpenTelemetryTest extends AgentTestRunner { +class OpenTelemetryTest extends InstrumentationSpecification { @Subject def tracer = OpenTelemetry.tracerProvider.get("test-inst") def httpPropagator = OpenTelemetry.getPropagators().httpTextFormat diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/TypeConverterTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/TypeConverterTest.groovy index 3c1a0fe2dc6..6852423dd22 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/TypeConverterTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/TypeConverterTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.datastreams.NoopPathwayContext @@ -13,7 +13,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopScope import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpanContext -class TypeConverterTest extends AgentTestRunner { +class TypeConverterTest extends InstrumentationSpecification { TypeConverter typeConverter = new TypeConverter() def "should avoid the noop span wrapper allocation"() { diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14ActivationTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14ActivationTest.groovy index 9dce85cfaec..93ec40f92ac 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14ActivationTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14ActivationTest.groovy @@ -1,8 +1,8 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import io.opentelemetry.api.GlobalOpenTelemetry import io.opentelemetry.context.Context -abstract class OpenTelemetry14ActivationTest extends AgentTestRunner { +abstract class OpenTelemetry14ActivationTest extends InstrumentationSpecification { abstract boolean shouldBeInjected() def "test instrumentation injection"() { diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14ConventionsTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14ConventionsTest.groovy index 54a4e587334..9bbfe3e2784 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14ConventionsTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14ConventionsTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDTags import datadog.trace.bootstrap.instrumentation.api.Tags import io.opentelemetry.api.GlobalOpenTelemetry @@ -18,7 +18,7 @@ import static io.opentelemetry.api.trace.SpanKind.INTERNAL import static io.opentelemetry.api.trace.SpanKind.PRODUCER import static io.opentelemetry.api.trace.SpanKind.SERVER -class OpenTelemetry14ConventionsTest extends AgentTestRunner { +class OpenTelemetry14ConventionsTest extends InstrumentationSpecification { @Subject def tracer = GlobalOpenTelemetry.get().tracerProvider.get("conventions") diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy index 170d679885e..b40f8b4f7e2 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy @@ -1,5 +1,5 @@ import datadog.opentelemetry.shim.trace.OtelSpanEvent -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanId import datadog.trace.api.DDTags import datadog.trace.api.DDTraceId @@ -37,7 +37,7 @@ import static io.opentelemetry.api.trace.StatusCode.UNSET import static java.util.concurrent.TimeUnit.MILLISECONDS import static java.util.concurrent.TimeUnit.NANOSECONDS -class OpenTelemetry14Test extends AgentTestRunner { +class OpenTelemetry14Test extends InstrumentationSpecification { static final TIME_MILLIS = 1723220824705 static final TIME_NANO = TIME_MILLIS * 1_000_000L diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/opentelemetry14/context/ContextTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/opentelemetry14/context/ContextTest.groovy index 46309f077c4..b8c2f965b73 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/opentelemetry14/context/ContextTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/opentelemetry14/context/ContextTest.groovy @@ -1,6 +1,6 @@ package opentelemetry14.context -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanId import io.opentelemetry.api.GlobalOpenTelemetry import io.opentelemetry.api.trace.Span @@ -14,7 +14,7 @@ import static datadog.opentelemetry.shim.context.OtelContext.OTEL_CONTEXT_ROOT_S import static datadog.opentelemetry.shim.context.OtelContext.OTEL_CONTEXT_SPAN_KEY import static datadog.opentelemetry.shim.trace.OtelConventions.SPAN_KIND_INTERNAL -class ContextTest extends AgentTestRunner { +class ContextTest extends InstrumentationSpecification { @Subject def tracer = GlobalOpenTelemetry.get().tracerProvider.get("context-instrumentation") diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/opentelemetry14/context/propagation/AbstractPropagatorTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/opentelemetry14/context/propagation/AbstractPropagatorTest.groovy index 98d939d019f..bdf69488cfc 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/opentelemetry14/context/propagation/AbstractPropagatorTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/opentelemetry14/context/propagation/AbstractPropagatorTest.groovy @@ -1,6 +1,6 @@ package opentelemetry14.context.propagation -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import io.opentelemetry.api.GlobalOpenTelemetry @@ -11,7 +11,7 @@ import spock.lang.Subject import static datadog.trace.api.sampling.PrioritySampling.SAMPLER_KEEP -abstract class AbstractPropagatorTest extends AgentTestRunner { +abstract class AbstractPropagatorTest extends InstrumentationSpecification { static int testInstance @Subject diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/opentelemetry14/context/propagation/W3cPropagatorTracestateTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/opentelemetry14/context/propagation/W3cPropagatorTracestateTest.groovy index 83e92808c6f..76575d26484 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/opentelemetry14/context/propagation/W3cPropagatorTracestateTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/opentelemetry14/context/propagation/W3cPropagatorTracestateTest.groovy @@ -1,13 +1,13 @@ package opentelemetry14.context.propagation -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import io.opentelemetry.api.GlobalOpenTelemetry import spock.lang.Subject import static io.opentelemetry.context.Context.current import static io.opentelemetry.context.Context.root -class W3cPropagatorTracestateTest extends AgentTestRunner { +class W3cPropagatorTracestateTest extends InstrumentationSpecification { @Subject def tracer = GlobalOpenTelemetry.get().tracerProvider.get("tracecontext-propagator-tracestate") diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/test/groovy/SpanAttributeAnnotationTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/test/groovy/SpanAttributeAnnotationTest.groovy index 65710ea2378..653018f5434 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/test/groovy/SpanAttributeAnnotationTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/test/groovy/SpanAttributeAnnotationTest.groovy @@ -1,8 +1,8 @@ import annotatedsample.TracedMethods -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags -class SpanAttributeAnnotationTest extends AgentTestRunner { +class SpanAttributeAnnotationTest extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/test/groovy/WithSpanAnnotationTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/test/groovy/WithSpanAnnotationTest.groovy index 57d8c600d81..67dad26b858 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/test/groovy/WithSpanAnnotationTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/test/groovy/WithSpanAnnotationTest.groovy @@ -1,11 +1,11 @@ import annotatedsample.TracedMethods -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import java.util.concurrent.CountDownLatch -class WithSpanAnnotationTest extends AgentTestRunner { +class WithSpanAnnotationTest extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.26/src/test/groovy/AddingSpanAttributesAnnotationTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.26/src/test/groovy/AddingSpanAttributesAnnotationTest.groovy index 64bf099a584..0614716b2eb 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.26/src/test/groovy/AddingSpanAttributesAnnotationTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.26/src/test/groovy/AddingSpanAttributesAnnotationTest.groovy @@ -1,7 +1,7 @@ import annotatedsample.AnnotatedMethods -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification -class AddingSpanAttributesAnnotationTest extends AgentTestRunner { +class AddingSpanAttributesAnnotationTest extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy b/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy index 5f3293d9033..e17b06ad232 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanId import datadog.trace.api.DDTags import datadog.trace.api.DDTraceId @@ -30,7 +30,7 @@ import spock.lang.Subject import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation -class OpenTracing31Test extends AgentTestRunner { +class OpenTracing31Test extends InstrumentationSpecification { @Subject def tracer = GlobalTracer.get() diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/TypeConverterTest.groovy b/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/TypeConverterTest.groovy index aaab5ab89d2..9aba9eabaa8 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/TypeConverterTest.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/TypeConverterTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.datastreams.NoopPathwayContext @@ -14,7 +14,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopScope import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpanContext -class TypeConverterTest extends AgentTestRunner { +class TypeConverterTest extends InstrumentationSpecification { TypeConverter typeConverter = new TypeConverter(new DefaultLogHandler()) def "should avoid the noop span wrapper allocation"() { diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy index dabe3865275..09e01fad297 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanId import datadog.trace.api.DDTags import datadog.trace.api.DDTraceId @@ -35,7 +35,7 @@ import static datadog.trace.api.sampling.SamplingMechanism.DEFAULT import static datadog.trace.api.sampling.SamplingMechanism.MANUAL import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation -class OpenTracing32Test extends AgentTestRunner { +class OpenTracing32Test extends InstrumentationSpecification { @Subject def tracer = GlobalTracer.get() diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/TypeConverterTest.groovy b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/TypeConverterTest.groovy index f141b5b1b09..cb05e4b1737 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/TypeConverterTest.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/TypeConverterTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.datastreams.NoopPathwayContext @@ -14,7 +14,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopScope import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpanContext -class TypeConverterTest extends AgentTestRunner { +class TypeConverterTest extends InstrumentationSpecification { TypeConverter typeConverter = new TypeConverter(new DefaultLogHandler()) def "should avoid the noop span wrapper allocation"() { diff --git a/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONArrayInstrumentationTest.groovy b/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONArrayInstrumentationTest.groovy index e654c0f89a3..800e29cadd3 100644 --- a/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONArrayInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONArrayInstrumentationTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import org.json.JSONArray import org.json.JSONObject -class JSONArrayInstrumentationTest extends AgentTestRunner { +class JSONArrayInstrumentationTest extends InstrumentationSpecification { private static json = """{"menu": { "name": "nameTest", diff --git a/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONCookieInstrumentationTest.groovy b/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONCookieInstrumentationTest.groovy index ca7f07eddfe..4fcbb24e886 100644 --- a/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONCookieInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONCookieInstrumentationTest.groovy @@ -1,11 +1,11 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import org.json.Cookie import org.json.JSONObject import org.json.JSONTokener -class JSONCookieInstrumentationTest extends AgentTestRunner { +class JSONCookieInstrumentationTest extends InstrumentationSpecification { @Override void configurePreAgent() { injectSysConfig("dd.iast.enabled", "true") diff --git a/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONObjectInstrumentationTest.groovy b/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONObjectInstrumentationTest.groovy index ee0e3b897f7..5f73b0d63dc 100644 --- a/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONObjectInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONObjectInstrumentationTest.groovy @@ -1,11 +1,11 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import org.json.JSONObject import org.json.JSONTokener import spock.lang.Shared -class JSONObjectInstrumentationTest extends AgentTestRunner { +class JSONObjectInstrumentationTest extends InstrumentationSpecification { @Override void configurePreAgent() { injectSysConfig("dd.iast.enabled", "true") diff --git a/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONTokenerInstrumentationTest.groovy b/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONTokenerInstrumentationTest.groovy index 806a691074a..e1ea55153d6 100644 --- a/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONTokenerInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/org-json/src/test/groovy/JSONTokenerInstrumentationTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import org.json.JSONTokener -class JSONTokenerInstrumentationTest extends AgentTestRunner { +class JSONTokenerInstrumentationTest extends InstrumentationSpecification { private static final String JSON_STRING = '{"name": "nameTest", "value" : "valueTest"}' // Reused JSON String diff --git a/dd-java-agent/instrumentation/owasp-esapi-2/src/test/groovy/datadog/trace/instrumentation/owasp/esapi/EncoderCallSiteTest.groovy b/dd-java-agent/instrumentation/owasp-esapi-2/src/test/groovy/datadog/trace/instrumentation/owasp/esapi/EncoderCallSiteTest.groovy index c90ad8e96bc..47d63d547de 100644 --- a/dd-java-agent/instrumentation/owasp-esapi-2/src/test/groovy/datadog/trace/instrumentation/owasp/esapi/EncoderCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/owasp-esapi-2/src/test/groovy/datadog/trace/instrumentation/owasp/esapi/EncoderCallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.owasp.esapi -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.VulnerabilityMarks import datadog.trace.api.iast.propagation.PropagationModule @@ -8,7 +8,7 @@ import foo.bar.TestEncoderSuite import org.owasp.esapi.Encoder import org.owasp.esapi.codecs.Codec -class EncoderCallSiteTest extends AgentTestRunner { +class EncoderCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/pekko-concurrent/src/test/groovy/PekkoActorTest.groovy b/dd-java-agent/instrumentation/pekko-concurrent/src/test/groovy/PekkoActorTest.groovy index afc2ae5ff59..5efe546cee3 100644 --- a/dd-java-agent/instrumentation/pekko-concurrent/src/test/groovy/PekkoActorTest.groovy +++ b/dd-java-agent/instrumentation/pekko-concurrent/src/test/groovy/PekkoActorTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.TraceInstrumentationConfig import datadog.trace.bootstrap.instrumentation.api.Tags import spock.lang.Shared -class PekkoActorTest extends AgentTestRunner { +class PekkoActorTest extends InstrumentationSpecification { @Shared def pekkoTester = new PekkoActors() diff --git a/dd-java-agent/instrumentation/pekko-http-1.0/build.gradle b/dd-java-agent/instrumentation/pekko-http-1.0/build.gradle index b70cb979673..e5e0540b8ae 100644 --- a/dd-java-agent/instrumentation/pekko-http-1.0/build.gradle +++ b/dd-java-agent/instrumentation/pekko-http-1.0/build.gradle @@ -62,7 +62,7 @@ dependencies { baseTestImplementation group: 'org.apache.pekko', name: 'pekko-stream_2.12', version: '1.0.1' iastTestImplementation group: 'com.github.pjfanning', name: 'pekko-http-jackson_2.12', version: '2.1.0' - iastTestImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + iastTestImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') iastTestCompileOnly group: 'de.thetaphi', name: 'forbiddenapis', version: '3.4' iastTestRuntimeOnly project(':dd-java-agent:instrumentation:jackson-core') iastTestRuntimeOnly project(':dd-java-agent:instrumentation:jackson-core:jackson-core-2.12') @@ -84,10 +84,30 @@ dependencies { latestDepIastTestImplementation group: 'org.apache.pekko', name: 'pekko-stream_2.13', version: '1.0.+' latestDepIastTestImplementation group: 'com.github.pjfanning', name: 'pekko-http-jackson_2.13', version: '2.+' latestDepIastTestImplementation group: 'org.scala-lang.modules', name: 'scala-java8-compat_2.13', version: '1.0.+' - latestDepIastTestImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + latestDepIastTestImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') latestDepIastTestImplementation project(':dd-java-agent:instrumentation:jackson-core:jackson-core-2.16') } +iastTest { + filter { + // This class must be excluded from scanning because it references class from "org.apache.pekko.http" package. + // When JUnit 5 scans this class, it loads every other class that is present in its method signatures (arguments, return types, throws). + // As the result, some classes from the datadog.trace.instrumentation.pekkohttp.iast.MakeTaintableInstrumentation#knownMatchingTypes list are loaded. + // JUnit scanning (and class loading that it triggers) happens before instrumentations are applied. + // Later when MakeTaintableInstrumentation is applied (in InstrumentationSpecification#setupSpec), + // it fails to retransform the already-loaded org.apache.pekko.http classes, + // because it needs to change the set of implemented interfaces, which is not possible for already loaded classes. + excludeTestsMatching("*PekkoIastTestWebServer*") + } +} + +latestDepIastTest { + filter { + // Exclude the same problematic class as for iastTest to avoid class loading issues. + excludeTestsMatching("*PekkoIastTestWebServer*") + } +} + tasks.named("test").configure { dependsOn "baseTest" dependsOn "iastTest" diff --git a/dd-java-agent/instrumentation/play-2.3/src/test/groovy/datadog/trace/instrumentation/play23/test/client/PlayWSClientTest.groovy b/dd-java-agent/instrumentation/play-2.3/src/test/groovy/datadog/trace/instrumentation/play23/test/client/PlayWSClientTest.groovy index 29233c42076..4ef3c1659af 100644 --- a/dd-java-agent/instrumentation/play-2.3/src/test/groovy/datadog/trace/instrumentation/play23/test/client/PlayWSClientTest.groovy +++ b/dd-java-agent/instrumentation/play-2.3/src/test/groovy/datadog/trace/instrumentation/play23/test/client/PlayWSClientTest.groovy @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.play23.test.client +import datadog.trace.agent.test.asserts.TagsAssert import datadog.trace.agent.test.base.HttpClientTest import datadog.trace.agent.test.naming.TestingNettyHttpNamingConventions import datadog.trace.instrumentation.netty38.client.NettyHttpClientDecorator @@ -10,6 +11,7 @@ import play.test.Helpers import spock.lang.Shared import java.util.concurrent.TimeUnit +import java.util.concurrent.TimeoutException class PlayWSClientTest extends HttpClientTest implements TestingNettyHttpNamingConventions.ClientV0 { @Shared @@ -76,4 +78,23 @@ class PlayWSClientTest extends HttpClientTest implements TestingNettyHttpNamingC // span.resourceName = "netty.connect" false } + + @Override + void assertErrorTags(TagsAssert tagsAssert, Throwable exception) { + // PlayWS classes throw different exception types for the same connection failures + if (exception instanceof ConnectException || + exception instanceof SocketTimeoutException || + exception instanceof TimeoutException) { + tagsAssert.tag("error.type", { + String actualType = it as String + return actualType == "java.net.ConnectException" || + actualType == "java.net.SocketTimeoutException" || + actualType == "java.util.concurrent.TimeoutException" + }) + tagsAssert.tag("error.stack", String) + tagsAssert.tag("error.message", String) + } else { + super.assertErrorTags(tagsAssert, exception) + } + } } diff --git a/dd-java-agent/instrumentation/play-2.4/src/test/groovy/datadog/trace/instrumentation/play25/client/PlayWSClientTest.groovy b/dd-java-agent/instrumentation/play-2.4/src/test/groovy/datadog/trace/instrumentation/play25/client/PlayWSClientTest.groovy index 2e500fe2f93..c58d35ac1f1 100644 --- a/dd-java-agent/instrumentation/play-2.4/src/test/groovy/datadog/trace/instrumentation/play25/client/PlayWSClientTest.groovy +++ b/dd-java-agent/instrumentation/play-2.4/src/test/groovy/datadog/trace/instrumentation/play25/client/PlayWSClientTest.groovy @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.play25.client +import datadog.trace.agent.test.asserts.TagsAssert import datadog.trace.agent.test.base.HttpClientTest import datadog.trace.agent.test.naming.TestingNettyHttpNamingConventions import play.libs.ws.WS @@ -8,6 +9,8 @@ import spock.lang.Shared import spock.lang.Subject import spock.lang.Timeout +import java.util.concurrent.TimeoutException + // Play 2.6+ uses a separately versioned client that shades the underlying dependency // This means our built in instrumentation won't work. @Timeout(5) @@ -53,6 +56,25 @@ abstract class PlayWSClientTest extends HttpClientTest { boolean testRemoteConnection() { return false } + + @Override + void assertErrorTags(TagsAssert tagsAssert, Throwable exception) { + // PlayWS classes throw different exception types for the same connection failures + if (exception instanceof ConnectException || + exception instanceof SocketTimeoutException || + exception instanceof TimeoutException) { + tagsAssert.tag("error.type", { + String actualType = it as String + return actualType == "java.net.ConnectException" || + actualType == "java.net.SocketTimeoutException" || + actualType == "java.util.concurrent.TimeoutException" + }) + tagsAssert.tag("error.stack", String) + tagsAssert.tag("error.message", String) + } else { + super.assertErrorTags(tagsAssert, exception) + } + } } class PlayWSClientV0ForkedTest extends PlayWSClientTest implements TestingNettyHttpNamingConventions.ClientV0 { diff --git a/dd-java-agent/instrumentation/play-ws-1/src/test/groovy/PlayWSClientTest.groovy b/dd-java-agent/instrumentation/play-ws-1/src/test/groovy/PlayWSClientTest.groovy index aa32625dde6..c26192c071a 100644 --- a/dd-java-agent/instrumentation/play-ws-1/src/test/groovy/PlayWSClientTest.groovy +++ b/dd-java-agent/instrumentation/play-ws-1/src/test/groovy/PlayWSClientTest.groovy @@ -24,7 +24,7 @@ abstract class PlayJavaWSClientTest extends PlayWSClientTestBase { headers.entrySet().each { entry -> wsRequest.addHeader(entry.getKey(), entry.getValue()) } StandaloneWSResponse wsResponse = wsRequest.setMethod(method).execute() .whenComplete({ response, throwable -> - callback?.call() + runInAdHocThread(callback) }).toCompletableFuture().get(5, TimeUnit.SECONDS) return wsResponse.getStatus() @@ -51,7 +51,7 @@ class PlayJavaStreamedWSClientTest extends PlayWSClientTestBase { headers.entrySet().each { entry -> wsRequest.addHeader(entry.getKey(), entry.getValue()) } StandaloneWSResponse wsResponse = wsRequest.setMethod(method).stream() .whenComplete({ response, throwable -> - callback?.call() + runInAdHocThread(callback) }).toCompletableFuture().get(5, TimeUnit.SECONDS) // The status can be ready before the body so explicity call wait for body to be ready @@ -82,7 +82,7 @@ class PlayScalaWSClientTest extends PlayWSClientTestBase { .withHttpHeaders(JavaConverters.mapAsScalaMap(headers).toSeq()) .execute() .transform({ theTry -> - callback?.call() + runInAdHocThread(callback) theTry }, ExecutionContext.global()) @@ -113,7 +113,7 @@ class PlayScalaStreamedWSClientTest extends PlayWSClientTestBase { .withHttpHeaders(JavaConverters.mapAsScalaMap(headers).toSeq()) .stream() .transform({ theTry -> - callback?.call() + runInAdHocThread(callback) theTry }, ExecutionContext.global()) diff --git a/dd-java-agent/instrumentation/play-ws-2.1/src/test/groovy/PlayWSClientTest.groovy b/dd-java-agent/instrumentation/play-ws-2.1/src/test/groovy/PlayWSClientTest.groovy index 8e2137991f9..72a5b41be3a 100644 --- a/dd-java-agent/instrumentation/play-ws-2.1/src/test/groovy/PlayWSClientTest.groovy +++ b/dd-java-agent/instrumentation/play-ws-2.1/src/test/groovy/PlayWSClientTest.groovy @@ -22,7 +22,7 @@ class PlayJavaWSClientTest extends PlayWSClientTestBase { headers.entrySet().each { entry -> wsRequest.addHeader(entry.getKey(), entry.getValue()) } StandaloneWSResponse wsResponse = wsRequest.setMethod(method).execute() .whenComplete({ response, throwable -> - callback?.call() + runInAdHocThread(callback) }).toCompletableFuture().get(5, TimeUnit.SECONDS) return wsResponse.getStatus() @@ -48,7 +48,7 @@ class PlayJavaStreamedWSClientTest extends PlayWSClientTestBase { headers.entrySet().each { entry -> wsRequest.addHeader(entry.getKey(), entry.getValue()) } StandaloneWSResponse wsResponse = wsRequest.setMethod(method).stream() .whenComplete({ response, throwable -> - callback?.call() + runInAdHocThread(callback) }).toCompletableFuture().get(5, TimeUnit.SECONDS) // The status can be ready before the body so explicity call wait for body to be ready @@ -78,7 +78,7 @@ class PlayScalaWSClientTest extends PlayWSClientTestBase { .withHttpHeaders(JavaConverters.mapAsScalaMap(headers).toSeq()) .execute() .transform({ theTry -> - callback?.call() + runInAdHocThread(callback) theTry }, ExecutionContext.global()) @@ -108,7 +108,7 @@ class PlayScalaStreamedWSClientTest extends PlayWSClientTestBase { .withHttpHeaders(JavaConverters.mapAsScalaMap(headers).toSeq()) .stream() .transform({ theTry -> - callback?.call() + runInAdHocThread(callback) theTry }, ExecutionContext.global()) diff --git a/dd-java-agent/instrumentation/play-ws-2/src/test/groovy/PlayWSClientTest.groovy b/dd-java-agent/instrumentation/play-ws-2/src/test/groovy/PlayWSClientTest.groovy index b2f002ede91..983f74c9157 100644 --- a/dd-java-agent/instrumentation/play-ws-2/src/test/groovy/PlayWSClientTest.groovy +++ b/dd-java-agent/instrumentation/play-ws-2/src/test/groovy/PlayWSClientTest.groovy @@ -79,7 +79,7 @@ class PlayScalaWSClientTest extends PlayWSClientTestBase { .withHttpHeaders(JavaConverters.mapAsScalaMap(headers).toSeq()) .execute() .transform({ theTry -> - callback?.call() + runInAdHocThread(callback) theTry }, ExecutionContext.global()) @@ -109,7 +109,7 @@ class PlayScalaStreamedWSClientTest extends PlayWSClientTestBase { .withHttpHeaders(JavaConverters.mapAsScalaMap(headers).toSeq()) .stream() .transform({ theTry -> - callback?.call() + runInAdHocThread(callback) theTry }, ExecutionContext.global()) diff --git a/dd-java-agent/instrumentation/play-ws/src/test/groovy/PlayWSClientTestBase.groovy b/dd-java-agent/instrumentation/play-ws/src/test/groovy/PlayWSClientTestBase.groovy index c2be8848117..22b1a54fa29 100644 --- a/dd-java-agent/instrumentation/play-ws/src/test/groovy/PlayWSClientTestBase.groovy +++ b/dd-java-agent/instrumentation/play-ws/src/test/groovy/PlayWSClientTestBase.groovy @@ -1,6 +1,7 @@ import akka.actor.ActorSystem import akka.stream.ActorMaterializer import akka.stream.ActorMaterializerSettings +import datadog.trace.agent.test.asserts.TagsAssert import datadog.trace.agent.test.base.HttpClientTest import datadog.trace.instrumentation.playws.PlayWSClientDecorator import play.shaded.ahc.org.asynchttpclient.AsyncHttpClient @@ -9,6 +10,8 @@ import play.shaded.ahc.org.asynchttpclient.DefaultAsyncHttpClient import play.shaded.ahc.org.asynchttpclient.DefaultAsyncHttpClientConfig import spock.lang.Shared +import java.util.concurrent.TimeoutException + abstract class PlayWSClientTestBase extends HttpClientTest { @Shared ActorSystem system @@ -68,4 +71,33 @@ abstract class PlayWSClientTestBase extends HttpClientTest { String operation() { return "play-ws.request" } + + protected void runInAdHocThread(Closure callback) { + if (callback != null) { + // Execute callback in a separate thread to clear trace context + def thread = new Thread({ callback.call() }) + thread.start() + thread.join() + } + } + + @Override + void assertErrorTags(TagsAssert tagsAssert, Throwable exception) { + // PlayWS classes throw different exception types for the same connection failures + if (exception instanceof ConnectException || + exception instanceof SocketTimeoutException || + exception instanceof TimeoutException) { + tagsAssert.tag("error.type", { + String actualType = it as String + return actualType == "java.net.ConnectException" || + actualType == "java.net.SocketTimeoutException" || + actualType == "java.util.concurrent.TimeoutException" + }) + tagsAssert.tag("error.stack", String) + tagsAssert.tag("error.message", String) + } else { + super.assertErrorTags(tagsAssert, exception) + } + } + } diff --git a/dd-java-agent/instrumentation/protobuf/src/test/groovy/com/datadog/instrumentation/protobuf/AbstractMessageInstrumentationTest.groovy b/dd-java-agent/instrumentation/protobuf/src/test/groovy/com/datadog/instrumentation/protobuf/AbstractMessageInstrumentationTest.groovy index 98c74819ced..7a7a289f526 100644 --- a/dd-java-agent/instrumentation/protobuf/src/test/groovy/com/datadog/instrumentation/protobuf/AbstractMessageInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/protobuf/src/test/groovy/com/datadog/instrumentation/protobuf/AbstractMessageInstrumentationTest.groovy @@ -4,14 +4,14 @@ import com.datadog.instrumentation.protobuf.generated.Message.MyMessage import com.datadog.instrumentation.protobuf.generated.Message.OtherMessage import com.datadog.instrumentation.protobuf.generated.Message.RecursiveMessage import com.google.protobuf.InvalidProtocolBufferException -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDTags import datadog.trace.bootstrap.instrumentation.api.AgentSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan -class AbstractMessageInstrumentationTest extends AgentTestRunner { +class AbstractMessageInstrumentationTest extends InstrumentationSpecification { @Override protected boolean isDataStreamsEnabled() { return true diff --git a/dd-java-agent/instrumentation/protobuf/src/test/groovy/com/datadog/instrumentation/protobuf/DynamicMessageInstrumentationTest.groovy b/dd-java-agent/instrumentation/protobuf/src/test/groovy/com/datadog/instrumentation/protobuf/DynamicMessageInstrumentationTest.groovy index d4b26ec0c34..34eda672e7a 100644 --- a/dd-java-agent/instrumentation/protobuf/src/test/groovy/com/datadog/instrumentation/protobuf/DynamicMessageInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/protobuf/src/test/groovy/com/datadog/instrumentation/protobuf/DynamicMessageInstrumentationTest.groovy @@ -2,14 +2,14 @@ package com.datadog.instrumentation.protobuf import com.datadog.instrumentation.protobuf.generated.Message.MyMessage import com.google.protobuf.DynamicMessage -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDTags import datadog.trace.bootstrap.instrumentation.api.AgentSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan -class DynamicMessageInstrumentationTest extends AgentTestRunner { +class DynamicMessageInstrumentationTest extends InstrumentationSpecification { @Override protected boolean isDataStreamsEnabled() { return true diff --git a/dd-java-agent/instrumentation/quartz-2/src/test/groovy/QuartzTest.groovy b/dd-java-agent/instrumentation/quartz-2/src/test/groovy/QuartzTest.groovy index 7f8f5328e12..15f8539ae5b 100644 --- a/dd-java-agent/instrumentation/quartz-2/src/test/groovy/QuartzTest.groovy +++ b/dd-java-agent/instrumentation/quartz-2/src/test/groovy/QuartzTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.bootstrap.instrumentation.api.Tags import org.quartz.CronScheduleBuilder @@ -19,7 +19,7 @@ import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.QU import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.QUARTZ_TRIGGER_NAME import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class QuartzTest extends AgentTestRunner { +class QuartzTest extends InstrumentationSpecification { public static final String JOB_NAME = "job" public static final String GROUP_NAME = "group" public static final String TRIGGER_NAME = "trigger" diff --git a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/reactorTest/groovy/ReactorRabbitMQTest.groovy b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/reactorTest/groovy/ReactorRabbitMQTest.groovy index 99df4e68360..da056550c8f 100644 --- a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/reactorTest/groovy/ReactorRabbitMQTest.groovy +++ b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/reactorTest/groovy/ReactorRabbitMQTest.groovy @@ -1,7 +1,7 @@ import com.rabbitmq.client.AMQP import com.rabbitmq.client.Channel import com.rabbitmq.client.ConnectionFactory -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.PortUtils import org.testcontainers.containers.RabbitMQContainer import reactor.core.publisher.Mono @@ -14,7 +14,7 @@ import spock.lang.Shared import java.time.Duration import java.util.concurrent.TimeUnit -class ReactorRabbitMQTest extends AgentTestRunner { +class ReactorRabbitMQTest extends InstrumentationSpecification { @Shared def rabbitMQContainer @Shared diff --git a/dd-java-agent/instrumentation/ratpack-1.5/build.gradle b/dd-java-agent/instrumentation/ratpack-1.5/build.gradle index 1b5e9306bc1..8c85422c21a 100644 --- a/dd-java-agent/instrumentation/ratpack-1.5/build.gradle +++ b/dd-java-agent/instrumentation/ratpack-1.5/build.gradle @@ -20,6 +20,6 @@ dependencies { testImplementation project(':dd-java-agent:instrumentation:netty-4.1') testImplementation group: 'io.ratpack', name: 'ratpack-groovy-test', version: '1.5.0' testImplementation 'com.sun.activation:jakarta.activation:1.2.2' - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') latestDepTestImplementation group: 'io.ratpack', name: 'ratpack-groovy-test', version: '1.+' } diff --git a/dd-java-agent/instrumentation/ratpack-1.5/src/test/groovy/RatpackOtherTest.groovy b/dd-java-agent/instrumentation/ratpack-1.5/src/test/groovy/RatpackOtherTest.groovy index 2fae0b93d9b..1ef1feff04a 100644 --- a/dd-java-agent/instrumentation/ratpack-1.5/src/test/groovy/RatpackOtherTest.groovy +++ b/dd-java-agent/instrumentation/ratpack-1.5/src/test/groovy/RatpackOtherTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.OkHttpUtils import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags @@ -8,7 +8,7 @@ import okhttp3.Request import ratpack.groovy.test.embed.GroovyEmbeddedApp import ratpack.path.PathBinding -class RatpackOtherTest extends AgentTestRunner { +class RatpackOtherTest extends InstrumentationSpecification { OkHttpClient client = OkHttpUtils.client() diff --git a/dd-java-agent/instrumentation/reactive-streams/src/test/groovy/PublishSubscribeTest.groovy b/dd-java-agent/instrumentation/reactive-streams/src/test/groovy/PublishSubscribeTest.groovy index 4d4ec7b300e..3db969abbb4 100644 --- a/dd-java-agent/instrumentation/reactive-streams/src/test/groovy/PublishSubscribeTest.groovy +++ b/dd-java-agent/instrumentation/reactive-streams/src/test/groovy/PublishSubscribeTest.groovy @@ -3,13 +3,13 @@ import static annotatedsample.ReactiveStreamsTracedMethods.TestPublisher.ofFaili import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.reactivestreams.Subscriber import org.reactivestreams.Subscription import java.util.concurrent.CountDownLatch -class PublishSubscribeTest extends AgentTestRunner { +class PublishSubscribeTest extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/reactive-streams/src/test/groovy/ReactiveStreamsAsyncResultExtensionTest.groovy b/dd-java-agent/instrumentation/reactive-streams/src/test/groovy/ReactiveStreamsAsyncResultExtensionTest.groovy index 2f179aae07a..b04fc0a3ae8 100644 --- a/dd-java-agent/instrumentation/reactive-streams/src/test/groovy/ReactiveStreamsAsyncResultExtensionTest.groovy +++ b/dd-java-agent/instrumentation/reactive-streams/src/test/groovy/ReactiveStreamsAsyncResultExtensionTest.groovy @@ -1,10 +1,10 @@ import annotatedsample.ReactiveStreamsTracedMethods -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import java.util.concurrent.CountDownLatch -class ReactiveStreamsAsyncResultExtensionTest extends AgentTestRunner { +class ReactiveStreamsAsyncResultExtensionTest extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/reactor-core-3.1/src/latestDepTest/groovy/ReactorAsyncResultExtensionTest.groovy b/dd-java-agent/instrumentation/reactor-core-3.1/src/latestDepTest/groovy/ReactorAsyncResultExtensionTest.groovy index 4e9c08c9245..fc54ca54063 100644 --- a/dd-java-agent/instrumentation/reactor-core-3.1/src/latestDepTest/groovy/ReactorAsyncResultExtensionTest.groovy +++ b/dd-java-agent/instrumentation/reactor-core-3.1/src/latestDepTest/groovy/ReactorAsyncResultExtensionTest.groovy @@ -1,14 +1,14 @@ import annotatedsample.ReactorTracedMethods import com.google.common.util.concurrent.ListeningExecutorService import com.google.common.util.concurrent.MoreExecutors -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import spock.lang.Shared import java.util.concurrent.CountDownLatch import java.util.concurrent.Executors -class ReactorAsyncResultExtensionTest extends AgentTestRunner { +class ReactorAsyncResultExtensionTest extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/reactor-core-3.1/src/latestDepTest/groovy/ReactorCoreTest.groovy b/dd-java-agent/instrumentation/reactor-core-3.1/src/latestDepTest/groovy/ReactorCoreTest.groovy index a235c07be60..c78aa9b51c7 100644 --- a/dd-java-agent/instrumentation/reactor-core-3.1/src/latestDepTest/groovy/ReactorCoreTest.groovy +++ b/dd-java-agent/instrumentation/reactor-core-3.1/src/latestDepTest/groovy/ReactorCoreTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import datadog.trace.bootstrap.instrumentation.api.AgentScope import datadog.trace.bootstrap.instrumentation.api.AgentSpan @@ -23,7 +23,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan -class ReactorCoreTest extends AgentTestRunner { +class ReactorCoreTest extends InstrumentationSpecification { public static final String EXCEPTION_MESSAGE = "test exception" diff --git a/dd-java-agent/instrumentation/reactor-core-3.1/src/latestDepTest/groovy/SubscriptionTest.groovy b/dd-java-agent/instrumentation/reactor-core-3.1/src/latestDepTest/groovy/SubscriptionTest.groovy index b9d28149899..3aba2ac9538 100644 --- a/dd-java-agent/instrumentation/reactor-core-3.1/src/latestDepTest/groovy/SubscriptionTest.groovy +++ b/dd-java-agent/instrumentation/reactor-core-3.1/src/latestDepTest/groovy/SubscriptionTest.groovy @@ -1,14 +1,14 @@ import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runnableUnderTrace -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.AgentTracer import reactor.core.publisher.Flux import reactor.core.publisher.Sinks import java.util.concurrent.CountDownLatch -class SubscriptionTest extends AgentTestRunner { +class SubscriptionTest extends InstrumentationSpecification { def "subscription test with Sinks.Many sink #sink.class and #consumers consumers"() { when: diff --git a/dd-java-agent/instrumentation/reactor-core-3.1/src/test/groovy/ReactorAsyncResultExtensionTest.groovy b/dd-java-agent/instrumentation/reactor-core-3.1/src/test/groovy/ReactorAsyncResultExtensionTest.groovy index 1f4a2de5443..b5c52f95918 100644 --- a/dd-java-agent/instrumentation/reactor-core-3.1/src/test/groovy/ReactorAsyncResultExtensionTest.groovy +++ b/dd-java-agent/instrumentation/reactor-core-3.1/src/test/groovy/ReactorAsyncResultExtensionTest.groovy @@ -1,14 +1,14 @@ import annotatedsample.ReactorTracedMethods import com.google.common.util.concurrent.ListeningExecutorService import com.google.common.util.concurrent.MoreExecutors -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import spock.lang.Shared import java.util.concurrent.CountDownLatch import java.util.concurrent.Executors -class ReactorAsyncResultExtensionTest extends AgentTestRunner { +class ReactorAsyncResultExtensionTest extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/reactor-core-3.1/src/test/groovy/ReactorCoreTest.groovy b/dd-java-agent/instrumentation/reactor-core-3.1/src/test/groovy/ReactorCoreTest.groovy index 2c64e2eadcd..2d7715068c7 100644 --- a/dd-java-agent/instrumentation/reactor-core-3.1/src/test/groovy/ReactorCoreTest.groovy +++ b/dd-java-agent/instrumentation/reactor-core-3.1/src/test/groovy/ReactorCoreTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import datadog.trace.bootstrap.instrumentation.api.AgentScope import datadog.trace.bootstrap.instrumentation.api.AgentSpan @@ -23,7 +23,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan -class ReactorCoreTest extends AgentTestRunner { +class ReactorCoreTest extends InstrumentationSpecification { public static final String EXCEPTION_MESSAGE = "test exception" diff --git a/dd-java-agent/instrumentation/reactor-core-3.1/src/test/groovy/SubscriptionTest.groovy b/dd-java-agent/instrumentation/reactor-core-3.1/src/test/groovy/SubscriptionTest.groovy index 0c5ca5ab9f5..77e92810ec6 100644 --- a/dd-java-agent/instrumentation/reactor-core-3.1/src/test/groovy/SubscriptionTest.groovy +++ b/dd-java-agent/instrumentation/reactor-core-3.1/src/test/groovy/SubscriptionTest.groovy @@ -2,7 +2,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.agent.test.utils.TraceUtils.runnableUnderTrace -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import datadog.trace.bootstrap.instrumentation.api.AgentTracer import datadog.trace.bootstrap.instrumentation.api.Tags @@ -16,7 +16,7 @@ import reactor.core.publisher.WorkQueueProcessor import java.util.concurrent.CountDownLatch -class SubscriptionTest extends AgentTestRunner { +class SubscriptionTest extends InstrumentationSpecification { def "subscription test with processor #processor.class and #consumers consumers"() { when: diff --git a/dd-java-agent/instrumentation/reactor-netty-1/src/test/groovy/ReactorNettyHttp2ClientTest.groovy b/dd-java-agent/instrumentation/reactor-netty-1/src/test/groovy/ReactorNettyHttp2ClientTest.groovy index b5610c1d3b3..9e8cf1b2492 100644 --- a/dd-java-agent/instrumentation/reactor-netty-1/src/test/groovy/ReactorNettyHttp2ClientTest.groovy +++ b/dd-java-agent/instrumentation/reactor-netty-1/src/test/groovy/ReactorNettyHttp2ClientTest.groovy @@ -1,5 +1,5 @@ import datadog.environment.JavaVirtualMachine -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags import reactor.netty.DisposableServer @@ -15,7 +15,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace @IgnoreIf(reason = "TLS issues with OpenJ9", value = { JavaVirtualMachine.isJ9() }) -class ReactorNettyHttp2ClientTest extends AgentTestRunner { +class ReactorNettyHttp2ClientTest extends InstrumentationSpecification { @Shared DisposableServer server = HttpServer.create() .protocol(HttpProtocol.H2C, HttpProtocol.HTTP11) diff --git a/dd-java-agent/instrumentation/resteasy-appsec/build.gradle b/dd-java-agent/instrumentation/resteasy-appsec/build.gradle index 85da55c14c0..88351ec30d1 100644 --- a/dd-java-agent/instrumentation/resteasy-appsec/build.gradle +++ b/dd-java-agent/instrumentation/resteasy-appsec/build.gradle @@ -32,11 +32,11 @@ dependencies { testFixturesApi group: 'org.jboss.resteasy', name: 'resteasy-jaxrs', version: '3.0.0.Final' testFixturesApi group: 'org.jboss.resteasy', name: 'resteasy-jackson-provider', version: '3.0.0.Final' testFixturesApi group: 'org.jboss.resteasy', name: 'resteasy-multipart-provider', version: '3.0.0.Final' - testFixturesImplementation project(':dd-java-agent:testing'), { + testFixturesImplementation project(':dd-java-agent:instrumentation-testing'), { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } - testImplementation project(':dd-java-agent:testing'), { + testImplementation project(':dd-java-agent:instrumentation-testing'), { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } diff --git a/dd-java-agent/instrumentation/resteasy-appsec/src/test/groovy/JavaxWSResponseInstrumentationTest.groovy b/dd-java-agent/instrumentation/resteasy-appsec/src/test/groovy/JavaxWSResponseInstrumentationTest.groovy index e7fbfeb8f8d..8b70025dc4c 100644 --- a/dd-java-agent/instrumentation/resteasy-appsec/src/test/groovy/JavaxWSResponseInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/resteasy-appsec/src/test/groovy/JavaxWSResponseInstrumentationTest.groovy @@ -1,11 +1,11 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.HttpResponseHeaderModule import datadog.trace.api.iast.sink.UnvalidatedRedirectModule import javax.ws.rs.core.Response -class JavaxWSResponseInstrumentationTest extends AgentTestRunner { +class JavaxWSResponseInstrumentationTest extends InstrumentationSpecification { @Override diff --git a/dd-java-agent/instrumentation/resteasy-appsec/src/testFixtures/groovy/datadog/trace/instrumentation/resteasy/AbstractResteasyAppsecTest.groovy b/dd-java-agent/instrumentation/resteasy-appsec/src/testFixtures/groovy/datadog/trace/instrumentation/resteasy/AbstractResteasyAppsecTest.groovy index 594229e50ac..54e32255fe3 100644 --- a/dd-java-agent/instrumentation/resteasy-appsec/src/testFixtures/groovy/datadog/trace/instrumentation/resteasy/AbstractResteasyAppsecTest.groovy +++ b/dd-java-agent/instrumentation/resteasy-appsec/src/testFixtures/groovy/datadog/trace/instrumentation/resteasy/AbstractResteasyAppsecTest.groovy @@ -2,7 +2,7 @@ package datadog.trace.instrumentation.resteasy import datadog.appsec.api.blocking.BlockingContentType import datadog.appsec.api.blocking.BlockingException -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.base.HttpServerTest import datadog.trace.agent.test.utils.OkHttpUtils import datadog.trace.api.function.TriConsumer @@ -39,7 +39,7 @@ import java.util.function.Supplier import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.BODY_JSON import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.BODY_URLENCODED -abstract class AbstractResteasyAppsecTest extends AgentTestRunner { +abstract class AbstractResteasyAppsecTest extends InstrumentationSpecification { @Shared URI address diff --git a/dd-java-agent/instrumentation/rxjava-2/src/test/groovy/RxJava2ResultExtensionTest.groovy b/dd-java-agent/instrumentation/rxjava-2/src/test/groovy/RxJava2ResultExtensionTest.groovy index 9ff97597138..0f731b15fe5 100644 --- a/dd-java-agent/instrumentation/rxjava-2/src/test/groovy/RxJava2ResultExtensionTest.groovy +++ b/dd-java-agent/instrumentation/rxjava-2/src/test/groovy/RxJava2ResultExtensionTest.groovy @@ -1,10 +1,10 @@ import annotatedsample.RxJava2TracedMethods -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import java.util.concurrent.CountDownLatch -class RxJava2ResultExtensionTest extends AgentTestRunner { +class RxJava2ResultExtensionTest extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/rxjava-2/src/test/groovy/RxJava2Test.groovy b/dd-java-agent/instrumentation/rxjava-2/src/test/groovy/RxJava2Test.groovy index 43b11a72644..e97491100be 100644 --- a/dd-java-agent/instrumentation/rxjava-2/src/test/groovy/RxJava2Test.groovy +++ b/dd-java-agent/instrumentation/rxjava-2/src/test/groovy/RxJava2Test.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import datadog.trace.bootstrap.instrumentation.api.AgentScope import datadog.trace.bootstrap.instrumentation.api.AgentSpan @@ -16,7 +16,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSp import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan import static java.util.concurrent.TimeUnit.MILLISECONDS -class RxJava2Test extends AgentTestRunner { +class RxJava2Test extends InstrumentationSpecification { public static final String EXCEPTION_MESSAGE = "test exception" diff --git a/dd-java-agent/instrumentation/rxjava-2/src/test/groovy/SubscriptionTest.groovy b/dd-java-agent/instrumentation/rxjava-2/src/test/groovy/SubscriptionTest.groovy index 09c68e195c2..11679f1a454 100644 --- a/dd-java-agent/instrumentation/rxjava-2/src/test/groovy/SubscriptionTest.groovy +++ b/dd-java-agent/instrumentation/rxjava-2/src/test/groovy/SubscriptionTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.AgentTracer import io.reactivex.Maybe @@ -7,7 +7,7 @@ import java.util.concurrent.CountDownLatch import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class SubscriptionTest extends AgentTestRunner { +class SubscriptionTest extends InstrumentationSpecification { def "subscription test"() { when: diff --git a/dd-java-agent/instrumentation/scala-concurrent/src/latestDepTest/groovy/ScalaInstrumentationTest.groovy b/dd-java-agent/instrumentation/scala-concurrent/src/latestDepTest/groovy/ScalaInstrumentationTest.groovy index bc8b016fdb8..1f18e42508a 100644 --- a/dd-java-agent/instrumentation/scala-concurrent/src/latestDepTest/groovy/ScalaInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/scala-concurrent/src/latestDepTest/groovy/ScalaInstrumentationTest.groovy @@ -1,7 +1,7 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan -class ScalaInstrumentationTest extends AgentTestRunner { +class ScalaInstrumentationTest extends InstrumentationSpecification { @Override boolean useStrictTraceWrites() { diff --git a/dd-java-agent/instrumentation/scala-concurrent/src/latestDepTest/scala/ScalaConcurrentTests.scala b/dd-java-agent/instrumentation/scala-concurrent/src/latestDepTest/scala/ScalaConcurrentTests.scala index a4033616e73..6c7abbacff9 100644 --- a/dd-java-agent/instrumentation/scala-concurrent/src/latestDepTest/scala/ScalaConcurrentTests.scala +++ b/dd-java-agent/instrumentation/scala-concurrent/src/latestDepTest/scala/ScalaConcurrentTests.scala @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner.blockUntilChildSpansFinished +import datadog.trace.agent.test.InstrumentationSpecification.blockUntilChildSpansFinished import datadog.trace.api.Trace import datadog.trace.bootstrap.instrumentation.api.AgentTracer.{setAsyncPropagationEnabled, activeSpan} diff --git a/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/ForkJoinPoolPropagationTest.groovy b/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/ForkJoinPoolPropagationTest.groovy index 464023002ae..0ee1c5022a8 100644 --- a/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/ForkJoinPoolPropagationTest.groovy +++ b/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/ForkJoinPoolPropagationTest.groovy @@ -1,8 +1,8 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan import scala.concurrent.forkjoin.ForkJoinPool -class ForkJoinPoolPropagationTest extends AgentTestRunner { +class ForkJoinPoolPropagationTest extends InstrumentationSpecification { def "test imbalanced recursive task propagation #parallelism FJP threads" () { when: ForkJoinPool fjp = new ForkJoinPool(parallelism) diff --git a/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/RejectedExecutionTest.groovy b/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/RejectedExecutionTest.groovy index 919f2742eb7..c4e8d628259 100644 --- a/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/RejectedExecutionTest.groovy +++ b/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/RejectedExecutionTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import scala.concurrent.forkjoin.ForkJoinPool import java.util.concurrent.RejectedExecutionException @@ -6,7 +6,7 @@ import java.util.concurrent.atomic.AtomicBoolean import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class RejectedExecutionTest extends AgentTestRunner { +class RejectedExecutionTest extends InstrumentationSpecification { def "trace reported when FJP shutdown"() { // tests the shutdown state because it's easy to provoke without diff --git a/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/ScalaExecutorInstrumentationTest.groovy b/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/ScalaExecutorInstrumentationTest.groovy index b26d8450823..4a1a857cdbf 100644 --- a/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/ScalaExecutorInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/ScalaExecutorInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import datadog.trace.core.DDSpan import scala.concurrent.forkjoin.ForkJoinPool @@ -17,7 +17,7 @@ import java.util.concurrent.TimeUnit * Test executor instrumentation for Scala specific classes. * This is to large extent a copy of ExecutorInstrumentationTest. */ -class ScalaExecutorInstrumentationTest extends AgentTestRunner { +class ScalaExecutorInstrumentationTest extends InstrumentationSpecification { @Shared def executeRunnable = { e, c -> e.execute((Runnable) c) } diff --git a/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/ScalaInstrumentationTest.groovy b/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/ScalaInstrumentationTest.groovy index bc8b016fdb8..1f18e42508a 100644 --- a/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/ScalaInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/scala-concurrent/src/test/groovy/ScalaInstrumentationTest.groovy @@ -1,7 +1,7 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan -class ScalaInstrumentationTest extends AgentTestRunner { +class ScalaInstrumentationTest extends InstrumentationSpecification { @Override boolean useStrictTraceWrites() { diff --git a/dd-java-agent/instrumentation/scala-concurrent/src/test/scala/ScalaConcurrentTests.scala b/dd-java-agent/instrumentation/scala-concurrent/src/test/scala/ScalaConcurrentTests.scala index a4033616e73..6c7abbacff9 100644 --- a/dd-java-agent/instrumentation/scala-concurrent/src/test/scala/ScalaConcurrentTests.scala +++ b/dd-java-agent/instrumentation/scala-concurrent/src/test/scala/ScalaConcurrentTests.scala @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner.blockUntilChildSpansFinished +import datadog.trace.agent.test.InstrumentationSpecification.blockUntilChildSpansFinished import datadog.trace.api.Trace import datadog.trace.bootstrap.instrumentation.api.AgentTracer.{setAsyncPropagationEnabled, activeSpan} diff --git a/dd-java-agent/instrumentation/scala-promise/src/test/groovy/ScalaUnitPromiseTestBase.groovy b/dd-java-agent/instrumentation/scala-promise/src/test/groovy/ScalaUnitPromiseTestBase.groovy index f9fb584ea8e..dfe90bcee3e 100644 --- a/dd-java-agent/instrumentation/scala-promise/src/test/groovy/ScalaUnitPromiseTestBase.groovy +++ b/dd-java-agent/instrumentation/scala-promise/src/test/groovy/ScalaUnitPromiseTestBase.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.AgentSpan import scala.concurrent.ExecutionContext import spock.lang.IgnoreIf @@ -7,7 +7,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan -abstract class ScalaUnitPromiseTestBase extends AgentTestRunner { +abstract class ScalaUnitPromiseTestBase extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/scala/build.gradle b/dd-java-agent/instrumentation/scala/build.gradle index 6042eda2234..9247a8d070d 100644 --- a/dd-java-agent/instrumentation/scala/build.gradle +++ b/dd-java-agent/instrumentation/scala/build.gradle @@ -15,7 +15,7 @@ dependencies { // First 2.10 version that accepts target 1.8 compileOnly group: 'org.scala-lang', name: 'scala-library', version: '2.10.7' testImplementation group: 'org.scala-lang', name: 'scala-library', version: '2.10.7' - testImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + testImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:iast-instrumenter') } diff --git a/dd-java-agent/instrumentation/scalatest/build.gradle b/dd-java-agent/instrumentation/scalatest/build.gradle index 27f88013511..53e90aaf747 100644 --- a/dd-java-agent/instrumentation/scalatest/build.gradle +++ b/dd-java-agent/instrumentation/scalatest/build.gradle @@ -15,7 +15,7 @@ addTestSuiteForDir('latestDepTest', 'test') dependencies { compileOnly group: 'org.scalatest', name: 'scalatest_2.13', version: '3.0.8' - testImplementation testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') testImplementation group: 'org.scala-lang', name: 'scala-library', version: '2.12.15' testImplementation group: 'org.scalatest', name: 'scalatest_2.12', version: '3.1.0' diff --git a/dd-java-agent/instrumentation/selenium/build.gradle b/dd-java-agent/instrumentation/selenium/build.gradle index 71d13fbd7f7..3ef8f505710 100644 --- a/dd-java-agent/instrumentation/selenium/build.gradle +++ b/dd-java-agent/instrumentation/selenium/build.gradle @@ -23,7 +23,7 @@ addTestSuite('latestDepTest') dependencies { compileOnly group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.141.59' - testFixturesApi testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testFixturesApi project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') testFixturesApi project(':dd-java-agent:instrumentation:junit-5.3') testFixturesApi group: 'org.junit.platform', name: 'junit-platform-launcher', version: '1.8.2' testFixturesApi group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.8.2' diff --git a/dd-java-agent/instrumentation/selenium/src/test/groovy/datadog/trace/instrumentation/selenium/SeleniumUtilsTest.groovy b/dd-java-agent/instrumentation/selenium/src/test/groovy/datadog/trace/instrumentation/selenium/SeleniumUtilsTest.groovy index 0e1e4aa5541..7463f78c08f 100644 --- a/dd-java-agent/instrumentation/selenium/src/test/groovy/datadog/trace/instrumentation/selenium/SeleniumUtilsTest.groovy +++ b/dd-java-agent/instrumentation/selenium/src/test/groovy/datadog/trace/instrumentation/selenium/SeleniumUtilsTest.groovy @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.selenium -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification -class SeleniumUtilsTest extends AgentTestRunner { +class SeleniumUtilsTest extends InstrumentationSpecification { def "test IPv4 address detection: #host"() { expect: diff --git a/dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.0/src/test/groovy/ContextPreservingInstrumentationTest.groovy b/dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.0/src/test/groovy/ContextPreservingInstrumentationTest.groovy index 04efe1fb43e..a60ecc28fc0 100644 --- a/dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.0/src/test/groovy/ContextPreservingInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.0/src/test/groovy/ContextPreservingInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.AgentScope import datadog.trace.bootstrap.instrumentation.api.AgentTracer import io.servicetalk.concurrent.api.AsyncContext @@ -8,7 +8,7 @@ import java.util.concurrent.Executors import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class ContextPreservingInstrumentationTest extends AgentTestRunner { +class ContextPreservingInstrumentationTest extends InstrumentationSpecification { def "wrapBiConsumer"() { setup: diff --git a/dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.56/src/test/groovy/ContextPreservingInstrumentationTest.groovy b/dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.56/src/test/groovy/ContextPreservingInstrumentationTest.groovy index 3fd0060d81c..5a4e140b91f 100644 --- a/dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.56/src/test/groovy/ContextPreservingInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.56/src/test/groovy/ContextPreservingInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.AgentScope import datadog.trace.bootstrap.instrumentation.api.AgentTracer import io.servicetalk.concurrent.api.AsyncContext @@ -8,7 +8,7 @@ import java.util.concurrent.Executors import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class ContextPreservingInstrumentationTest extends AgentTestRunner { +class ContextPreservingInstrumentationTest extends InstrumentationSpecification { def "capturedContext"() { setup: diff --git a/dd-java-agent/instrumentation/servlet-common/src/test/groovy/HttpServletResponseInstrumentationTest.groovy b/dd-java-agent/instrumentation/servlet-common/src/test/groovy/HttpServletResponseInstrumentationTest.groovy index eb5d5dae0c8..6e2011c78f9 100644 --- a/dd-java-agent/instrumentation/servlet-common/src/test/groovy/HttpServletResponseInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/servlet-common/src/test/groovy/HttpServletResponseInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import datadog.trace.api.iast.sink.HttpResponseHeaderModule @@ -10,7 +10,7 @@ import javax.servlet.http.Cookie import javax.servlet.http.HttpServletResponse import javax.servlet.http.HttpServletResponseWrapper -class HttpServletResponseInstrumentationTest extends AgentTestRunner { +class HttpServletResponseInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { injectSysConfig('dd.iast.enabled', 'true') diff --git a/dd-java-agent/instrumentation/servlet-common/src/test/groovy/HttpSessionInstrumentationTest.groovy b/dd-java-agent/instrumentation/servlet-common/src/test/groovy/HttpSessionInstrumentationTest.groovy index 0ff4446ad93..8d3b437a59f 100644 --- a/dd-java-agent/instrumentation/servlet-common/src/test/groovy/HttpSessionInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/servlet-common/src/test/groovy/HttpSessionInstrumentationTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.TrustBoundaryViolationModule import foo.bar.DummyHttpSession -class HttpSessionInstrumentationTest extends AgentTestRunner { +class HttpSessionInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { injectSysConfig('dd.iast.enabled', 'true') diff --git a/dd-java-agent/instrumentation/servlet/build.gradle b/dd-java-agent/instrumentation/servlet/build.gradle index 4266e6d9f29..31c6abdc9ac 100644 --- a/dd-java-agent/instrumentation/servlet/build.gradle +++ b/dd-java-agent/instrumentation/servlet/build.gradle @@ -25,7 +25,7 @@ dependencies { testImplementation project(':dd-java-agent:instrumentation:servlet:request-2') // Don't want to conflict with jetty from the test server. - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } diff --git a/dd-java-agent/instrumentation/servlet/request-2/build.gradle b/dd-java-agent/instrumentation/servlet/request-2/build.gradle index b2137c07e9c..2a4049edcf0 100644 --- a/dd-java-agent/instrumentation/servlet/request-2/build.gradle +++ b/dd-java-agent/instrumentation/servlet/request-2/build.gradle @@ -34,7 +34,7 @@ dependencies { compileOnly group: 'javax.servlet', name: 'servlet-api', version: '2.2' implementation project(':dd-java-agent:instrumentation:servlet-common') - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testImplementation project(':dd-java-agent:instrumentation:jetty-7.0') // See if there's any conflicts. diff --git a/dd-java-agent/instrumentation/servlet/request-2/src/test/groovy/WrapperForkedTest.groovy b/dd-java-agent/instrumentation/servlet/request-2/src/test/groovy/WrapperForkedTest.groovy index 8988af466f6..b2ff903a0ab 100644 --- a/dd-java-agent/instrumentation/servlet/request-2/src/test/groovy/WrapperForkedTest.groovy +++ b/dd-java-agent/instrumentation/servlet/request-2/src/test/groovy/WrapperForkedTest.groovy @@ -77,7 +77,7 @@ class WrapperForkedTest extends Specification { then: 2 * mockReader.readLine() >>> ['!', null] then: - 1 * endCb.apply(_, _) + 1 * endCb.apply(_, _) >> Flow.ResultFlow.empty() storedCharBody.get() as String == 'Hello world!\n' } @@ -100,7 +100,7 @@ class WrapperForkedTest extends Specification { } then: 1 * mockReader.read() >> (('2' as char) as int) // ignored - 1 * endCb.apply(_, _) + 1 * endCb.apply(_, _) >> Flow.ResultFlow.empty() 1 * mockReader.close() @@ -117,7 +117,7 @@ class WrapperForkedTest extends Specification { then: 1 * mockReader.read() >> -1 1 * startCb.apply(_, _) - 1 * endCb.apply(_, _) + 1 * endCb.apply(_, _) >> Flow.ResultFlow.empty() } void 'notification issues when read returns eof variant 2'() { @@ -127,7 +127,7 @@ class WrapperForkedTest extends Specification { then: 1 * mockReader.read(_ as char[], _, _) >> -1 1 * startCb.apply(_, _) - 1 * endCb.apply(_, _) + 1 * endCb.apply(_, _) >> Flow.ResultFlow.empty() } void 'notification issues when read returns eof variant 3'() { @@ -137,7 +137,7 @@ class WrapperForkedTest extends Specification { then: 1 * mockReader.read(_ as CharBuffer) >> -1 1 * startCb.apply(_, _) - 1 * endCb.apply(_, _) + 1 * endCb.apply(_, _) >> Flow.ResultFlow.empty() } void 'notification issues when read returns eof variant 4'() { @@ -147,7 +147,7 @@ class WrapperForkedTest extends Specification { then: 1 * mockReader.read(_ as char[]) >> -1 1 * startCb.apply(_, _) - 1 * endCb.apply(_, _) + 1 * endCb.apply(_, _) >> Flow.ResultFlow.empty() } // BEGIN ServletInputStreamWrapper tests @@ -181,7 +181,7 @@ class WrapperForkedTest extends Specification { then: 1 * mockIs.close() then: - 1 * endCb.apply(_, _) + 1 * endCb.apply(_, _) >> Flow.ResultFlow.empty() storedByteBody.get() as String == '\u0000Hello' } @@ -269,7 +269,7 @@ class WrapperForkedTest extends Specification { then: 1 * mockIs.read() >> -1 1 * startCb.apply(_, _) - 1 * endCb.apply(_, _) + 1 * endCb.apply(_, _) >> Flow.ResultFlow.empty() } void 'finish notification read returns eof variant 2'() { @@ -284,7 +284,7 @@ class WrapperForkedTest extends Specification { then: 1 * mockIs.read(_ as byte[]) >> -1 1 * startCb.apply(_, _) - 1 * endCb.apply(_, _) + 1 * endCb.apply(_, _) >> Flow.ResultFlow.empty() } void 'finish notification read returns eof variant 3'() { @@ -299,7 +299,7 @@ class WrapperForkedTest extends Specification { then: 1 * mockIs.read(_ as byte[], _, _) >> -1 1 * startCb.apply(_, _) - 1 * endCb.apply(_, _) + 1 * endCb.apply(_, _) >> Flow.ResultFlow.empty() } void 'finish notification readLine returns eof'() { @@ -314,6 +314,6 @@ class WrapperForkedTest extends Specification { then: 1 * mockIs.readLine(_ as byte[], _, _) >> -1 1 * startCb.apply(_, _) - 1 * endCb.apply(_, _) + 1 * endCb.apply(_, _) >> Flow.ResultFlow.empty() } } diff --git a/dd-java-agent/instrumentation/servlet/request-3/build.gradle b/dd-java-agent/instrumentation/servlet/request-3/build.gradle index 30f9c115905..d75e1691f21 100644 --- a/dd-java-agent/instrumentation/servlet/request-3/build.gradle +++ b/dd-java-agent/instrumentation/servlet/request-3/build.gradle @@ -38,12 +38,12 @@ dependencies { compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0' implementation project(':dd-java-agent:instrumentation:servlet-common') - testFixturesApi(project(':dd-java-agent:testing')) { + testFixturesApi(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testFixturesCompileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1' - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testImplementation project(':dd-java-agent:instrumentation:jetty-7.0') // See if there's any conflicts. diff --git a/dd-java-agent/instrumentation/servlet/request-3/src/test/groovy/MultipartInstrumentationForkedTest.groovy b/dd-java-agent/instrumentation/servlet/request-3/src/test/groovy/MultipartInstrumentationForkedTest.groovy index 9c2334e75fe..03b2c6f7b3b 100644 --- a/dd-java-agent/instrumentation/servlet/request-3/src/test/groovy/MultipartInstrumentationForkedTest.groovy +++ b/dd-java-agent/instrumentation/servlet/request-3/src/test/groovy/MultipartInstrumentationForkedTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -7,7 +7,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentTracer import datadog.trace.bootstrap.instrumentation.api.TagContext import foo.bar.smoketest.MockPart -class MultipartInstrumentationForkedTest extends AgentTestRunner { +class MultipartInstrumentationForkedTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/servlet/request-3/src/test/groovy/RumHttpServletResponseWrapperTest.groovy b/dd-java-agent/instrumentation/servlet/request-3/src/test/groovy/RumHttpServletResponseWrapperTest.groovy index f34fa560ed6..e8ec2deaf42 100644 --- a/dd-java-agent/instrumentation/servlet/request-3/src/test/groovy/RumHttpServletResponseWrapperTest.groovy +++ b/dd-java-agent/instrumentation/servlet/request-3/src/test/groovy/RumHttpServletResponseWrapperTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.rum.RumInjector import datadog.trace.api.rum.RumTelemetryCollector import datadog.trace.bootstrap.instrumentation.buffer.InjectingPipeOutputStream @@ -12,7 +12,7 @@ import javax.servlet.ServletContext import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletResponse -class RumHttpServletResponseWrapperTest extends AgentTestRunner { +class RumHttpServletResponseWrapperTest extends InstrumentationSpecification { private static final String SERVLET_VERSION = "3" def mockRequest = Mock(HttpServletRequest) diff --git a/dd-java-agent/instrumentation/servlet/request-5/build.gradle b/dd-java-agent/instrumentation/servlet/request-5/build.gradle index 967f0c3f135..e731b0ae3b2 100644 --- a/dd-java-agent/instrumentation/servlet/request-5/build.gradle +++ b/dd-java-agent/instrumentation/servlet/request-5/build.gradle @@ -64,7 +64,7 @@ dependencies { transitive = false } - testFixturesApi(project(':dd-java-agent:testing')) { + testFixturesApi(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } testFixturesCompileOnly group: 'jakarta.servlet', name: 'jakarta.servlet-api', version: '5.0.0' diff --git a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/IastJakartaServletInstrumentationTest.groovy b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/IastJakartaServletInstrumentationTest.groovy index d5d98cd023b..fc7a6891b1e 100644 --- a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/IastJakartaServletInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/IastJakartaServletInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.ApplicationModule import foo.bar.smoketest.DummyHttpServlet @@ -8,7 +8,7 @@ import jakarta.servlet.Servlet import jakarta.servlet.ServletRequest import jakarta.servlet.ServletResponse -class IastJakartaServletInstrumentationTest extends AgentTestRunner{ +class IastJakartaServletInstrumentationTest extends InstrumentationSpecification{ @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaHttpServletRequestInstrumentationTest.groovy b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaHttpServletRequestInstrumentationTest.groovy index a314b59ddf3..f8d0d1811bf 100644 --- a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaHttpServletRequestInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaHttpServletRequestInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -21,7 +21,7 @@ import jakarta.servlet.http.HttpServletRequestWrapper import datadog.trace.agent.tooling.iast.TaintableEnumeration import jakarta.servlet.http.HttpSession -class JakartaHttpServletRequestInstrumentationTest extends AgentTestRunner { +class JakartaHttpServletRequestInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaHttpServletResponseInstrumentationTest.groovy b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaHttpServletResponseInstrumentationTest.groovy index 025d42f97ac..18e0f405e25 100644 --- a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaHttpServletResponseInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaHttpServletResponseInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import datadog.trace.api.iast.sink.HttpResponseHeaderModule @@ -9,7 +9,7 @@ import jakarta.servlet.http.Cookie import jakarta.servlet.http.HttpServletResponse import jakarta.servlet.http.HttpServletResponseWrapper -class JakartaHttpServletResponseInstrumentationTest extends AgentTestRunner { +class JakartaHttpServletResponseInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { injectSysConfig('dd.iast.enabled', 'true') diff --git a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaJspWriterCallsiteTest.groovy b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaJspWriterCallsiteTest.groovy index 6ca271e8700..349b80c8855 100644 --- a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaJspWriterCallsiteTest.groovy +++ b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaJspWriterCallsiteTest.groovy @@ -1,11 +1,11 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.XssModule import foo.bar.smoketest.TestJspWriterSuite import jakarta.servlet.jsp.JspWriter -class JakartaJspWriterCallsiteTest extends AgentTestRunner{ +class JakartaJspWriterCallsiteTest extends InstrumentationSpecification{ static final STRING = "test" static final CHAR_ARRAY = STRING.toCharArray() diff --git a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaJspWriterFullDetectionCallsiteTest.groovy b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaJspWriterFullDetectionCallsiteTest.groovy index 50017020ddf..ce34a2722e0 100644 --- a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaJspWriterFullDetectionCallsiteTest.groovy +++ b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaJspWriterFullDetectionCallsiteTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.XssModule import foo.bar.smoketest.TestJspWriterSuite import jakarta.servlet.jsp.JspWriter -class JakartaJspWriterFullDetectionCallsiteTest extends AgentTestRunner{ +class JakartaJspWriterFullDetectionCallsiteTest extends InstrumentationSpecification{ static final STRING = "test" static final CHAR_ARRAY = STRING.toCharArray() diff --git a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaMultipartInstrumentationTest.groovy b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaMultipartInstrumentationTest.groovy index c7f364919b3..31bf2a45be3 100644 --- a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaMultipartInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/JakartaMultipartInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -7,7 +7,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentTracer import datadog.trace.bootstrap.instrumentation.api.TagContext import foo.bar.smoketest.MockPart -class JakartaMultipartInstrumentationTest extends AgentTestRunner { +class JakartaMultipartInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/RumHttpServletResponseWrapperTest.groovy b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/RumHttpServletResponseWrapperTest.groovy index 78dbd697c0d..f2d2f049a95 100644 --- a/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/RumHttpServletResponseWrapperTest.groovy +++ b/dd-java-agent/instrumentation/servlet/request-5/src/test/groovy/RumHttpServletResponseWrapperTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.rum.RumInjector import datadog.trace.api.rum.RumTelemetryCollector import datadog.trace.bootstrap.instrumentation.buffer.InjectingPipeOutputStream @@ -12,7 +12,7 @@ import jakarta.servlet.ServletContext import jakarta.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletResponse -class RumHttpServletResponseWrapperTest extends AgentTestRunner { +class RumHttpServletResponseWrapperTest extends InstrumentationSpecification { private static final String SERVLET_VERSION = "5" def mockRequest = Mock(HttpServletRequest) diff --git a/dd-java-agent/instrumentation/servlet/src/test/groovy/CookieInstrumentationTest.groovy b/dd-java-agent/instrumentation/servlet/src/test/groovy/CookieInstrumentationTest.groovy index 57f07aa3ff7..570bbe7b909 100644 --- a/dd-java-agent/instrumentation/servlet/src/test/groovy/CookieInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/servlet/src/test/groovy/CookieInstrumentationTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -10,7 +10,7 @@ import groovy.transform.CompileDynamic import javax.servlet.http.Cookie @CompileDynamic -class CookieInstrumentationTest extends AgentTestRunner { +class CookieInstrumentationTest extends InstrumentationSpecification { private static final String NAME = 'name' private static final String VALUE = 'value' diff --git a/dd-java-agent/instrumentation/servlet/src/test/groovy/FilterTest.groovy b/dd-java-agent/instrumentation/servlet/src/test/groovy/FilterTest.groovy index aac988d10bc..0fcbd2b4331 100644 --- a/dd-java-agent/instrumentation/servlet/src/test/groovy/FilterTest.groovy +++ b/dd-java-agent/instrumentation/servlet/src/test/groovy/FilterTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.instrumentation.servlet.filter.FilterDecorator import javax.servlet.Filter @@ -11,7 +11,7 @@ import javax.servlet.ServletResponse import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class FilterTest extends AgentTestRunner { +class FilterTest extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/servlet/src/test/groovy/HttpServletRequestTest.groovy b/dd-java-agent/instrumentation/servlet/src/test/groovy/HttpServletRequestTest.groovy index c025561b8b2..908f8e271c6 100644 --- a/dd-java-agent/instrumentation/servlet/src/test/groovy/HttpServletRequestTest.groovy +++ b/dd-java-agent/instrumentation/servlet/src/test/groovy/HttpServletRequestTest.groovy @@ -1,7 +1,7 @@ import datadog.smoketest.controller.JavaxHttpServletRequestTestSuite import datadog.smoketest.controller.JavaxHttpServletRequestWrapperTestSuite import datadog.smoketest.controller.ServletRequestTestSuite -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -18,7 +18,7 @@ import javax.servlet.http.HttpServletRequestWrapper import datadog.trace.agent.tooling.iast.TaintableEnumeration -class HttpServletRequestTest extends AgentTestRunner { +class HttpServletRequestTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/servlet/src/test/groovy/HttpServletResponseTest.groovy b/dd-java-agent/instrumentation/servlet/src/test/groovy/HttpServletResponseTest.groovy index 7de02e6ca5d..234cc443471 100644 --- a/dd-java-agent/instrumentation/servlet/src/test/groovy/HttpServletResponseTest.groovy +++ b/dd-java-agent/instrumentation/servlet/src/test/groovy/HttpServletResponseTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import groovy.servlet.AbstractHttpServlet import javax.servlet.ServletException @@ -11,7 +11,7 @@ import javax.servlet.http.HttpServletResponse import static java.util.Collections.emptyEnumeration -class HttpServletResponseTest extends AgentTestRunner { +class HttpServletResponseTest extends InstrumentationSpecification { def request = Mock(HttpServletRequest) { getMethod() >> "GET" diff --git a/dd-java-agent/instrumentation/servlet/src/test/groovy/HttpServletTest.groovy b/dd-java-agent/instrumentation/servlet/src/test/groovy/HttpServletTest.groovy index 6a750aab917..2d7cae70751 100644 --- a/dd-java-agent/instrumentation/servlet/src/test/groovy/HttpServletTest.groovy +++ b/dd-java-agent/instrumentation/servlet/src/test/groovy/HttpServletTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import groovy.servlet.AbstractHttpServlet import javax.servlet.http.HttpServletRequest @@ -7,7 +7,7 @@ import javax.servlet.http.HttpServletResponse import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class HttpServletTest extends AgentTestRunner { +class HttpServletTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/servlet/src/test/groovy/JspWriterCallSiteTest.groovy b/dd-java-agent/instrumentation/servlet/src/test/groovy/JspWriterCallSiteTest.groovy index 145afcda234..7612b6881f2 100644 --- a/dd-java-agent/instrumentation/servlet/src/test/groovy/JspWriterCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/servlet/src/test/groovy/JspWriterCallSiteTest.groovy @@ -1,11 +1,11 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.XssModule import foo.bar.TestJspWriterSuite import javax.servlet.jsp.JspWriter -class JspWriterCallSiteTest extends AgentTestRunner{ +class JspWriterCallSiteTest extends InstrumentationSpecification{ static final STRING = "test" static final CHAR_ARRAY = STRING.toCharArray() diff --git a/dd-java-agent/instrumentation/servlet/src/test/groovy/JspWriterFullDetectionCallSiteTest.groovy b/dd-java-agent/instrumentation/servlet/src/test/groovy/JspWriterFullDetectionCallSiteTest.groovy index 37d88183941..a5bd974526d 100644 --- a/dd-java-agent/instrumentation/servlet/src/test/groovy/JspWriterFullDetectionCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/servlet/src/test/groovy/JspWriterFullDetectionCallSiteTest.groovy @@ -1,11 +1,11 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.XssModule import foo.bar.TestJspWriterSuite import javax.servlet.jsp.JspWriter -class JspWriterFullDetectionCallSiteTest extends AgentTestRunner{ +class JspWriterFullDetectionCallSiteTest extends InstrumentationSpecification{ static final STRING = "test" static final CHAR_ARRAY = STRING.toCharArray() diff --git a/dd-java-agent/instrumentation/servlet/src/test/groovy/RequestDispatcherTest.groovy b/dd-java-agent/instrumentation/servlet/src/test/groovy/RequestDispatcherTest.groovy index 6963425837e..305896a5bcb 100644 --- a/dd-java-agent/instrumentation/servlet/src/test/groovy/RequestDispatcherTest.groovy +++ b/dd-java-agent/instrumentation/servlet/src/test/groovy/RequestDispatcherTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.core.DDSpan @@ -13,7 +13,7 @@ import static datadog.trace.core.propagation.DatadogHttpCodec.SAMPLING_PRIORITY_ import static datadog.trace.core.propagation.DatadogHttpCodec.SPAN_ID_KEY import static datadog.trace.core.propagation.DatadogHttpCodec.TRACE_ID_KEY -class RequestDispatcherTest extends AgentTestRunner { +class RequestDispatcherTest extends InstrumentationSpecification { def request = Mock(HttpServletRequest) def response = Mock(HttpServletResponse) diff --git a/dd-java-agent/instrumentation/slick/src/test/groovy/SlickTest.groovy b/dd-java-agent/instrumentation/slick/src/test/groovy/SlickTest.groovy index 72a7d59f3a9..cbf97f0c1f5 100644 --- a/dd-java-agent/instrumentation/slick/src/test/groovy/SlickTest.groovy +++ b/dd-java-agent/instrumentation/slick/src/test/groovy/SlickTest.groovy @@ -1,8 +1,8 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.Tags -class SlickTest extends AgentTestRunner { +class SlickTest extends InstrumentationSpecification { // Can't be @Shared, otherwise the work queue is initialized before the instrumentation is applied def database = new SlickUtils(TEST_WRITER) diff --git a/dd-java-agent/instrumentation/slick/src/test/scala/SlickUtils.scala b/dd-java-agent/instrumentation/slick/src/test/scala/SlickUtils.scala index 531effffb92..ad224c40fc4 100644 --- a/dd-java-agent/instrumentation/slick/src/test/scala/SlickUtils.scala +++ b/dd-java-agent/instrumentation/slick/src/test/scala/SlickUtils.scala @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner.blockUntilChildSpansFinished +import datadog.trace.agent.test.InstrumentationSpecification.blockUntilChildSpansFinished import datadog.trace.api.Trace import datadog.trace.bootstrap.instrumentation.api.AgentTracer.{setAsyncPropagationEnabled, activeSpan} import datadog.trace.common.writer.ListWriter diff --git a/dd-java-agent/instrumentation/snakeyaml/src/test/groovy/SnakeYamlInstrumentationTest.groovy b/dd-java-agent/instrumentation/snakeyaml/src/test/groovy/SnakeYamlInstrumentationTest.groovy index 813e051c4e8..585dd5a4f12 100644 --- a/dd-java-agent/instrumentation/snakeyaml/src/test/groovy/SnakeYamlInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/snakeyaml/src/test/groovy/SnakeYamlInstrumentationTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.UntrustedDeserializationModule import org.yaml.snakeyaml.Yaml -class SnakeYamlInstrumentationTest extends AgentTestRunner { +class SnakeYamlInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/spark-executor/src/baseTest/groovy/SparkExecutorTest.groovy b/dd-java-agent/instrumentation/spark-executor/src/baseTest/groovy/SparkExecutorTest.groovy index 7e9ae0951f5..c4c8cda92de 100644 --- a/dd-java-agent/instrumentation/spark-executor/src/baseTest/groovy/SparkExecutorTest.groovy +++ b/dd-java-agent/instrumentation/spark-executor/src/baseTest/groovy/SparkExecutorTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import org.apache.spark.sql.Dataset import org.apache.spark.sql.Row @@ -6,7 +6,7 @@ import org.apache.spark.sql.RowFactory import org.apache.spark.sql.SparkSession import org.apache.spark.sql.types.StructType -class SparkExecutorTest extends AgentTestRunner { +class SparkExecutorTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/spark/build.gradle b/dd-java-agent/instrumentation/spark/build.gradle index 90e58f3977e..806f480fbe5 100644 --- a/dd-java-agent/instrumentation/spark/build.gradle +++ b/dd-java-agent/instrumentation/spark/build.gradle @@ -15,7 +15,7 @@ dependencies { testFixturesApi project(':dd-trace-api') testFixturesApi project(':dd-java-agent:instrumentation:trace-annotation') - testFixturesApi project(':dd-java-agent:testing') + testFixturesApi project(':dd-java-agent:instrumentation-testing') testFixturesCompileOnly group: 'org.apache.spark', name: 'spark-core_2.12', version: '2.4.0' testFixturesCompileOnly group: 'org.apache.spark', name: 'spark-sql_2.12', version: '2.4.0' diff --git a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSpark24SqlTest.groovy b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSpark24SqlTest.groovy index e839499b7fd..91ef13db3a7 100644 --- a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSpark24SqlTest.groovy +++ b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSpark24SqlTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.spark -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import groovy.json.JsonSlurper import org.apache.spark.sql.Dataset import org.apache.spark.sql.Row @@ -8,7 +8,7 @@ import org.apache.spark.sql.RowFactory import org.apache.spark.sql.SparkSession import org.apache.spark.sql.types.StructType -abstract class AbstractSpark24SqlTest extends AgentTestRunner { +abstract class AbstractSpark24SqlTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSpark32SqlTest.groovy b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSpark32SqlTest.groovy index 799facb055d..528545cdab3 100644 --- a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSpark32SqlTest.groovy +++ b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSpark32SqlTest.groovy @@ -1,10 +1,10 @@ package datadog.trace.instrumentation.spark -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import groovy.json.JsonSlurper import org.apache.spark.sql.SparkSession -abstract class AbstractSpark32SqlTest extends AgentTestRunner { +abstract class AbstractSpark32SqlTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkListenerTest.groovy b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkListenerTest.groovy index c7c14e95a50..c5db469fb98 100644 --- a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkListenerTest.groovy +++ b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkListenerTest.groovy @@ -3,7 +3,7 @@ package datadog.trace.instrumentation.spark import com.datadoghq.sketch.ddsketch.DDSketchProtoBinding import com.datadoghq.sketch.ddsketch.proto.DDSketch import com.datadoghq.sketch.ddsketch.store.CollapsingLowestDenseStore -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.apache.spark.SparkConf import org.apache.spark.Success$ import org.apache.spark.executor.TaskMetrics @@ -28,7 +28,7 @@ import scala.collection.immutable.Seq import scala.collection.JavaConverters -abstract class AbstractSparkListenerTest extends AgentTestRunner { +abstract class AbstractSparkListenerTest extends InstrumentationSpecification { protected abstract AbstractDatadogSparkListener getTestDatadogSparkListener() protected abstract AbstractDatadogSparkListener getTestDatadogSparkListener(SparkConf conf) diff --git a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkStructuredStreamingTest.groovy b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkStructuredStreamingTest.groovy index 2d6c2c86327..208347f5198 100644 --- a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkStructuredStreamingTest.groovy +++ b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkStructuredStreamingTest.groovy @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.spark import datadog.environment.JavaVirtualMachine -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDTags import datadog.trace.api.DDTraceId import datadog.trace.api.sampling.PrioritySampling @@ -19,7 +19,7 @@ import spock.lang.IgnoreIf @IgnoreIf(reason="https://issues.apache.org/jira/browse/HADOOP-18174", value = { JavaVirtualMachine.isJ9() }) -class AbstractSparkStructuredStreamingTest extends AgentTestRunner { +class AbstractSparkStructuredStreamingTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkTest.groovy b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkTest.groovy index 81114ec7aa7..b30e3ef0401 100644 --- a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkTest.groovy +++ b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkTest.groovy @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.spark import datadog.environment.JavaVirtualMachine -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.sampling.PrioritySampling @@ -24,7 +24,7 @@ import spock.lang.IgnoreIf @IgnoreIf(reason="https://issues.apache.org/jira/browse/HADOOP-18174", value = { JavaVirtualMachine.isJ9() }) -abstract class AbstractSparkTest extends AgentTestRunner { +abstract class AbstractSparkTest extends InstrumentationSpecification { @Override protected boolean isDataJobsEnabled() { return true diff --git a/dd-java-agent/instrumentation/sparkjava-2.3/src/test/groovy/SparkJavaBasedTest.groovy b/dd-java-agent/instrumentation/sparkjava-2.3/src/test/groovy/SparkJavaBasedTest.groovy index ce9f093a33d..950e7772ab6 100644 --- a/dd-java-agent/instrumentation/sparkjava-2.3/src/test/groovy/SparkJavaBasedTest.groovy +++ b/dd-java-agent/instrumentation/sparkjava-2.3/src/test/groovy/SparkJavaBasedTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.OkHttpUtils import datadog.trace.agent.test.utils.PortUtils import datadog.trace.api.DDSpanTypes @@ -8,7 +8,7 @@ import okhttp3.Request import spark.Spark import spock.lang.Shared -class SparkJavaBasedTest extends AgentTestRunner { +class SparkJavaBasedTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/spray-1.3/build.gradle b/dd-java-agent/instrumentation/spray-1.3/build.gradle index 51e5128b66c..d0249a9f8e9 100644 --- a/dd-java-agent/instrumentation/spray-1.3/build.gradle +++ b/dd-java-agent/instrumentation/spray-1.3/build.gradle @@ -21,6 +21,6 @@ dependencies { testImplementation group: 'io.spray', name: "spray-can_$scalaVersion", version: '1.3.3' testImplementation group: 'io.spray', name: "spray-routing_$scalaVersion", version: '1.3.1' - testImplementation project(':dd-java-agent:testing') + testImplementation project(':dd-java-agent:instrumentation-testing') } diff --git a/dd-java-agent/instrumentation/spring/spring-boot-1.3/src/test/groovy/SpringBootApplicationTest.groovy b/dd-java-agent/instrumentation/spring/spring-boot-1.3/src/test/groovy/SpringBootApplicationTest.groovy index 523c1201d99..5552fe952f8 100644 --- a/dd-java-agent/instrumentation/spring/spring-boot-1.3/src/test/groovy/SpringBootApplicationTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-boot-1.3/src/test/groovy/SpringBootApplicationTest.groovy @@ -2,13 +2,13 @@ import datadog.trace.api.ProcessTags import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.springframework.beans.factory.InitializingBean import org.springframework.boot.SpringApplication import static datadog.trace.api.config.GeneralConfig.EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED -class SpringBootApplicationTest extends AgentTestRunner { +class SpringBootApplicationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { super.configurePreAgent() @@ -53,7 +53,7 @@ class SpringBootApplicationTest extends AgentTestRunner { } } -class SpringBootApplicationNotAppliedForkedTest extends AgentTestRunner { +class SpringBootApplicationNotAppliedForkedTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/spring/spring-core-3.2.2/src/test/groovy/datadog/trace/instrumentation/springcore/StreamUtilsInstrumentationTest.groovy b/dd-java-agent/instrumentation/spring/spring-core-3.2.2/src/test/groovy/datadog/trace/instrumentation/springcore/StreamUtilsInstrumentationTest.groovy index 3447c8efdc6..bc0e3da1c51 100644 --- a/dd-java-agent/instrumentation/spring/spring-core-3.2.2/src/test/groovy/datadog/trace/instrumentation/springcore/StreamUtilsInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-core-3.2.2/src/test/groovy/datadog/trace/instrumentation/springcore/StreamUtilsInstrumentationTest.groovy @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.springcore -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import org.springframework.util.StreamUtils import java.nio.charset.StandardCharsets -class StreamUtilsInstrumentationTest extends AgentTestRunner { +class StreamUtilsInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/spring/spring-data-1.8/src/test/groovy/SpringJpaTest.groovy b/dd-java-agent/instrumentation/spring/spring-data-1.8/src/test/groovy/SpringJpaTest.groovy index 9b0f521c636..2dfab754635 100644 --- a/dd-java-agent/instrumentation/spring/spring-data-1.8/src/test/groovy/SpringJpaTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-data-1.8/src/test/groovy/SpringJpaTest.groovy @@ -1,6 +1,6 @@ // This file includes software developed at SignalFx -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.config.TraceInstrumentationConfig import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.Flaky @@ -13,7 +13,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan @Flaky("https://github.com/DataDog/dd-trace-java/issues/4004") -class SpringJpaTest extends AgentTestRunner { +class SpringJpaTest extends InstrumentationSpecification { def "test object method"() { setup: def context = new AnnotationConfigApplicationContext(JpaPersistenceConfig) diff --git a/dd-java-agent/instrumentation/spring/spring-jms-3.1/src/test/groovy/SpringSAListenerTest.groovy b/dd-java-agent/instrumentation/spring/spring-jms-3.1/src/test/groovy/SpringSAListenerTest.groovy index 14738c1ba0a..57e48978b58 100644 --- a/dd-java-agent/instrumentation/spring/spring-jms-3.1/src/test/groovy/SpringSAListenerTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-jms-3.1/src/test/groovy/SpringSAListenerTest.groovy @@ -16,7 +16,7 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.ListWriterAssert import datadog.trace.api.DDSpanTypes import datadog.trace.bootstrap.instrumentation.api.InstrumentationTags @@ -30,7 +30,7 @@ import salistener.Config import javax.jms.ConnectionFactory -class SpringSAListenerTest extends AgentTestRunner { +class SpringSAListenerTest extends InstrumentationSpecification { def configClass() { return Config diff --git a/dd-java-agent/instrumentation/spring/spring-messaging-4.0/src/test/groovy/SpringListenerSQSTest.groovy b/dd-java-agent/instrumentation/spring/spring-messaging-4.0/src/test/groovy/SpringListenerSQSTest.groovy index 0ebd581d780..ec15fe7d808 100644 --- a/dd-java-agent/instrumentation/spring/spring-messaging-4.0/src/test/groovy/SpringListenerSQSTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-messaging-4.0/src/test/groovy/SpringListenerSQSTest.groovy @@ -1,6 +1,6 @@ import static datadog.trace.agent.test.utils.TraceUtils.basicSpan -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.agent.test.utils.TraceUtils import datadog.trace.api.DDSpanTypes @@ -15,7 +15,7 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext import org.springframework.messaging.support.GenericMessage import software.amazon.awssdk.services.sqs.SqsAsyncClient -class SpringListenerSQSTest extends AgentTestRunner { +class SpringListenerSQSTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/spring/spring-rabbit-1.5/src/test/groovy/SpringAmqpTest.groovy b/dd-java-agent/instrumentation/spring/spring-rabbit-1.5/src/test/groovy/SpringAmqpTest.groovy index 91c777e1183..c76dda008c3 100644 --- a/dd-java-agent/instrumentation/spring/spring-rabbit-1.5/src/test/groovy/SpringAmqpTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-rabbit-1.5/src/test/groovy/SpringAmqpTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.PortUtils import org.testcontainers.containers.RabbitMQContainer import rabbit.MessagingRabbitMQApplication @@ -10,7 +10,7 @@ import java.util.concurrent.TimeUnit import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class SpringAmqpTest extends AgentTestRunner { +class SpringAmqpTest extends InstrumentationSpecification { @Shared RabbitMQContainer rabbit diff --git a/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/latestDepTest/groovy/ShedlockTest.groovy b/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/latestDepTest/groovy/ShedlockTest.groovy index 8a112c4468e..0c09ca82aa0 100644 --- a/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/latestDepTest/groovy/ShedlockTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/latestDepTest/groovy/ShedlockTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.test.util.Flaky import org.springframework.context.annotation.AnnotationConfigApplicationContext import org.springframework.jdbc.core.JdbcTemplate @@ -6,7 +6,7 @@ import org.springframework.jdbc.core.JdbcTemplate import javax.sql.DataSource import java.util.concurrent.TimeUnit -class ShedlockTest extends AgentTestRunner { +class ShedlockTest extends InstrumentationSpecification { @Flaky("task.invocationCount() == 0") def "should not disable shedlock"() { diff --git a/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/latestDepTest/groovy/SpringAsyncTest.groovy b/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/latestDepTest/groovy/SpringAsyncTest.groovy index 442c0ea5c16..65a6064f386 100644 --- a/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/latestDepTest/groovy/SpringAsyncTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/latestDepTest/groovy/SpringAsyncTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.springframework.context.annotation.AnnotationConfigApplicationContext import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class SpringAsyncTest extends AgentTestRunner { +class SpringAsyncTest extends InstrumentationSpecification { def "context propagated through @async annotation"() { setup: diff --git a/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/latestDepTest/groovy/SpringSchedulingTest.groovy b/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/latestDepTest/groovy/SpringSchedulingTest.groovy index 41b39568eef..6e3b1760c11 100644 --- a/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/latestDepTest/groovy/SpringSchedulingTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/latestDepTest/groovy/SpringSchedulingTest.groovy @@ -1,13 +1,13 @@ import static datadog.trace.agent.test.utils.TraceUtils.basicSpan -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import org.springframework.boot.actuate.scheduling.ScheduledTasksEndpoint import org.springframework.context.annotation.AnnotationConfigApplicationContext import java.util.concurrent.TimeUnit -class SpringSchedulingTest extends AgentTestRunner { +class SpringSchedulingTest extends InstrumentationSpecification { def legacyTracing() { false diff --git a/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/test/groovy/ShedlockTest.groovy b/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/test/groovy/ShedlockTest.groovy index 8a112c4468e..0c09ca82aa0 100644 --- a/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/test/groovy/ShedlockTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/test/groovy/ShedlockTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.test.util.Flaky import org.springframework.context.annotation.AnnotationConfigApplicationContext import org.springframework.jdbc.core.JdbcTemplate @@ -6,7 +6,7 @@ import org.springframework.jdbc.core.JdbcTemplate import javax.sql.DataSource import java.util.concurrent.TimeUnit -class ShedlockTest extends AgentTestRunner { +class ShedlockTest extends InstrumentationSpecification { @Flaky("task.invocationCount() == 0") def "should not disable shedlock"() { diff --git a/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/test/groovy/SpringAsyncTest.groovy b/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/test/groovy/SpringAsyncTest.groovy index 072fdb9f2db..a73623ba3c1 100644 --- a/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/test/groovy/SpringAsyncTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/test/groovy/SpringAsyncTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.springframework.context.annotation.AnnotationConfigApplicationContext import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class SpringAsyncTest extends AgentTestRunner { +class SpringAsyncTest extends InstrumentationSpecification { def "context propagated through @async annotation"() { setup: diff --git a/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/test/groovy/SpringSchedulingTest.groovy b/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/test/groovy/SpringSchedulingTest.groovy index 41b39568eef..6e3b1760c11 100644 --- a/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/test/groovy/SpringSchedulingTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-scheduling-3.1/src/test/groovy/SpringSchedulingTest.groovy @@ -1,13 +1,13 @@ import static datadog.trace.agent.test.utils.TraceUtils.basicSpan -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import org.springframework.boot.actuate.scheduling.ScheduledTasksEndpoint import org.springframework.context.annotation.AnnotationConfigApplicationContext import java.util.concurrent.TimeUnit -class SpringSchedulingTest extends AgentTestRunner { +class SpringSchedulingTest extends InstrumentationSpecification { def legacyTracing() { false diff --git a/dd-java-agent/instrumentation/spring/spring-security/spring-security-5.0/build.gradle b/dd-java-agent/instrumentation/spring/spring-security/spring-security-5.0/build.gradle index 51bc36007cf..1ad378db6ad 100644 --- a/dd-java-agent/instrumentation/spring/spring-security/spring-security-5.0/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-security/spring-security-5.0/build.gradle @@ -15,7 +15,7 @@ final springBootVersion = '2.6.0' dependencies { compileOnly group: 'org.springframework.security', name: 'spring-security-core', version: springSecurityVersion - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: springBootVersion testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: springBootVersion testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: springBootVersion diff --git a/dd-java-agent/instrumentation/spring/spring-security/spring-security-6.0/build.gradle b/dd-java-agent/instrumentation/spring/spring-security/spring-security-6.0/build.gradle index 619e50dd424..229a35a4eba 100644 --- a/dd-java-agent/instrumentation/spring/spring-security/spring-security-6.0/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-security/spring-security-6.0/build.gradle @@ -17,7 +17,7 @@ tasks.withType(GroovyCompile).configureEach { dependencies { - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testImplementation project(':dd-java-agent:instrumentation:spring:spring-security:spring-security-5.0') testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: springBootVersion testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: springBootVersion diff --git a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/build.gradle b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/build.gradle index 305c5c8f96b..849f6ec8412 100644 --- a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/build.gradle @@ -118,7 +118,7 @@ dependencies { } iastTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-reactor-netty', version: '2.0.+' iastTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-json', version: '2.0.+' - iastTestImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + iastTestImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') iastTestImplementation project(':dd-java-agent:instrumentation:jackson-core') iastTestImplementation project(':dd-java-agent:instrumentation:jackson-core:jackson-core-2.8') diff --git a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/src/bootTest/groovy/SpringWebfluxTest.groovy b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/src/bootTest/groovy/SpringWebfluxTest.groovy index 5692da8a305..ece3826d269 100644 --- a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/src/bootTest/groovy/SpringWebfluxTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/src/bootTest/groovy/SpringWebfluxTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.agent.test.base.OkHttpWebsocketClient import datadog.trace.api.DDSpanTypes @@ -32,7 +32,7 @@ import static datadog.trace.agent.test.base.HttpServerTest.websocketSendSpan @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = [SpringWebFluxTestApplication, ForceNettyAutoConfiguration], properties = "server.http2.enabled=true") -class SpringWebfluxTest extends AgentTestRunner { +class SpringWebfluxTest extends InstrumentationSpecification { @TestConfiguration static class ForceNettyAutoConfiguration { diff --git a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/src/test/groovy/dd/trace/instrumentation/springwebflux/client/HeadersAdviceForkedTest.groovy b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/src/test/groovy/dd/trace/instrumentation/springwebflux/client/HeadersAdviceForkedTest.groovy index 7231985efb6..001396672c5 100644 --- a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/src/test/groovy/dd/trace/instrumentation/springwebflux/client/HeadersAdviceForkedTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/src/test/groovy/dd/trace/instrumentation/springwebflux/client/HeadersAdviceForkedTest.groovy @@ -1,6 +1,6 @@ package dd.trace.instrumentation.springwebflux.client -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -10,7 +10,7 @@ import datadog.trace.bootstrap.instrumentation.api.TagContext import foo.bar.DummyRequest import org.springframework.http.server.ServletServerHttpRequest -class HeadersAdviceForkedTest extends AgentTestRunner { +class HeadersAdviceForkedTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/build.gradle b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/build.gradle index 3af90a0137f..f94e7c6b287 100644 --- a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/build.gradle @@ -66,7 +66,7 @@ dependencies { iastTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-reactor-netty', version: '3.0.0' iastTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-json', version: '3.0.0' - iastTestImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + iastTestImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') iastTestImplementation project(':dd-java-agent:instrumentation:spring:spring-webflux:spring-webflux-5.0') iastTestImplementation project(':dd-java-agent:instrumentation:jackson-core') iastTestImplementation project(':dd-java-agent:instrumentation:jackson-core:jackson-core-2.12') diff --git a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/src/bootTest/groovy/SpringWebfluxTest.groovy b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/src/bootTest/groovy/SpringWebfluxTest.groovy index 7ed34e41dea..79a7c31362e 100644 --- a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/src/bootTest/groovy/SpringWebfluxTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/src/bootTest/groovy/SpringWebfluxTest.groovy @@ -8,7 +8,7 @@ import static datadog.trace.agent.test.base.HttpServerTest.websocketReceiveSpan import static datadog.trace.agent.test.base.HttpServerTest.websocketSendSpan import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_ANNOTATION_ASYNC -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.api.DDSpanTypes import datadog.trace.api.DDTags @@ -35,7 +35,7 @@ import java.time.Duration @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = [SpringWebFluxTestApplication], properties = "server.http2.enabled=true") -class SpringWebfluxHttp11Test extends AgentTestRunner { +class SpringWebfluxHttp11Test extends InstrumentationSpecification { protected HttpClient buildClient() { HttpClient.create().protocol(HttpProtocol.HTTP11) } diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/build.gradle b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/build.gradle index cdf7396857a..8e1489d90a4 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/build.gradle @@ -42,11 +42,11 @@ dependencies { // compileOnly group: 'org.springframework', name: 'spring-webmvc', version: '2.5.6' // compileOnly group: 'javax.servlet', name: 'servlet-api', version: '2.4' - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude(module: 'jetty-server') // incompatible servlet api } - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') // Include spring-beans instrumentation to test repairing bean definitions testImplementation project(':dd-java-agent:instrumentation:spring:spring-beans-3.1') diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/latestDepTest/groovy/datadog/trace/instrumentation/springweb/HandlerMappingResourceNameFilterForkedTest.groovy b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/latestDepTest/groovy/datadog/trace/instrumentation/springweb/HandlerMappingResourceNameFilterForkedTest.groovy index 17188ac34d6..a271f69a743 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/latestDepTest/groovy/datadog/trace/instrumentation/springweb/HandlerMappingResourceNameFilterForkedTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/latestDepTest/groovy/datadog/trace/instrumentation/springweb/HandlerMappingResourceNameFilterForkedTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.springweb -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.annotation.ComponentScan import org.springframework.context.annotation.Configuration @@ -21,7 +21,7 @@ import static datadog.trace.bootstrap.instrumentation.decorator.HttpServerDecora // https://mvnrepository.com/artifact/org.springframework/spring-test-mvc?repo=springio-plugins-release // https://github.com/spring-attic/spring-test-mvc @ContextConfiguration(classes = TestConfiguration, loader = AnnotationConfigWebContextLoader) -class HandlerMappingResourceNameFilterForkedTest extends AgentTestRunner { +class HandlerMappingResourceNameFilterForkedTest extends InstrumentationSpecification { @EnableWebMvc @Configuration @ComponentScan(basePackages = "datadog.trace.instrumentation.springweb") diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/latestDepTest/groovy/datadog/trace/instrumentation/springweb/ResteasySpringBeanProcessorForkedTest.groovy b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/latestDepTest/groovy/datadog/trace/instrumentation/springweb/ResteasySpringBeanProcessorForkedTest.groovy index 66c8c66ff44..4dbf7475956 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/latestDepTest/groovy/datadog/trace/instrumentation/springweb/ResteasySpringBeanProcessorForkedTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/latestDepTest/groovy/datadog/trace/instrumentation/springweb/ResteasySpringBeanProcessorForkedTest.groovy @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.springweb -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.jboss.resteasy.plugins.spring.SpringBeanProcessor import org.springframework.beans.factory.config.ConfigurableListableBeanFactory import org.springframework.beans.factory.support.BeanDefinitionRegistry import org.springframework.beans.factory.support.GenericBeanDefinition import test.boot.TestProvider -class ResteasySpringBeanProcessorForkedTest extends AgentTestRunner { +class ResteasySpringBeanProcessorForkedTest extends InstrumentationSpecification { interface TestBeanFactory extends ConfigurableListableBeanFactory, BeanDefinitionRegistry {} diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/latestDepTest/groovy/test/iast/HandlerMethodReturnValueHandlerCompositeInstrumentationTest.groovy b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/latestDepTest/groovy/test/iast/HandlerMethodReturnValueHandlerCompositeInstrumentationTest.groovy index b59c3c3a369..1b6eac319a4 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/latestDepTest/groovy/test/iast/HandlerMethodReturnValueHandlerCompositeInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/latestDepTest/groovy/test/iast/HandlerMethodReturnValueHandlerCompositeInstrumentationTest.groovy @@ -1,6 +1,6 @@ package test.iast -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.UnvalidatedRedirectModule import datadog.trace.api.iast.sink.XssModule @@ -11,7 +11,7 @@ import org.springframework.web.servlet.ModelAndView import org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor import org.springframework.web.servlet.view.AbstractUrlBasedView -class HandlerMethodReturnValueHandlerCompositeInstrumentationTest extends AgentTestRunner { +class HandlerMethodReturnValueHandlerCompositeInstrumentationTest extends InstrumentationSpecification { private static final TARGET_CLASS_NAME = 'org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite' diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/test/groovy/datadog/trace/instrumentation/springweb/HandlerMappingResourceNameFilterForkedTest.groovy b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/test/groovy/datadog/trace/instrumentation/springweb/HandlerMappingResourceNameFilterForkedTest.groovy index 17188ac34d6..a271f69a743 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/test/groovy/datadog/trace/instrumentation/springweb/HandlerMappingResourceNameFilterForkedTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/test/groovy/datadog/trace/instrumentation/springweb/HandlerMappingResourceNameFilterForkedTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.springweb -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.annotation.ComponentScan import org.springframework.context.annotation.Configuration @@ -21,7 +21,7 @@ import static datadog.trace.bootstrap.instrumentation.decorator.HttpServerDecora // https://mvnrepository.com/artifact/org.springframework/spring-test-mvc?repo=springio-plugins-release // https://github.com/spring-attic/spring-test-mvc @ContextConfiguration(classes = TestConfiguration, loader = AnnotationConfigWebContextLoader) -class HandlerMappingResourceNameFilterForkedTest extends AgentTestRunner { +class HandlerMappingResourceNameFilterForkedTest extends InstrumentationSpecification { @EnableWebMvc @Configuration @ComponentScan(basePackages = "datadog.trace.instrumentation.springweb") diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/test/groovy/datadog/trace/instrumentation/springweb/ResteasySpringBeanProcessorForkedTest.groovy b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/test/groovy/datadog/trace/instrumentation/springweb/ResteasySpringBeanProcessorForkedTest.groovy index 66c8c66ff44..4dbf7475956 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/test/groovy/datadog/trace/instrumentation/springweb/ResteasySpringBeanProcessorForkedTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/test/groovy/datadog/trace/instrumentation/springweb/ResteasySpringBeanProcessorForkedTest.groovy @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.springweb -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import org.jboss.resteasy.plugins.spring.SpringBeanProcessor import org.springframework.beans.factory.config.ConfigurableListableBeanFactory import org.springframework.beans.factory.support.BeanDefinitionRegistry import org.springframework.beans.factory.support.GenericBeanDefinition import test.boot.TestProvider -class ResteasySpringBeanProcessorForkedTest extends AgentTestRunner { +class ResteasySpringBeanProcessorForkedTest extends InstrumentationSpecification { interface TestBeanFactory extends ConfigurableListableBeanFactory, BeanDefinitionRegistry {} diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/test/groovy/test/iast/HandlerMethodReturnValueHandlerCompositeInstrumentationTest.groovy b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/test/groovy/test/iast/HandlerMethodReturnValueHandlerCompositeInstrumentationTest.groovy index b59c3c3a369..1b6eac319a4 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/test/groovy/test/iast/HandlerMethodReturnValueHandlerCompositeInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/src/test/groovy/test/iast/HandlerMethodReturnValueHandlerCompositeInstrumentationTest.groovy @@ -1,6 +1,6 @@ package test.iast -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.UnvalidatedRedirectModule import datadog.trace.api.iast.sink.XssModule @@ -11,7 +11,7 @@ import org.springframework.web.servlet.ModelAndView import org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor import org.springframework.web.servlet.view.AbstractUrlBasedView -class HandlerMethodReturnValueHandlerCompositeInstrumentationTest extends AgentTestRunner { +class HandlerMethodReturnValueHandlerCompositeInstrumentationTest extends InstrumentationSpecification { private static final TARGET_CLASS_NAME = 'org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite' diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/build.gradle b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/build.gradle index 16c72d2e762..22c3e8e867e 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/build.gradle @@ -14,7 +14,7 @@ dependencies { compileOnly group: 'org.springframework', name: 'spring-webmvc', version: '5.3.23' compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1' - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude(module: 'jetty-server') // incompatable servlet api } diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/test/groovy/EscapeUtilsCallSiteTest.groovy b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/test/groovy/EscapeUtilsCallSiteTest.groovy index 760739094cb..15ae581a6ae 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/test/groovy/EscapeUtilsCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/test/groovy/EscapeUtilsCallSiteTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.VulnerabilityMarks import datadog.trace.api.iast.propagation.PropagationModule import foo.bar.TestEscapeUtilsSuite -class EscapeUtilsCallSiteTest extends AgentTestRunner { +class EscapeUtilsCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/test/groovy/test/apms8174/ServletPathRequestFilterTest.groovy b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/test/groovy/test/apms8174/ServletPathRequestFilterTest.groovy index ee98d60b011..5a5ad0ccc80 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/test/groovy/test/apms8174/ServletPathRequestFilterTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/test/groovy/test/apms8174/ServletPathRequestFilterTest.groovy @@ -1,6 +1,6 @@ package test.apms8174 -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDSpanTypes import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc @@ -25,7 +25,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @SpringBootTest(classes = [TestController, TestConfig]) @EnableWebMvc @AutoConfigureMockMvc -class ServletPathRequestFilterTest extends AgentTestRunner { +class ServletPathRequestFilterTest extends InstrumentationSpecification { static class TestConfig { @Bean diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/test/groovy/test/boot/EndpointCollectorSpringBootTest.groovy b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/test/groovy/test/boot/EndpointCollectorSpringBootTest.groovy index bb771b0eb29..093bbf0f9d6 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/test/groovy/test/boot/EndpointCollectorSpringBootTest.groovy +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/src/test/groovy/test/boot/EndpointCollectorSpringBootTest.groovy @@ -1,6 +1,6 @@ package test.boot -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.base.HttpServerTest import datadog.trace.api.telemetry.Endpoint import datadog.trace.api.telemetry.EndpointCollector @@ -20,7 +20,7 @@ import static datadog.trace.api.config.AppSecConfig.API_SECURITY_ENDPOINT_COLLEC @SpringBootTest(classes = DiscoveryController) @EnableWebMvc @AutoConfigureMockMvc -class EndpointCollectorSpringBootTest extends AgentTestRunner { +class EndpointCollectorSpringBootTest extends InstrumentationSpecification { @Controller static class DiscoveryController { diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/build.gradle b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/build.gradle index 6e326f8adfc..9d87380975a 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/build.gradle @@ -36,7 +36,7 @@ dependencies { implementation project(':dd-java-agent:instrumentation:span-origin') main_java17Implementation project(':dd-java-agent:instrumentation:span-origin') - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude(module: 'jetty-server') // incompatible servlet api } diff --git a/dd-java-agent/instrumentation/sslsocket/src/test/groovy/SocketForkedTest.groovy b/dd-java-agent/instrumentation/sslsocket/src/test/groovy/SocketForkedTest.groovy index 85203058e8a..bd137ae62b7 100644 --- a/dd-java-agent/instrumentation/sslsocket/src/test/groovy/SocketForkedTest.groovy +++ b/dd-java-agent/instrumentation/sslsocket/src/test/groovy/SocketForkedTest.groovy @@ -1,8 +1,8 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class SocketForkedTest extends AgentTestRunner { +class SocketForkedTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/sslsocket/src/test/groovy/SslSocketTest.groovy b/dd-java-agent/instrumentation/sslsocket/src/test/groovy/SslSocketTest.groovy index e3f836484e6..6e70ff2fcf0 100644 --- a/dd-java-agent/instrumentation/sslsocket/src/test/groovy/SslSocketTest.groovy +++ b/dd-java-agent/instrumentation/sslsocket/src/test/groovy/SslSocketTest.groovy @@ -1,6 +1,6 @@ package test -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.usm.UsmExtractor import datadog.trace.bootstrap.instrumentation.usm.UsmMessageFactory import spock.lang.AutoCleanup @@ -11,7 +11,7 @@ import java.lang.reflect.Field import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer -class SslSocketTest extends AgentTestRunner { +class SslSocketTest extends InstrumentationSpecification { @AutoCleanup @Shared def server = httpServer { diff --git a/dd-java-agent/instrumentation/testng/build.gradle b/dd-java-agent/instrumentation/testng/build.gradle index dc239f8b9b6..11436002ec7 100644 --- a/dd-java-agent/instrumentation/testng/build.gradle +++ b/dd-java-agent/instrumentation/testng/build.gradle @@ -7,7 +7,7 @@ apply from: "$rootDir/gradle/java.gradle" dependencies { compileOnly group: 'org.testng', name: 'testng', version: '6.4' - testFixturesApi testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testFixturesApi project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') testFixturesImplementation group: 'org.testng', name: 'testng', version: '6.4' testFixturesApi group: 'org.apache.maven', name: 'maven-artifact', version: '3.9.9' diff --git a/dd-java-agent/instrumentation/thymeleaf/src/test/groovy/datadog/trace/instrumentation/thymeleaf/ThymeleafXssTest.groovy b/dd-java-agent/instrumentation/thymeleaf/src/test/groovy/datadog/trace/instrumentation/thymeleaf/ThymeleafXssTest.groovy index 803207eb5cc..0d9c524892b 100644 --- a/dd-java-agent/instrumentation/thymeleaf/src/test/groovy/datadog/trace/instrumentation/thymeleaf/ThymeleafXssTest.groovy +++ b/dd-java-agent/instrumentation/thymeleaf/src/test/groovy/datadog/trace/instrumentation/thymeleaf/ThymeleafXssTest.groovy @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.thymeleaf -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.XssModule import org.thymeleaf.TemplateEngine import org.thymeleaf.context.Context -class ThymeleafXssTest extends AgentTestRunner { +class ThymeleafXssTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/tomcat-5.5/build.gradle b/dd-java-agent/instrumentation/tomcat-5.5/build.gradle index 003e3eb0753..cd1f047b777 100644 --- a/dd-java-agent/instrumentation/tomcat-5.5/build.gradle +++ b/dd-java-agent/instrumentation/tomcat-5.5/build.gradle @@ -94,7 +94,7 @@ dependencies { implementation project(':dd-java-agent:instrumentation:tomcat-5.5-common') - testImplementation(project(':dd-java-agent:testing')) { + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } @@ -126,7 +126,7 @@ dependencies { latest10TestImplementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: '10.+' latest10TestImplementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-websocket', version: '10.+' latest10TestImplementation group: 'org.apache.tomcat', name: 'jakartaee-migration', version: '1.+' - latest10TestImplementation(testFixtures(project(":dd-java-agent:appsec"))) + latest10TestImplementation project(":dd-java-agent:appsec:appsec-test-fixtures") latest10TestImplementation(project(':dd-java-agent:instrumentation:tomcat-appsec-6')) latest10TestImplementation(project(':dd-java-agent:instrumentation:tomcat-appsec-7')) @@ -135,7 +135,7 @@ dependencies { latestDepTestImplementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: '11.+' latestDepTestImplementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-websocket', version: '11.+' latestDepTestImplementation group: 'org.apache.tomcat', name: 'jakartaee-migration', version: '1.+' - latestDepTestImplementation(testFixtures(project(":dd-java-agent:appsec"))) + latestDepTestImplementation project(":dd-java-agent:appsec:appsec-test-fixtures") latestDepTestRuntimeOnly(project(':dd-java-agent:instrumentation:tomcat-appsec-6')) latestDepTestRuntimeOnly(project(':dd-java-agent:instrumentation:tomcat-appsec-7')) diff --git a/dd-java-agent/instrumentation/tomcat-5.5/src/latestDepTest/groovy/TomcatNoPropagationForkedTest.groovy b/dd-java-agent/instrumentation/tomcat-5.5/src/latestDepTest/groovy/TomcatNoPropagationForkedTest.groovy index f9928fb95ea..7fe3eb911ee 100644 --- a/dd-java-agent/instrumentation/tomcat-5.5/src/latestDepTest/groovy/TomcatNoPropagationForkedTest.groovy +++ b/dd-java-agent/instrumentation/tomcat-5.5/src/latestDepTest/groovy/TomcatNoPropagationForkedTest.groovy @@ -1,7 +1,7 @@ import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.SUCCESS import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.OkHttpUtils import datadog.trace.api.DDSpanTypes import datadog.trace.api.config.TracerConfig @@ -12,7 +12,7 @@ import org.apache.catalina.Context import org.apache.catalina.Wrapper import spock.lang.Shared -class TomcatNoPropagationForkedTest extends AgentTestRunner { +class TomcatNoPropagationForkedTest extends InstrumentationSpecification { @Shared TomcatServer server = new TomcatServer("/", false, { Context ctx -> Wrapper wrapper = ctx.createWrapper() diff --git a/dd-java-agent/instrumentation/tomcat-appsec-7/src/test/groovy/datadog/trace/instrumentation/tomcat7/ErrorReportValueInstrumentationForkedTest.groovy b/dd-java-agent/instrumentation/tomcat-appsec-7/src/test/groovy/datadog/trace/instrumentation/tomcat7/ErrorReportValueInstrumentationForkedTest.groovy index 9d176479d73..a0d89579522 100644 --- a/dd-java-agent/instrumentation/tomcat-appsec-7/src/test/groovy/datadog/trace/instrumentation/tomcat7/ErrorReportValueInstrumentationForkedTest.groovy +++ b/dd-java-agent/instrumentation/tomcat-appsec-7/src/test/groovy/datadog/trace/instrumentation/tomcat7/ErrorReportValueInstrumentationForkedTest.groovy @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.tomcat7 -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.StacktraceLeakModule import org.apache.catalina.connector.Request import org.apache.catalina.connector.Response import org.apache.catalina.valves.ErrorReportValve -class ErrorReportValueInstrumentationForkedTest extends AgentTestRunner { +class ErrorReportValueInstrumentationForkedTest extends InstrumentationSpecification { void 'test vulnerability detection'() { given: diff --git a/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/ConfiguredTraceAnnotationsTest.groovy b/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/ConfiguredTraceAnnotationsTest.groovy index cb5ef80bf47..cadbbf282b0 100644 --- a/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/ConfiguredTraceAnnotationsTest.groovy +++ b/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/ConfiguredTraceAnnotationsTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import dd.test.trace.annotation.SayTracedHello import java.util.concurrent.Callable -class ConfiguredTraceAnnotationsTest extends AgentTestRunner { +class ConfiguredTraceAnnotationsTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/MeasuredConfigTest.groovy b/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/MeasuredConfigTest.groovy index ac9c46b7e8c..c3f540b4d38 100644 --- a/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/MeasuredConfigTest.groovy +++ b/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/MeasuredConfigTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import java.util.concurrent.Callable -class MeasuredConfigTest extends AgentTestRunner { +class MeasuredConfigTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceAnnotationNewOpNameForkedTest.groovy b/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceAnnotationNewOpNameForkedTest.groovy index dadb7c2ed20..fbdbce573f7 100644 --- a/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceAnnotationNewOpNameForkedTest.groovy +++ b/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceAnnotationNewOpNameForkedTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.Trace import datadog.trace.bootstrap.instrumentation.api.Tags import dd.test.trace.annotation.SayTracedHello @@ -6,7 +6,7 @@ import dd.test.trace.annotation.TracedSubClass import java.util.concurrent.Callable -class TraceAnnotationNewOpNameForkedTest extends AgentTestRunner { +class TraceAnnotationNewOpNameForkedTest extends InstrumentationSpecification { @Override void configurePreAgent() { injectSysConfig("dd.trace.annotations.legacy.tracing.enabled", "false") diff --git a/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceAnnotationsAsyncTest.groovy b/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceAnnotationsAsyncTest.groovy index 2ad5f5be278..059760f92ed 100644 --- a/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceAnnotationsAsyncTest.groovy +++ b/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceAnnotationsAsyncTest.groovy @@ -1,10 +1,10 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import dd.test.trace.annotation.SayTracedHello import java.util.concurrent.CountDownLatch -class TraceAnnotationsAsyncTest extends AgentTestRunner { +class TraceAnnotationsAsyncTest extends InstrumentationSpecification { @Override void configurePreAgent() { super.configurePreAgent() diff --git a/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceAnnotationsTest.groovy b/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceAnnotationsTest.groovy index a1f1cfd6df6..6af0e9b0ef7 100644 --- a/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceAnnotationsTest.groovy +++ b/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceAnnotationsTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.utils.TraceUtils import datadog.trace.api.Trace import datadog.trace.bootstrap.instrumentation.api.Tags @@ -8,7 +8,7 @@ import dd.test.trace.annotation.TracedSubClass import java.util.concurrent.Callable -class TraceAnnotationsTest extends AgentTestRunner { +class TraceAnnotationsTest extends InstrumentationSpecification { def "test simple case annotations"() { setup: diff --git a/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceConfigTest.groovy b/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceConfigTest.groovy index ceed7f16c49..f1c0874e670 100644 --- a/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceConfigTest.groovy +++ b/dd-java-agent/instrumentation/trace-annotation/src/test/groovy/TraceConfigTest.groovy @@ -1,9 +1,9 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.bootstrap.instrumentation.api.Tags import java.util.concurrent.Callable -class TraceConfigTest extends AgentTestRunner { +class TraceConfigTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/unbescape/src/test/groovy/datadog/trace/instrumentation/unbescape/EscapeUtilsCallSiteTest.groovy b/dd-java-agent/instrumentation/unbescape/src/test/groovy/datadog/trace/instrumentation/unbescape/EscapeUtilsCallSiteTest.groovy index 0b230c96fd8..1acd970d72b 100644 --- a/dd-java-agent/instrumentation/unbescape/src/test/groovy/datadog/trace/instrumentation/unbescape/EscapeUtilsCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/unbescape/src/test/groovy/datadog/trace/instrumentation/unbescape/EscapeUtilsCallSiteTest.groovy @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.unbescape -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.VulnerabilityMarks import datadog.trace.api.iast.propagation.PropagationModule import foo.bar.TestEscapeUtilsSuite -class EscapeUtilsCallSiteTest extends AgentTestRunner { +class EscapeUtilsCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/velocity/src/test/groovy/datadog/trace/instrumentation/velocity/ASTReferenceInstrumentationTest.groovy b/dd-java-agent/instrumentation/velocity/src/test/groovy/datadog/trace/instrumentation/velocity/ASTReferenceInstrumentationTest.groovy index 02f11e79e3a..edaac7be656 100644 --- a/dd-java-agent/instrumentation/velocity/src/test/groovy/datadog/trace/instrumentation/velocity/ASTReferenceInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/velocity/src/test/groovy/datadog/trace/instrumentation/velocity/ASTReferenceInstrumentationTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.velocity -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.XssModule import org.apache.velocity.Template @@ -9,7 +9,7 @@ import org.apache.velocity.app.VelocityEngine import org.apache.velocity.runtime.RuntimeConstants import org.apache.velocity.tools.generic.EscapeTool -class ASTReferenceInstrumentationTest extends AgentTestRunner { +class ASTReferenceInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/velocity/src/test/groovy/datadog/trace/instrumentation/velocity/EscapeToolCallSiteTest.groovy b/dd-java-agent/instrumentation/velocity/src/test/groovy/datadog/trace/instrumentation/velocity/EscapeToolCallSiteTest.groovy index bc1ee28386c..9fbc8335955 100644 --- a/dd-java-agent/instrumentation/velocity/src/test/groovy/datadog/trace/instrumentation/velocity/EscapeToolCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/velocity/src/test/groovy/datadog/trace/instrumentation/velocity/EscapeToolCallSiteTest.groovy @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.velocity -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.propagation.PropagationModule import foo.bar.TestEscapeToolSuite @@ -10,7 +10,7 @@ import static datadog.trace.api.iast.VulnerabilityMarks.SQL_INJECTION_MARK import static datadog.trace.api.iast.VulnerabilityMarks.XSS_MARK @CompileDynamic -class EscapeToolCallSiteTest extends AgentTestRunner { +class EscapeToolCallSiteTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/vertx-mysql-client-3.9/src/test/groovy/VertxSqlClientForkedTest.groovy b/dd-java-agent/instrumentation/vertx-mysql-client-3.9/src/test/groovy/VertxSqlClientForkedTest.groovy index 52797a8daac..19ce31ce76b 100644 --- a/dd-java-agent/instrumentation/vertx-mysql-client-3.9/src/test/groovy/VertxSqlClientForkedTest.groovy +++ b/dd-java-agent/instrumentation/vertx-mysql-client-3.9/src/test/groovy/VertxSqlClientForkedTest.groovy @@ -1,5 +1,5 @@ import TestDatabases.TestDBInfo -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.core.DDSpan @@ -27,7 +27,7 @@ import java.util.concurrent.atomic.AtomicReference import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class VertxSqlClientForkedTest extends AgentTestRunner { +class VertxSqlClientForkedTest extends InstrumentationSpecification { @AutoCleanup @Shared // This database name must match up with the name in the CircleCI MySQL Docker definition diff --git a/dd-java-agent/instrumentation/vertx-mysql-client-4.0/src/test/groovy/VertxSqlClientForkedTest.groovy b/dd-java-agent/instrumentation/vertx-mysql-client-4.0/src/test/groovy/VertxSqlClientForkedTest.groovy index 64efcac02ac..3e43b95bed0 100644 --- a/dd-java-agent/instrumentation/vertx-mysql-client-4.0/src/test/groovy/VertxSqlClientForkedTest.groovy +++ b/dd-java-agent/instrumentation/vertx-mysql-client-4.0/src/test/groovy/VertxSqlClientForkedTest.groovy @@ -1,5 +1,5 @@ import TestDatabases.TestDBInfo -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.core.DDSpan @@ -29,7 +29,7 @@ import java.util.concurrent.atomic.AtomicReference import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -class VertxSqlClientForkedTest extends AgentTestRunner { +class VertxSqlClientForkedTest extends InstrumentationSpecification { @AutoCleanup @Shared // This database name must match up with the name in the CircleCI MySQL Docker definition diff --git a/dd-java-agent/instrumentation/vertx-pg-client-4.0/src/test/groovy/VertxPostgresSqlClientForkedTest.groovy b/dd-java-agent/instrumentation/vertx-pg-client-4.0/src/test/groovy/VertxPostgresSqlClientForkedTest.groovy index b174d36a38f..d294e0de339 100644 --- a/dd-java-agent/instrumentation/vertx-pg-client-4.0/src/test/groovy/VertxPostgresSqlClientForkedTest.groovy +++ b/dd-java-agent/instrumentation/vertx-pg-client-4.0/src/test/groovy/VertxPostgresSqlClientForkedTest.groovy @@ -1,6 +1,6 @@ import TestDatabases.TestDBInfo import datadog.environment.JavaVirtualMachine -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.agent.test.asserts.TraceAssert import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.core.DDSpan @@ -23,7 +23,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace @IgnoreIf(reason = "A change in Locale.ROOT that was introduced in JDK 22 is not fixed until vertx-pg-client v4.5.1: https://github.com/eclipse-vertx/vertx-sql-client/pull/1394", value = { JavaVirtualMachine.isJavaVersionAtLeast(22) }) -class VertxPostgresSqlClientForkedTest extends AgentTestRunner { +class VertxPostgresSqlClientForkedTest extends InstrumentationSpecification { @AutoCleanup @Shared def dbs = TestDatabases.initialise("postgres") diff --git a/dd-java-agent/instrumentation/vertx-rx-3.5/build.gradle b/dd-java-agent/instrumentation/vertx-rx-3.5/build.gradle index 03319118754..34ec8abee43 100644 --- a/dd-java-agent/instrumentation/vertx-rx-3.5/build.gradle +++ b/dd-java-agent/instrumentation/vertx-rx-3.5/build.gradle @@ -1,3 +1,5 @@ +import java.time.Duration +import java.time.temporal.ChronoUnit apply from: "$rootDir/gradle/java.gradle" @@ -10,6 +12,15 @@ latestDepTest { finalizedBy 'latestDepForkedTest' } +// Increased time needed in CI due to migration from JUnit 4 SpockRunner to JUnit 5 SpockExtension +forkedTest { + timeout = Duration.of(15, ChronoUnit.MINUTES) +} + +latestDepForkedTest { + timeout = Duration.of(15, ChronoUnit.MINUTES) +} + dependencies { testImplementation project(':dd-java-agent:instrumentation:netty-4.1') testImplementation project(':dd-java-agent:instrumentation:trace-annotation') diff --git a/dd-java-agent/instrumentation/vertx-web-3.4/build.gradle b/dd-java-agent/instrumentation/vertx-web-3.4/build.gradle index 777e6d9f3c9..ddcf8949f7f 100644 --- a/dd-java-agent/instrumentation/vertx-web-3.4/build.gradle +++ b/dd-java-agent/instrumentation/vertx-web-3.4/build.gradle @@ -38,7 +38,7 @@ dependencies { testImplementation project(':dd-java-agent:instrumentation:netty-4.1') testImplementation project(':dd-java-agent:instrumentation:trace-annotation') - testImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + testImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:iast-instrumenter') @@ -47,7 +47,7 @@ dependencies { testImplementation group: 'org.mockito', name: 'mockito-inline', version: '4.11.0' - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') latestDepTestImplementation group: 'io.vertx', name: 'vertx-web', version: '3.+' latestDepTestImplementation group: 'io.vertx', name: 'vertx-web-client', version: '3.+' diff --git a/dd-java-agent/instrumentation/vertx-web-3.4/src/test/groovy/core/BufferInstrumentationTest.groovy b/dd-java-agent/instrumentation/vertx-web-3.4/src/test/groovy/core/BufferInstrumentationTest.groovy index 9d7992d9e37..947e56d666b 100644 --- a/dd-java-agent/instrumentation/vertx-web-3.4/src/test/groovy/core/BufferInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/vertx-web-3.4/src/test/groovy/core/BufferInstrumentationTest.groovy @@ -1,6 +1,6 @@ package core -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes import datadog.trace.api.iast.Taintable @@ -10,7 +10,7 @@ import io.vertx.core.buffer.Buffer import io.vertx.core.buffer.impl.BufferImpl @CompileDynamic -class BufferInstrumentationTest extends AgentTestRunner { +class BufferInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/vertx-web-3.4/src/test/groovy/core/CaseInsensitiveHeadersInstrumentationTest.groovy b/dd-java-agent/instrumentation/vertx-web-3.4/src/test/groovy/core/CaseInsensitiveHeadersInstrumentationTest.groovy index 35b9414ff3e..de693a4984a 100644 --- a/dd-java-agent/instrumentation/vertx-web-3.4/src/test/groovy/core/CaseInsensitiveHeadersInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/vertx-web-3.4/src/test/groovy/core/CaseInsensitiveHeadersInstrumentationTest.groovy @@ -1,6 +1,6 @@ package core -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -14,7 +14,7 @@ import io.vertx.core.http.CaseInsensitiveHeaders import static org.junit.jupiter.api.Assumptions.assumeTrue @CompileDynamic -class CaseInsensitiveHeadersInstrumentationTest extends AgentTestRunner { +class CaseInsensitiveHeadersInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/vertx-web-3.4/src/test/groovy/core/HeadersAdaptorInstrumentationTest.groovy b/dd-java-agent/instrumentation/vertx-web-3.4/src/test/groovy/core/HeadersAdaptorInstrumentationTest.groovy index 363aeae6878..0bcbdcd9630 100644 --- a/dd-java-agent/instrumentation/vertx-web-3.4/src/test/groovy/core/HeadersAdaptorInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/vertx-web-3.4/src/test/groovy/core/HeadersAdaptorInstrumentationTest.groovy @@ -1,6 +1,6 @@ package core -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -17,7 +17,7 @@ import io.vertx.core.http.impl.Http2HeadersAdaptor import static org.junit.jupiter.api.Assumptions.assumeTrue @CompileDynamic -class HeadersAdaptorInstrumentationTest extends AgentTestRunner { +class HeadersAdaptorInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/vertx-web-3.5/src/test/groovy/core/VertxHttpHeadersInstrumentationTest.groovy b/dd-java-agent/instrumentation/vertx-web-3.5/src/test/groovy/core/VertxHttpHeadersInstrumentationTest.groovy index 3f8dbd2f247..d3fc2566b40 100644 --- a/dd-java-agent/instrumentation/vertx-web-3.5/src/test/groovy/core/VertxHttpHeadersInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/vertx-web-3.5/src/test/groovy/core/VertxHttpHeadersInstrumentationTest.groovy @@ -1,6 +1,6 @@ package core -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -12,7 +12,7 @@ import io.vertx.core.MultiMap import io.vertx.core.http.impl.headers.VertxHttpHeaders @CompileDynamic -class VertxHttpHeadersInstrumentationTest extends AgentTestRunner { +class VertxHttpHeadersInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/vertx-web-3.9/build.gradle b/dd-java-agent/instrumentation/vertx-web-3.9/build.gradle index 5861f0980eb..7228a5d5199 100644 --- a/dd-java-agent/instrumentation/vertx-web-3.9/build.gradle +++ b/dd-java-agent/instrumentation/vertx-web-3.9/build.gradle @@ -32,7 +32,7 @@ dependencies { testImplementation project(':dd-java-agent:instrumentation:netty-4.1') testImplementation project(':dd-java-agent:instrumentation:trace-annotation') - testImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + testImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') testImplementation group: 'io.vertx', name: 'vertx-web', version: '3.9.0' testImplementation group: 'io.vertx', name: 'vertx-web-client', version: '3.9.0' diff --git a/dd-java-agent/instrumentation/vertx-web-4.0/build.gradle b/dd-java-agent/instrumentation/vertx-web-4.0/build.gradle index 0b0ebe88d4f..dd76d136d16 100644 --- a/dd-java-agent/instrumentation/vertx-web-4.0/build.gradle +++ b/dd-java-agent/instrumentation/vertx-web-4.0/build.gradle @@ -43,13 +43,13 @@ dependencies { testImplementation project(':dd-java-agent:instrumentation:netty-4.1') testImplementation project(':dd-java-agent:instrumentation:trace-annotation') - testImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + testImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:iast-instrumenter') testImplementation group: 'io.vertx', name: 'vertx-web', version: '4.0.0' testImplementation group: 'io.vertx', name: 'vertx-web-client', version: '4.0.0' - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:jackson-core') testRuntimeOnly project(':dd-java-agent:instrumentation:netty-buffer-4') diff --git a/dd-java-agent/instrumentation/vertx-web-4.0/src/latestDepTest/groovy/core/BufferInstrumentationTest.groovy b/dd-java-agent/instrumentation/vertx-web-4.0/src/latestDepTest/groovy/core/BufferInstrumentationTest.groovy index 9d7992d9e37..947e56d666b 100644 --- a/dd-java-agent/instrumentation/vertx-web-4.0/src/latestDepTest/groovy/core/BufferInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/vertx-web-4.0/src/latestDepTest/groovy/core/BufferInstrumentationTest.groovy @@ -1,6 +1,6 @@ package core -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes import datadog.trace.api.iast.Taintable @@ -10,7 +10,7 @@ import io.vertx.core.buffer.Buffer import io.vertx.core.buffer.impl.BufferImpl @CompileDynamic -class BufferInstrumentationTest extends AgentTestRunner { +class BufferInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/vertx-web-4.0/src/latestDepTest/groovy/core/MultiMapInstrumentationTest.groovy b/dd-java-agent/instrumentation/vertx-web-4.0/src/latestDepTest/groovy/core/MultiMapInstrumentationTest.groovy index 69223b107a1..24be6d4c919 100644 --- a/dd-java-agent/instrumentation/vertx-web-4.0/src/latestDepTest/groovy/core/MultiMapInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/vertx-web-4.0/src/latestDepTest/groovy/core/MultiMapInstrumentationTest.groovy @@ -1,6 +1,6 @@ package core -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -20,7 +20,7 @@ import spock.lang.IgnoreIf import static datadog.trace.api.iast.SourceTypes.namedSource @CompileDynamic -class MultiMapInstrumentationTest extends AgentTestRunner { +class MultiMapInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/vertx-web-4.0/src/test/groovy/core/BufferInstrumentationTest.groovy b/dd-java-agent/instrumentation/vertx-web-4.0/src/test/groovy/core/BufferInstrumentationTest.groovy index 9d7992d9e37..947e56d666b 100644 --- a/dd-java-agent/instrumentation/vertx-web-4.0/src/test/groovy/core/BufferInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/vertx-web-4.0/src/test/groovy/core/BufferInstrumentationTest.groovy @@ -1,6 +1,6 @@ package core -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes import datadog.trace.api.iast.Taintable @@ -10,7 +10,7 @@ import io.vertx.core.buffer.Buffer import io.vertx.core.buffer.impl.BufferImpl @CompileDynamic -class BufferInstrumentationTest extends AgentTestRunner { +class BufferInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/vertx-web-4.0/src/test/groovy/core/MultiMapInstrumentationTest.groovy b/dd-java-agent/instrumentation/vertx-web-4.0/src/test/groovy/core/MultiMapInstrumentationTest.groovy index 69223b107a1..24be6d4c919 100644 --- a/dd-java-agent/instrumentation/vertx-web-4.0/src/test/groovy/core/MultiMapInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/vertx-web-4.0/src/test/groovy/core/MultiMapInstrumentationTest.groovy @@ -1,6 +1,6 @@ package core -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -20,7 +20,7 @@ import spock.lang.IgnoreIf import static datadog.trace.api.iast.SourceTypes.namedSource @CompileDynamic -class MultiMapInstrumentationTest extends AgentTestRunner { +class MultiMapInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/vertx-web-5.0/build.gradle b/dd-java-agent/instrumentation/vertx-web-5.0/build.gradle index c11c4b7ab13..1df21bad4af 100644 --- a/dd-java-agent/instrumentation/vertx-web-5.0/build.gradle +++ b/dd-java-agent/instrumentation/vertx-web-5.0/build.gradle @@ -44,13 +44,13 @@ dependencies { testImplementation project(':dd-java-agent:instrumentation:vertx-web-4.0') testImplementation project(':dd-java-agent:instrumentation:trace-annotation') - testImplementation(testFixtures(project(':dd-java-agent:agent-iast'))) + testImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:iast-instrumenter') testImplementation group: 'io.vertx', name: 'vertx-web', version: vertxVersion testImplementation group: 'io.vertx', name: 'vertx-web-client', version: vertxVersion - testImplementation testFixtures(project(':dd-java-agent:appsec')) + testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') testRuntimeOnly project(':dd-java-agent:instrumentation:jackson-core') testRuntimeOnly project(':dd-java-agent:instrumentation:netty-buffer-4') diff --git a/dd-java-agent/instrumentation/vertx-web-5.0/src/test/groovy/core/BufferInstrumentationTest.groovy b/dd-java-agent/instrumentation/vertx-web-5.0/src/test/groovy/core/BufferInstrumentationTest.groovy index 9d7992d9e37..947e56d666b 100644 --- a/dd-java-agent/instrumentation/vertx-web-5.0/src/test/groovy/core/BufferInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/vertx-web-5.0/src/test/groovy/core/BufferInstrumentationTest.groovy @@ -1,6 +1,6 @@ package core -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes import datadog.trace.api.iast.Taintable @@ -10,7 +10,7 @@ import io.vertx.core.buffer.Buffer import io.vertx.core.buffer.impl.BufferImpl @CompileDynamic -class BufferInstrumentationTest extends AgentTestRunner { +class BufferInstrumentationTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/vertx-web-5.0/src/test/groovy/core/MultiMapInstrumentationTest.groovy b/dd-java-agent/instrumentation/vertx-web-5.0/src/test/groovy/core/MultiMapInstrumentationTest.groovy index 18fdf33a197..c5d036972a1 100644 --- a/dd-java-agent/instrumentation/vertx-web-5.0/src/test/groovy/core/MultiMapInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/vertx-web-5.0/src/test/groovy/core/MultiMapInstrumentationTest.groovy @@ -1,6 +1,6 @@ package core -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.iast.IastContext import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.SourceTypes @@ -20,7 +20,7 @@ import spock.lang.IgnoreIf import static datadog.trace.api.iast.SourceTypes.namedSource @CompileDynamic -class MultiMapInstrumentationTest extends AgentTestRunner { +class MultiMapInstrumentationTest extends InstrumentationSpecification { private Object iastCtx diff --git a/dd-java-agent/instrumentation/weaver/build.gradle b/dd-java-agent/instrumentation/weaver/build.gradle index 7ce9ef1075a..b9edbb0a24e 100644 --- a/dd-java-agent/instrumentation/weaver/build.gradle +++ b/dd-java-agent/instrumentation/weaver/build.gradle @@ -22,7 +22,7 @@ addTestSuiteForDir('weaver084Test', 'test') dependencies { compileOnly group: 'org.typelevel', name: 'weaver-cats_3', version: '0.9.0' - testImplementation testFixtures(project(':dd-java-agent:agent-ci-visibility')) + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') testImplementation group: 'org.scala-lang', name: 'scala-library', version: '2.12.20' testImplementation group: 'org.typelevel', name: 'weaver-cats_3', version: '0.9.0' diff --git a/dd-java-agent/instrumentation/websocket/jakarta-websocket-2.0/src/test/groovy/WebsocketTest.groovy b/dd-java-agent/instrumentation/websocket/jakarta-websocket-2.0/src/test/groovy/WebsocketTest.groovy index 17320b0948f..20fe604579d 100644 --- a/dd-java-agent/instrumentation/websocket/jakarta-websocket-2.0/src/test/groovy/WebsocketTest.groovy +++ b/dd-java-agent/instrumentation/websocket/jakarta-websocket-2.0/src/test/groovy/WebsocketTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDTags import datadog.trace.bootstrap.instrumentation.api.AgentSpan import datadog.trace.bootstrap.instrumentation.api.InstrumentationTags @@ -29,7 +29,7 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_WEBSOCKE import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_WEBSOCKET_TAG_SESSION_ID import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan -class WebsocketTest extends AgentTestRunner { +class WebsocketTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/websocket/javax-websocket-1.0/src/test/groovy/WebsocketTest.groovy b/dd-java-agent/instrumentation/websocket/javax-websocket-1.0/src/test/groovy/WebsocketTest.groovy index 185778b1b88..4f3a06bcc08 100644 --- a/dd-java-agent/instrumentation/websocket/javax-websocket-1.0/src/test/groovy/WebsocketTest.groovy +++ b/dd-java-agent/instrumentation/websocket/javax-websocket-1.0/src/test/groovy/WebsocketTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.api.DDTags import datadog.trace.api.TagMap import datadog.trace.api.sampling.PrioritySampling @@ -32,7 +32,7 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_WEBSOCKE import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_WEBSOCKET_TAG_SESSION_ID import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan -class WebsocketTest extends AgentTestRunner { +class WebsocketTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-10/src/latestDepTest/groovy/WebsocketTest.groovy b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-10/src/latestDepTest/groovy/WebsocketTest.groovy index b3155ddacdf..03aa001ba7f 100644 --- a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-10/src/latestDepTest/groovy/WebsocketTest.groovy +++ b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-10/src/latestDepTest/groovy/WebsocketTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan import org.eclipse.jetty.util.Callback import org.eclipse.jetty.websocket.core.CloseStatus @@ -21,7 +21,7 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_WEBSOCKE import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan import static datadog.trace.bootstrap.instrumentation.api.Tags.HTTP_URL -class WebsocketTest extends AgentTestRunner { +class WebsocketTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-10/src/test/groovy/WebsocketTest.groovy b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-10/src/test/groovy/WebsocketTest.groovy index 32e1403b0c3..f9b33dd92a2 100644 --- a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-10/src/test/groovy/WebsocketTest.groovy +++ b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-10/src/test/groovy/WebsocketTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan import org.eclipse.jetty.util.Callback import org.eclipse.jetty.websocket.core.CloseStatus @@ -20,7 +20,7 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_WEBSOCKE import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan import static datadog.trace.bootstrap.instrumentation.api.Tags.HTTP_URL -class WebsocketTest extends AgentTestRunner { +class WebsocketTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-11/src/latestDepTest/groovy/WebsocketTest.groovy b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-11/src/latestDepTest/groovy/WebsocketTest.groovy index bdef5203b49..13f45404d37 100644 --- a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-11/src/latestDepTest/groovy/WebsocketTest.groovy +++ b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-11/src/latestDepTest/groovy/WebsocketTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan import org.eclipse.jetty.util.Callback import org.eclipse.jetty.websocket.core.CloseStatus @@ -21,7 +21,7 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_WEBSOCKE import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan import static datadog.trace.bootstrap.instrumentation.api.Tags.HTTP_URL -class WebsocketTest extends AgentTestRunner { +class WebsocketTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-11/src/test/groovy/WebsocketTest.groovy b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-11/src/test/groovy/WebsocketTest.groovy index 6677e1fde83..cef38b5f0c6 100644 --- a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-11/src/test/groovy/WebsocketTest.groovy +++ b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-11/src/test/groovy/WebsocketTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan import org.eclipse.jetty.util.Callback import org.eclipse.jetty.websocket.core.CloseStatus @@ -20,7 +20,7 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_WEBSOCKE import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan import static datadog.trace.bootstrap.instrumentation.api.Tags.HTTP_URL -class WebsocketTest extends AgentTestRunner { +class WebsocketTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-12/src/test/groovy/EE10WebsocketTest.groovy b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-12/src/test/groovy/EE10WebsocketTest.groovy index 984e3af421a..9779097c694 100644 --- a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-12/src/test/groovy/EE10WebsocketTest.groovy +++ b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-12/src/test/groovy/EE10WebsocketTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan import org.eclipse.jetty.ee10.websocket.jakarta.common.UpgradeRequest import org.eclipse.jetty.ee10.websocket.jakarta.server.JakartaWebSocketServerContainer @@ -21,7 +21,7 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_WEBSOCKE import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan import static datadog.trace.bootstrap.instrumentation.api.Tags.HTTP_URL -class EE10WebsocketTest extends AgentTestRunner { +class EE10WebsocketTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-12/src/test/groovy/EE8WebsocketTest.groovy b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-12/src/test/groovy/EE8WebsocketTest.groovy index 1cfa2eeab30..2ed7aa20b24 100644 --- a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-12/src/test/groovy/EE8WebsocketTest.groovy +++ b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-12/src/test/groovy/EE8WebsocketTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan import org.eclipse.jetty.ee8.websocket.javax.common.UpgradeRequest import org.eclipse.jetty.ee8.websocket.javax.server.JavaxWebSocketServerContainer @@ -21,7 +21,7 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_WEBSOCKE import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan import static datadog.trace.bootstrap.instrumentation.api.Tags.HTTP_URL -class EE8WebsocketTest extends AgentTestRunner { +class EE8WebsocketTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-12/src/test/groovy/EE9WebsocketTest.groovy b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-12/src/test/groovy/EE9WebsocketTest.groovy index f3b42925309..334009428f6 100644 --- a/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-12/src/test/groovy/EE9WebsocketTest.groovy +++ b/dd-java-agent/instrumentation/websocket/jetty-websocket/jetty-websocket-12/src/test/groovy/EE9WebsocketTest.groovy @@ -1,4 +1,4 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification import datadog.trace.core.DDSpan import org.eclipse.jetty.ee9.websocket.jakarta.common.UpgradeRequest import org.eclipse.jetty.ee9.websocket.jakarta.server.JakartaWebSocketServerContainer @@ -21,7 +21,7 @@ import static datadog.trace.api.config.TraceInstrumentationConfig.TRACE_WEBSOCKE import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan import static datadog.trace.bootstrap.instrumentation.api.Tags.HTTP_URL -class EE9WebsocketTest extends AgentTestRunner { +class EE9WebsocketTest extends InstrumentationSpecification { @Override protected void configurePreAgent() { diff --git a/dd-java-agent/instrumentation/zio/zio-2.0/src/test/groovy/ZioRuntimeInstrumentationTest.groovy b/dd-java-agent/instrumentation/zio/zio-2.0/src/test/groovy/ZioRuntimeInstrumentationTest.groovy index bfb53e76d4e..dea84e50231 100644 --- a/dd-java-agent/instrumentation/zio/zio-2.0/src/test/groovy/ZioRuntimeInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/zio/zio-2.0/src/test/groovy/ZioRuntimeInstrumentationTest.groovy @@ -1,6 +1,6 @@ -import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.agent.test.InstrumentationSpecification -class ZioRuntimeInstrumentationTest extends AgentTestRunner { +class ZioRuntimeInstrumentationTest extends InstrumentationSpecification { @Override void configurePreAgent() { diff --git a/dd-java-agent/testing/build.gradle b/dd-java-agent/testing/build.gradle index df2430f9433..51e299ac65e 100644 --- a/dd-java-agent/testing/build.gradle +++ b/dd-java-agent/testing/build.gradle @@ -15,24 +15,12 @@ excludedClassesCoverage += [ 'datadog.trace.agent.test.asserts.*Assert', 'datadog.trace.agent.test.asserts.*Assert.*', 'datadog.trace.agent.test.base.*', - 'datadog.trace.agent.test.log.*', - // Util class used in TestFrameworkTest - 'datadog.trace.agent.test.civisibility.coverage.NoopCoverageProbeStore', - 'datadog.trace.agent.test.civisibility.coverage.NoopCoverageProbeStore.NoopCoverageProbeStoreFactory', - // Groovy generates unreachable lines see: - // https://issues.apache.org/jira/browse/GROOVY-9610 - 'datadog.trace.agent.test.AgentTestRunner', - 'datadog.trace.agent.test.AbortTransformationException', - 'datadog.trace.agent.test.naming.VersionedNamingTestBase', 'datadog.trace.agent.test.server.http.HttpProxy.AsyncPipe', 'datadog.trace.agent.test.server.http.TestHttpServer.*', 'datadog.trace.agent.test.utils.*', // Avoid applying jacoco instrumentation to classes instrumented by tested agent 'context.FieldInjectionTestInstrumentation**', 'context.ExcludeFilterTestInstrumentation**', - 'datadog.trace.agent.test.AgentTestRunner**', - 'datadog.trace.agent.test.checkpoints.**', - 'datadog.trace.agent.test.datastreams.**', // profiling 'datadog.trace.agent.test.TestProfilingContextIntegration', 'datadog.trace.agent.test.TestProfilingContextIntegration.TestQueueTiming' @@ -63,19 +51,6 @@ dependencies { implementation 'org.junit.platform:junit-platform-runner:1.9.0' implementation project(':dd-java-agent:appsec') - - implementation project(':dd-java-agent:agent-debugger') - - testImplementation project(':utils:test-utils') - testImplementation project(':dd-java-agent:instrumentation:trace-annotation') - - testImplementation group: 'cglib', name: 'cglib', version: '3.2.5' - // test instrumenting java 1.1 bytecode - testImplementation group: 'net.sf.jt400', name: 'jt400', version: '6.1' - - // We have autoservices defined in test subtree, looks like we need this to be able to properly rebuild this - testAnnotationProcessor libs.autoservice.processor - testCompileOnly libs.autoservice.annotation } shadowJar { @@ -88,16 +63,5 @@ shadowJar { } tasks.withType(Test).configureEach { - // SpockRunner that we use to run agent tests cannot be properly ported to JUnit 5, - // since the framework does not provide the hooks / extension points - // that can be used to shadow the tested class. - - // In order to mitigate this, SpockRunner extends JUnitPlatform, - // which is a JUnit 4 runner that allows executing JUnit 5 tests in a JUnit 4 environment - // (i.e. running them as JUnit 4 tests). - - // So even though Spock 2 tests run on top of JUnit 5, - // we execute them in "compatibility mode" so that SpockRunner could shadow the test class - // See https://junit.org/junit5/docs/current/user-guide/#running-tests-junit-platform-runner for more details. - useJUnit() + useJUnitPlatform() } diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/SpockRunner.java b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/SpockRunner.java deleted file mode 100644 index 80160b59e9f..00000000000 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/SpockRunner.java +++ /dev/null @@ -1,285 +0,0 @@ -package datadog.trace.agent.test; - -import com.google.common.reflect.ClassPath; -import datadog.trace.agent.test.utils.ClasspathUtils; -import datadog.trace.bootstrap.BootstrapProxy; -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.TreeSet; -import java.util.jar.JarFile; -import net.bytebuddy.agent.ByteBuddyAgent; -import net.bytebuddy.dynamic.ClassFileLocator; -import org.junit.platform.runner.JUnitPlatform; -import org.junit.runner.notification.Failure; -import org.junit.runner.notification.RunListener; -import org.junit.runner.notification.RunNotifier; -import org.spockframework.mock.IMockInvocation; -import org.spockframework.mock.TooManyInvocationsError; - -/** - * Runs a spock test in an agent-friendly way. - * - *

    - *
  • Adds agent bootstrap classes to bootstrap classpath. - *
- */ -public class SpockRunner extends JUnitPlatform { - /** - * An exact copy of {@link datadog.trace.bootstrap.Constants#BOOTSTRAP_PACKAGE_PREFIXES}. - * - *

This list is needed to initialize the bootstrap classpath because Utils' static initializer - * references bootstrap classes (e.g. DatadogClassLoader). - */ - public static final String[] BOOTSTRAP_PACKAGE_PREFIXES_COPY = { - "datadog.slf4j", - "datadog.context", - "datadog.environment", - "datadog.json", - "datadog.yaml", - "datadog.appsec.api", - "datadog.trace.api", - "datadog.trace.bootstrap", - "datadog.trace.context", - "datadog.trace.instrumentation.api", - "datadog.trace.logging", - "datadog.trace.util", - }; - - private static final String[] TEST_EXCLUDED_BOOTSTRAP_PACKAGE_PREFIXES = { - "ch.qos.logback.classic.servlet", // this draws javax.servlet deps that are not needed - }; - - private static final String[] TEST_BOOTSTRAP_PREFIXES; - - static { - ByteBuddyAgent.install(); - final String[] testBS = { - "org.slf4j", "ch.qos.logback", - }; - - TEST_BOOTSTRAP_PREFIXES = - Arrays.copyOf( - BOOTSTRAP_PACKAGE_PREFIXES_COPY, - BOOTSTRAP_PACKAGE_PREFIXES_COPY.length + testBS.length); - for (int i = 0; i < testBS.length; ++i) { - TEST_BOOTSTRAP_PREFIXES[i + BOOTSTRAP_PACKAGE_PREFIXES_COPY.length] = testBS[i]; - } - - setupBootstrapClasspath(); - } - - private final InstrumentationClassLoader customLoader; - - public SpockRunner(final Class clazz) - throws NoSuchFieldException, SecurityException, IllegalArgumentException, - IllegalAccessException { - super(shadowTestClass(clazz)); - assertNoBootstrapClassesInTestClass(clazz); - // access the classloader created in shadowTestClass above - final Field clazzField = JUnitPlatform.class.getDeclaredField("testClass"); - try { - clazzField.setAccessible(true); - customLoader = - (InstrumentationClassLoader) ((Class) clazzField.get(this)).getClassLoader(); - } finally { - clazzField.setAccessible(false); - } - } - - private static void assertNoBootstrapClassesInTestClass(final Class testClass) { - for (final Field field : testClass.getDeclaredFields()) { - assertNotBootstrapClass(testClass, field.getType()); - } - - for (final Method method : testClass.getDeclaredMethods()) { - assertNotBootstrapClass(testClass, method.getReturnType()); - for (final Class paramType : method.getParameterTypes()) { - assertNotBootstrapClass(testClass, paramType); - } - } - } - - private static void assertNotBootstrapClass(final Class testClass, final Class clazz) { - if ((!clazz.isPrimitive()) && isBootstrapClass(clazz.getName())) { - throw new IllegalStateException( - testClass.getName() - + ": Bootstrap classes are not allowed in test class field or method signatures. Offending class: " - + clazz.getName()); - } - } - - private static boolean isBootstrapClass(final String className) { - for (int i = 0; i < TEST_BOOTSTRAP_PREFIXES.length; ++i) { - if (className.startsWith(TEST_BOOTSTRAP_PREFIXES[i])) { - return Arrays.stream(TEST_EXCLUDED_BOOTSTRAP_PACKAGE_PREFIXES) - .noneMatch(className::startsWith); - } - } - return false; - } - - // Shadow the test class with bytes loaded by InstrumentationClassLoader - private static Class shadowTestClass(final Class clazz) { - try { - final InstrumentationClassLoader customLoader = - new InstrumentationClassLoader( - datadog.trace.agent.test.SpockRunner.class.getClassLoader(), clazz.getName()); - return customLoader.shadow(clazz); - } catch (final Exception e) { - throw new IllegalStateException(e); - } - } - - @Override - public void run(final RunNotifier notifier) { - final ClassLoader contextLoader = Thread.currentThread().getContextClassLoader(); - final RunListener listener = new TooManyInvocationsErrorListener(); - try { - Thread.currentThread().setContextClassLoader(customLoader); - notifier.addFirstListener(listener); - super.run(notifier); - } finally { - notifier.removeListener(listener); - Thread.currentThread().setContextClassLoader(contextLoader); - } - } - - private static void setupBootstrapClasspath() { - // Ensure there weren't any bootstrap classes loaded prematurely. - Set prematureBootstrapClasses = new TreeSet<>(); - for (Class clazz : ByteBuddyAgent.getInstrumentation().getAllLoadedClasses()) { - if (isBootstrapClass(clazz.getName()) - && clazz.getClassLoader() != null - && !clazz.getName().equals("datadog.trace.api.DisableTestTrace") - && !clazz.getName().startsWith("org.slf4j")) { - prematureBootstrapClasses.add(clazz.getName()); - } - } - if (!prematureBootstrapClasses.isEmpty()) { - throw new AssertionError( - prematureBootstrapClasses.size() - + " classes were loaded before bootstrap classpath was initialized: " - + prematureBootstrapClasses); - } - try { - final File bootstrapJar = createBootstrapJar(); - ByteBuddyAgent.getInstrumentation() - .appendToBootstrapClassLoaderSearch(new JarFile(bootstrapJar)); - // Utils cannot be referenced before this line, as its static initializers load bootstrap - // classes (for example, the bootstrap proxy). - BootstrapProxy.addBootstrapResource(bootstrapJar.toURI().toURL()); - } catch (final IOException e) { - throw new RuntimeException(e); - } - } - - private static File createBootstrapJar() throws IOException { - final Set bootstrapClasses = new HashSet<>(); - for (final ClassPath.ClassInfo info : ClasspathUtils.getTestClasspath().getAllClasses()) { - // if info starts with bootstrap prefix: add to bootstrap jar - if (isBootstrapClass(info.getName())) { - bootstrapClasses.add(info.getResourceName()); - } - } - return new File( - ClasspathUtils.createJarWithClasses( - AgentTestRunner.class.getClassLoader(), bootstrapClasses.toArray(new String[0])) - .getFile()); - } - - /** Run test classes in a classloader which loads test classes before delegating. */ - private static class InstrumentationClassLoader extends java.lang.ClassLoader { - final ClassLoader parent; - final String shadowPrefix; - - public InstrumentationClassLoader(final ClassLoader parent, final String shadowPrefix) { - super(parent); - this.parent = parent; - this.shadowPrefix = shadowPrefix; - } - - /** Forcefully inject the bytes of clazz into this classloader. */ - public Class shadow(final Class clazz) throws IOException { - final Class loaded = findLoadedClass(clazz.getName()); - if (loaded != null && loaded.getClassLoader() == this) { - return loaded; - } - final ClassFileLocator locator = ClassFileLocator.ForClassLoader.of(clazz.getClassLoader()); - final byte[] classBytes = locator.locate(clazz.getName()).resolve(); - - return defineClass(clazz.getName(), classBytes, 0, classBytes.length); - } - - @Override - protected Class loadClass(final String name, final boolean resolve) - throws ClassNotFoundException { - synchronized (super.getClassLoadingLock(name)) { - final Class c = findLoadedClass(name); - if (c != null) { - return c; - } - if (name.startsWith(shadowPrefix)) { - try { - return shadow(super.loadClass(name, resolve)); - } catch (final Exception e) { - } - } - - return parent.loadClass(name); - } - } - } - - /** - * This class tries to fix {@link TooManyInvocationsError} exceptions when the assertion error is - * caught by a mock triggering a stack overflow while composing the failure message. - */ - @SuppressWarnings("ResultOfMethodCallIgnored") - @RunListener.ThreadSafe - private static class TooManyInvocationsErrorListener extends RunListener { - - @Override - public void testFailure(final Failure failure) throws Exception { - if (failure.getException() instanceof TooManyInvocationsError) { - final TooManyInvocationsError assertion = (TooManyInvocationsError) failure.getException(); - try { - // try to trigger an error (e.g. stack overflow) - assertion.getMessage(); - } catch (final Throwable e) { - fixTooManyInvocationsError(assertion); - } - } - } - - private void fixTooManyInvocationsError(final TooManyInvocationsError error) { - final List accepted = error.getAcceptedInvocations(); - for (final IMockInvocation invocation : accepted) { - try { - invocation.toString(); - } catch (final Throwable t) { - final List arguments = invocation.getArguments(); - for (int i = 0; i < arguments.size(); i++) { - final Object arg = arguments.get(i); - if (arg instanceof AssertionError) { - final AssertionError updatedAssertion = - new AssertionError( - "'" - + arg.getClass().getName() - + "' hidden due to '" - + t.getClass().getName() - + "'", - t); - invocation.getArguments().set(i, updatedAssertion); - } - } - } - } - } - } -} diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java index 3d0887d0e93..30a9b0f2727 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/utils/ClasspathUtils.java @@ -1,30 +1,20 @@ package datadog.trace.agent.test.utils; -import static com.google.common.base.StandardSystemProperty.JAVA_CLASS_PATH; -import static com.google.common.base.StandardSystemProperty.PATH_SEPARATOR; import static datadog.trace.util.Strings.getResourceName; -import com.google.common.base.Splitter; -import com.google.common.collect.ImmutableList; -import com.google.common.reflect.ClassPath; -import datadog.trace.agent.test.AgentTestRunner; -import de.thetaphi.forbiddenapis.SuppressForbidden; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; -import java.net.MalformedURLException; import java.net.URL; -import java.net.URLClassLoader; import java.util.UUID; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; import java.util.jar.Manifest; public class ClasspathUtils { - private static final ClassPath testClasspath = computeTestClasspath(); public static byte[] convertToByteArray(final InputStream resource) throws IOException { final ByteArrayOutputStream buffer = new ByteArrayOutputStream(); @@ -119,46 +109,6 @@ private static void addToJar( jarOutputStream.closeEntry(); } - public static ClassPath getTestClasspath() { - return testClasspath; - } - - private static ClassPath computeTestClasspath() { - ClassLoader testClassLoader = AgentTestRunner.class.getClassLoader(); - if (!(testClassLoader instanceof URLClassLoader)) { - // java9's system loader does not extend URLClassLoader - // which breaks Guava ClassPath lookup - testClassLoader = buildJavaClassPathClassLoader(); - } - try { - return ClassPath.from(testClassLoader); - } catch (final IOException e) { - throw new RuntimeException(e); - } - } - - /** - * Parse JVM classpath and return ClassLoader containing all classpath entries. Inspired by Guava. - */ - @SuppressForbidden - private static ClassLoader buildJavaClassPathClassLoader() { - final ImmutableList.Builder urls = ImmutableList.builder(); - for (final String entry : Splitter.on(PATH_SEPARATOR.value()).split(JAVA_CLASS_PATH.value())) { - try { - try { - urls.add(new File(entry).toURI().toURL()); - } catch (final SecurityException e) { // File.toURI checks to see if the file is a directory - urls.add(new URL("file", null, new File(entry).getAbsolutePath())); - } - } catch (final MalformedURLException e) { - System.err.println( - String.format( - "Error injecting bootstrap jar: Malformed classpath entry: %s. %s", entry, e)); - } - } - return new URLClassLoader(urls.build().toArray(new URL[0]), null); - } - // Moved this to a java class because groovy was adding a hard ref to classLoader public static boolean isClassLoaded(final String className, final ClassLoader classLoader) { try { diff --git a/dd-java-agent/testing/src/test/groovy/TooManyInvocationsErrorListenerTest.groovy b/dd-java-agent/testing/src/test/groovy/TooManyInvocationsErrorListenerTest.groovy deleted file mode 100644 index 265a63e8fc0..00000000000 --- a/dd-java-agent/testing/src/test/groovy/TooManyInvocationsErrorListenerTest.groovy +++ /dev/null @@ -1,38 +0,0 @@ -import datadog.trace.agent.test.AgentTestRunner -import datadog.trace.agent.test.SpockRunner -import org.junit.runner.Description -import org.junit.runner.notification.Failure -import org.spockframework.mock.IMockInteraction -import org.spockframework.mock.IMockMethod -import org.spockframework.mock.IMockObject -import org.spockframework.mock.IResponseGenerator -import org.spockframework.mock.TooManyInvocationsError -import org.spockframework.mock.runtime.MockInvocation - -class TooManyInvocationsErrorListenerTest extends AgentTestRunner { - - @SuppressWarnings('GroovyAccessibility') - void 'test that listener modifies failure'() { - setup: - final error = new TooManyInvocationsError(Stub(IMockInteraction), []) - error.acceptedInvocations.add(new MockInvocation(Stub(IMockObject), - Stub(IMockMethod), - [error], - Stub(IResponseGenerator))) - final failure = new Failure(new Description(TooManyInvocationsErrorListenerTest, 'test'), error) - - when: - failure.getMessage() - - then: - thrown(StackOverflowError) - - when: - final listener = new SpockRunner.TooManyInvocationsErrorListener() - listener.testFailure(failure) - failure.getMessage() - - then: - noExceptionThrown() - } -} diff --git a/dd-smoke-tests/backend-mock/build.gradle b/dd-smoke-tests/backend-mock/build.gradle index 76f6e1754a6..94fe5563ee6 100644 --- a/dd-smoke-tests/backend-mock/build.gradle +++ b/dd-smoke-tests/backend-mock/build.gradle @@ -2,6 +2,6 @@ apply from: "$rootDir/gradle/java.gradle" description = 'Mock Datadog backend used by smoke tests.' dependencies { - api project(':dd-smoke-tests') - api testFixtures(project(':dd-java-agent:agent-ci-visibility')) + implementation project(':dd-smoke-tests') + api project(':dd-java-agent:agent-ci-visibility:civisibility-test-fixtures') } diff --git a/dd-smoke-tests/build.gradle b/dd-smoke-tests/build.gradle index f17c5710548..967c72b4391 100644 --- a/dd-smoke-tests/build.gradle +++ b/dd-smoke-tests/build.gradle @@ -6,7 +6,6 @@ dependencies { api libs.bundles.spock api libs.okhttp api project(':dd-java-agent:testing') - api project(':utils:test-utils') api project(':utils:test-agent-utils:decoder') } diff --git a/dd-smoke-tests/gradle/build.gradle b/dd-smoke-tests/gradle/build.gradle index 29bd5c8b847..611f44adaab 100644 --- a/dd-smoke-tests/gradle/build.gradle +++ b/dd-smoke-tests/gradle/build.gradle @@ -11,6 +11,8 @@ description = 'Gradle Daemon Instrumentation Smoke Tests.' dependencies { testImplementation gradleTestKit() testImplementation project(':dd-smoke-tests:backend-mock') + testImplementation project(':internal-api') + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-test-fixtures') } test { diff --git a/dd-smoke-tests/maven/build.gradle b/dd-smoke-tests/maven/build.gradle index e201c265832..68b5ebeccc4 100644 --- a/dd-smoke-tests/maven/build.gradle +++ b/dd-smoke-tests/maven/build.gradle @@ -12,6 +12,8 @@ dependencies { implementation group: 'org.apache.maven.wrapper', name: 'maven-wrapper', version: '3.2.0' testImplementation project(':dd-smoke-tests:backend-mock') + testImplementation project(':internal-api') + testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-test-fixtures') } jar { diff --git a/gradle/configure_tests.gradle b/gradle/configure_tests.gradle index 8372369fa7d..076acd7e8cd 100644 --- a/gradle/configure_tests.gradle +++ b/gradle/configure_tests.gradle @@ -61,8 +61,9 @@ tasks.withType(Test).configureEach { exclude "**/TestRepeated*" exclude "**/TestTemplate*" exclude "**/TestDisableTestTrace*" - exclude "**/TestAssumption*" - exclude "**/TestParameterized*" + exclude "**/TestAssumption*", "**/TestSuiteSetUpAssumption*" + exclude "**/TestUnskippable*" + exclude "**/TestWithSetup*" } // Split up tests that want to run forked in their own separate JVM for generated tasks diff --git a/settings.gradle.kts b/settings.gradle.kts index e6f5a51b6d5..d20c06c5bd0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -112,11 +112,14 @@ include( include( ":dd-java-agent:appsec", + ":dd-java-agent:appsec:appsec-test-fixtures", ) // ci-visibility include( ":dd-java-agent:agent-ci-visibility", + ":dd-java-agent:agent-ci-visibility:civisibility-test-fixtures", + ":dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures", ) // llm-observability @@ -127,6 +130,7 @@ include( // iast include( ":dd-java-agent:agent-iast", + ":dd-java-agent:agent-iast:iast-test-fixtures", ) include( @@ -243,6 +247,11 @@ include( ":dd-java-agent:instrumentation-annotation-processor", ) +// utilities and fixtures for instrumentation tests +include( + ":dd-java-agent:instrumentation-testing", +) + // instrumentation: include( ":dd-java-agent:instrumentation:aerospike-4",