From 21940597db7a0ae4cbc8375fe6b926b677932ba5 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Fri, 24 Oct 2025 14:52:37 -0400 Subject: [PATCH 01/13] Create configure-tests convention plugin --- .../kotlin/datadog.configure-tests.gradle.kts | 137 ++++++++++ gradle/configure_tests.gradle | 238 +++++++++--------- gradle/java_no_deps.gradle | 2 +- 3 files changed, 257 insertions(+), 120 deletions(-) create mode 100644 buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts diff --git a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts new file mode 100644 index 00000000000..36aca52c358 --- /dev/null +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -0,0 +1,137 @@ +import org.gradle.api.tasks.testing.Test +import org.gradle.api.tasks.testing.junitplatform.JUnitPlatformOptions +import org.gradle.api.services.BuildService +import org.gradle.api.services.BuildServiceParameters +import java.time.Duration +import java.time.temporal.ChronoUnit + +fun isTestingInstrumentation(project: Project): Boolean { + return listOf( + "junit-4.10", + "cucumber", + "cucumber-junit-4", + "junit-4.13", + "munit-junit-4", + "junit-5.3", + "junit-5.8", + "cucumber-junit-5", + "spock-junit-5", + "testng-6", + "testng-7", + "karate", + "scalatest", + "selenium", + "weaver" + ).contains(project.name) +} + +// Need concrete implementation of BuildService in Kotlin +abstract class ForkedTestLimit : BuildService + +val forkedTestLimit = gradle.sharedServices.registerIfAbsent("forkedTestLimit", ForkedTestLimit::class.java) { + maxParallelUsages.set(3) +} + +// Go through the Test tasks and configure them +tasks.withType(Test::class.java).configureEach { + // Disable all tests if skipTests property was specified + onlyIf { !project.rootProject.hasProperty("skipTests") } + + // Enable force rerun of tests with -Prerun.tests.${project.name} + outputs.upToDateWhen { + !project.rootProject.hasProperty("rerun.tests.${project.name}") + } + + // Avoid executing classes used to test testing frameworks instrumentation + if (isTestingInstrumentation(project)) { + exclude("**/TestSucceed*") + exclude("**/TestFailed*") + exclude("**/TestFailedWithSuccessPercentage*") + exclude("**/TestError*") + exclude("**/TestSkipped*") + exclude("**/TestSkippedClass*") + exclude("**/TestInheritance*", "**/BaseTestInheritance*") + exclude("**/TestFactory*") + exclude("**/TestParameterized*") + exclude("**/TestRepeated*") + exclude("**/TestTemplate*") + exclude("**/TestDisableTestTrace*") + exclude("**/TestAssumption*", "**/TestSuiteSetUpAssumption*") + exclude("**/TestUnskippable*") + exclude("**/TestWithSetup*") + } + + // Split up tests that want to run forked in their own separate JVM for generated tasks + if (name.startsWith("forkedTest") || name.endsWith("ForkedTest")) { + setExcludes(emptyList()) + setIncludes(listOf("**/*ForkedTest*")) + forkEvery = 1 + // Limit the number of concurrent forked tests + usesService(forkedTestLimit) + onlyIf { !project.rootProject.hasProperty("skipForkedTests") } + } else { + exclude("**/*ForkedTest*") + } + + // Set test timeout for 20 minutes. Default job timeout is 1h (configured on CI level). + timeout.set(Duration.of(20, ChronoUnit.MINUTES)) +} + +val allTestsTask = tasks.maybeCreate("allTests") +val allLatestDepTestsTask = tasks.maybeCreate("allLatestDepTests") +val checkTask = tasks.named("check") + +project.afterEvaluate { + tasks.withType(Test::class.java).forEach { + // Add test to appropriate aggregate task + if (it.name.contains("latest", ignoreCase = true)) { + allLatestDepTestsTask.dependsOn(it) + } else if (it.name != "traceAgentTest") { + allTestsTask.dependsOn(it) + } + // Make check depend on this test task + checkTask.configure { + dependsOn(it) + } + } +} + +// Setup flaky tests jobs. Done in afterEvaluate so that it applies to latestDepTest. +project.afterEvaluate { + tasks.withType(Test::class.java).configureEach { + // Flaky tests management for JUnit 5 + if (testFramework is JUnitPlatformOptions) { + val junitPlatform = testFramework as JUnitPlatformOptions + if (project.rootProject.hasProperty("skipFlakyTests")) { + junitPlatform.excludeTags("flaky") + } else if (project.rootProject.hasProperty("runFlakyTests")) { + junitPlatform.includeTags("flaky") + } + } + + // Flaky tests management for Spock + if (project.rootProject.hasProperty("skipFlakyTests")) { + jvmArgs("-Drun.flaky.tests=false") + } else if (project.rootProject.hasProperty("runFlakyTests")) { + jvmArgs("-Drun.flaky.tests=true") + } + } +} + +if (!(project.property("activePartition") as Boolean)) { + project.afterEvaluate { + tasks.withType(Test::class.java).configureEach { + enabled = false + } + } +} + +// tasks.withType(Test).configureEach { +// // https://docs.gradle.com/develocity/flaky-test-detection/ +// // https://docs.gradle.com/develocity/gradle-plugin/current/#test_retry +// develocity.testRetry { +// if (providers.environmentVariable("CI").isPresent()) { +// maxRetries = 3 +// } +// } +// } diff --git a/gradle/configure_tests.gradle b/gradle/configure_tests.gradle index 2afd783cc8e..829c894f016 100644 --- a/gradle/configure_tests.gradle +++ b/gradle/configure_tests.gradle @@ -1,133 +1,133 @@ -import java.time.Duration -import java.time.temporal.ChronoUnit +// import java.time.Duration +// import java.time.temporal.ChronoUnit -def isTestingInstrumentation(Project project) { - return [ - "junit-4.10", - "cucumber", - "cucumber-junit-4", - "junit-4.13", - "munit-junit-4", - "junit-5.3", - "junit-5.8", - "cucumber-junit-5", - "spock-junit-5", - "testng-6", - "testng-7", - "karate", - "scalatest", - "selenium", - "weaver" - ].contains(project.name) -} +// def isTestingInstrumentation(Project project) { +// return [ +// "junit-4.10", +// "cucumber", +// "cucumber-junit-4", +// "junit-4.13", +// "munit-junit-4", +// "junit-5.3", +// "junit-5.8", +// "cucumber-junit-5", +// "spock-junit-5", +// "testng-6", +// "testng-7", +// "karate", +// "scalatest", +// "selenium", +// "weaver" +// ].contains(project.name) +// } -def forkedTestLimit = gradle.sharedServices.registerIfAbsent("forkedTestLimit", BuildService) { - maxParallelUsages = 3 -} +// def forkedTestLimit = gradle.sharedServices.registerIfAbsent("forkedTestLimit", BuildService) { +// maxParallelUsages = 3 +// } -testing { - suites.configureEach { - // Use JUnit 5 to run tests - useJUnitJupiter() - } -} +// testing { +// suites.configureEach { +// // Use JUnit 5 to run tests +// useJUnitJupiter() +// } +// } -// Go through the Test tasks and configure them -tasks.withType(Test).configureEach { - // Disable all tests if skipTests property was specified - onlyIf { !project.rootProject.hasProperty("skipTests") } +// // Go through the Test tasks and configure them +// tasks.withType(Test).configureEach { +// // Disable all tests if skipTests property was specified +// onlyIf { !project.rootProject.hasProperty("skipTests") } - // Enable force rerun of tests with -Prerun.tests.${project.name} - outputs.upToDateWhen { - !project.rootProject.hasProperty("rerun.tests.${project.name}") - } +// // Enable force rerun of tests with -Prerun.tests.${project.name} +// outputs.upToDateWhen { +// !project.rootProject.hasProperty("rerun.tests.${project.name}") +// } - // Avoid executing classes used to test testing frameworks instrumentation - if (isTestingInstrumentation(project)) { - exclude("**/TestSucceed*") - exclude("**/TestFailed*") - exclude("**/TestFailedWithSuccessPercentage*") - exclude("**/TestError*") - exclude("**/TestSkipped*") - exclude("**/TestSkippedClass*") - exclude("**/TestInheritance*", "**/BaseTestInheritance*") - exclude("**/TestFactory*") - exclude("**/TestParameterized*") - exclude("**/TestRepeated*") - exclude("**/TestTemplate*") - exclude("**/TestDisableTestTrace*") - exclude("**/TestAssumption*", "**/TestSuiteSetUpAssumption*") - exclude("**/TestUnskippable*") - exclude("**/TestWithSetup*") - } +// // Avoid executing classes used to test testing frameworks instrumentation +// if (isTestingInstrumentation(project)) { +// exclude("**/TestSucceed*") +// exclude("**/TestFailed*") +// exclude("**/TestFailedWithSuccessPercentage*") +// exclude("**/TestError*") +// exclude("**/TestSkipped*") +// exclude("**/TestSkippedClass*") +// exclude("**/TestInheritance*", "**/BaseTestInheritance*") +// exclude("**/TestFactory*") +// exclude("**/TestParameterized*") +// exclude("**/TestRepeated*") +// exclude("**/TestTemplate*") +// exclude("**/TestDisableTestTrace*") +// exclude("**/TestAssumption*", "**/TestSuiteSetUpAssumption*") +// exclude("**/TestUnskippable*") +// exclude("**/TestWithSetup*") +// } - // Split up tests that want to run forked in their own separate JVM for generated tasks - if (name.startsWith("forkedTest") || name.endsWith("ForkedTest")) { - setExcludes([]) - setIncludes(["**/*ForkedTest*"]) - forkEvery = 1 - // Limit the number of concurrent forked tests - usesService(forkedTestLimit) - onlyIf { !project.rootProject.hasProperty("skipForkedTests") } - } else { - exclude("**/*ForkedTest*") - } +// // Split up tests that want to run forked in their own separate JVM for generated tasks +// if (name.startsWith("forkedTest") || name.endsWith("ForkedTest")) { +// setExcludes([]) +// setIncludes(["**/*ForkedTest*"]) +// forkEvery = 1 +// // Limit the number of concurrent forked tests +// usesService(forkedTestLimit) +// onlyIf { !project.rootProject.hasProperty("skipForkedTests") } +// } else { +// exclude("**/*ForkedTest*") +// } - // Set test timeout for 20 minutes. Default job timeout is 1h (configured on CI level). - timeout = Duration.of(20, ChronoUnit.MINUTES) +// // Set test timeout for 20 minutes. Default job timeout is 1h (configured on CI level). +// timeout = Duration.of(20, ChronoUnit.MINUTES) - check.dependsOn(it) -} +// check.dependsOn(it) +// } -Task allTestsTask = tasks.maybeCreate('allTests') -Task allLatestDepTestsTask = tasks.maybeCreate('allLatestDepTests') -project.afterEvaluate { - tasks.withType(Test).each { - if (it.name.containsIgnoreCase('latest')) { - allLatestDepTestsTask.dependsOn it - } else if (it.name != 'traceAgentTest') { - allTestsTask.dependsOn it - } - } -} +// Task allTestsTask = tasks.maybeCreate('allTests') +// Task allLatestDepTestsTask = tasks.maybeCreate('allLatestDepTests') +// project.afterEvaluate { +// tasks.withType(Test).each { +// if (it.name.containsIgnoreCase('latest')) { +// allLatestDepTestsTask.dependsOn it +// } else if (it.name != 'traceAgentTest') { +// allTestsTask.dependsOn it +// } +// } +// } -// Setup flaky tests jobs. Done in afterEvaluate so that it applies to latestDepTest. -project.afterEvaluate { - tasks.withType(Test).configureEach { - // Flaky tests management for JUnit 5 - testFramework { - if (it instanceof JUnitPlatformOptions) { - if (project.rootProject.hasProperty("skipFlakyTests")) { - excludeTags("flaky") - } else if (project.rootProject.hasProperty("runFlakyTests")) { - includeTags("flaky") - } - } - } +// // Setup flaky tests jobs. Done in afterEvaluate so that it applies to latestDepTest. +// project.afterEvaluate { +// tasks.withType(Test).configureEach { +// // Flaky tests management for JUnit 5 +// testFramework { +// if (it instanceof JUnitPlatformOptions) { +// if (project.rootProject.hasProperty("skipFlakyTests")) { +// excludeTags("flaky") +// } else if (project.rootProject.hasProperty("runFlakyTests")) { +// includeTags("flaky") +// } +// } +// } - // Flaky tests management for Spock - if (project.rootProject.hasProperty("skipFlakyTests")) { - jvmArgs += ["-Drun.flaky.tests=false"] - } else if (project.rootProject.hasProperty("runFlakyTests")) { - jvmArgs += ["-Drun.flaky.tests=true"] - } - } -} +// // Flaky tests management for Spock +// if (project.rootProject.hasProperty("skipFlakyTests")) { +// jvmArgs += ["-Drun.flaky.tests=false"] +// } else if (project.rootProject.hasProperty("runFlakyTests")) { +// jvmArgs += ["-Drun.flaky.tests=true"] +// } +// } +// } -if (!project.property("activePartition")) { - project.afterEvaluate { - tasks.withType(Test).configureEach { - enabled = false - } - } -} +// if (!project.property("activePartition")) { +// project.afterEvaluate { +// tasks.withType(Test).configureEach { +// enabled = false +// } +// } +// } -tasks.withType(Test).configureEach { - // https://docs.gradle.com/develocity/flaky-test-detection/ - // https://docs.gradle.com/develocity/gradle-plugin/current/#test_retry - develocity.testRetry { - if (providers.environmentVariable("CI").isPresent()) { - maxRetries = 3 - } - } -} +// tasks.withType(Test).configureEach { +// // https://docs.gradle.com/develocity/flaky-test-detection/ +// // https://docs.gradle.com/develocity/gradle-plugin/current/#test_retry +// develocity.testRetry { +// if (providers.environmentVariable("CI").isPresent()) { +// maxRetries = 3 +// } +// } +// } diff --git a/gradle/java_no_deps.gradle b/gradle/java_no_deps.gradle index 095bd98cc0a..09341e139ef 100644 --- a/gradle/java_no_deps.gradle +++ b/gradle/java_no_deps.gradle @@ -466,4 +466,4 @@ tasks.register('testJar', Jar) { archiveClassifier = 'test' } -apply from: "$rootDir/gradle/configure_tests.gradle" +apply plugin: 'datadog.configure-tests' From 96f586b5bc31736013836912c94d6d1a1195b2ed Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Fri, 24 Oct 2025 15:02:51 -0400 Subject: [PATCH 02/13] Use lazy providers for property evaluation --- .../kotlin/datadog.configure-tests.gradle.kts | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts index 36aca52c358..69803eed10c 100644 --- a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -32,14 +32,20 @@ val forkedTestLimit = gradle.sharedServices.registerIfAbsent("forkedTestLimit", maxParallelUsages.set(3) } +// Use lazy providers to avoid evaluating the property until it is needed +val skipTestsProvider = rootProject.providers.gradleProperty("skipTests") +val skipForkedTestsProvider = rootProject.providers.gradleProperty("skipForkedTests") +val skipFlakyTestsProvider = rootProject.providers.gradleProperty("skipFlakyTests") +val runFlakyTestsProvider = rootProject.providers.gradleProperty("runFlakyTests") + // Go through the Test tasks and configure them tasks.withType(Test::class.java).configureEach { // Disable all tests if skipTests property was specified - onlyIf { !project.rootProject.hasProperty("skipTests") } + onlyIf { !skipTestsProvider.isPresent } // Enable force rerun of tests with -Prerun.tests.${project.name} outputs.upToDateWhen { - !project.rootProject.hasProperty("rerun.tests.${project.name}") + !rootProject.providers.gradleProperty("rerun.tests.${project.name}").isPresent } // Avoid executing classes used to test testing frameworks instrumentation @@ -68,7 +74,7 @@ tasks.withType(Test::class.java).configureEach { forkEvery = 1 // Limit the number of concurrent forked tests usesService(forkedTestLimit) - onlyIf { !project.rootProject.hasProperty("skipForkedTests") } + onlyIf { !skipForkedTestsProvider.isPresent } } else { exclude("**/*ForkedTest*") } @@ -89,7 +95,7 @@ project.afterEvaluate { } else if (it.name != "traceAgentTest") { allTestsTask.dependsOn(it) } - // Make check depend on this test task + checkTask.configure { dependsOn(it) } @@ -102,17 +108,17 @@ project.afterEvaluate { // Flaky tests management for JUnit 5 if (testFramework is JUnitPlatformOptions) { val junitPlatform = testFramework as JUnitPlatformOptions - if (project.rootProject.hasProperty("skipFlakyTests")) { + if (skipFlakyTestsProvider.isPresent) { junitPlatform.excludeTags("flaky") - } else if (project.rootProject.hasProperty("runFlakyTests")) { + } else if (runFlakyTestsProvider.isPresent) { junitPlatform.includeTags("flaky") } } // Flaky tests management for Spock - if (project.rootProject.hasProperty("skipFlakyTests")) { + if (skipFlakyTestsProvider.isPresent) { jvmArgs("-Drun.flaky.tests=false") - } else if (project.rootProject.hasProperty("runFlakyTests")) { + } else if (runFlakyTestsProvider.isPresent) { jvmArgs("-Drun.flaky.tests=true") } } From 7ff614b847b1c3d31731a667aea3918b794e254b Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Fri, 24 Oct 2025 15:30:10 -0400 Subject: [PATCH 03/13] Use more lazy API configurations --- .../kotlin/datadog.configure-tests.gradle.kts | 65 +++++++++---------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts index 69803eed10c..6a8ba36f450 100644 --- a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -37,9 +37,14 @@ val skipTestsProvider = rootProject.providers.gradleProperty("skipTests") val skipForkedTestsProvider = rootProject.providers.gradleProperty("skipForkedTests") val skipFlakyTestsProvider = rootProject.providers.gradleProperty("skipFlakyTests") val runFlakyTestsProvider = rootProject.providers.gradleProperty("runFlakyTests") +val activePartitionProvider = providers.provider { + project.extra.properties["activePartition"] as? Boolean ?: true +} // Go through the Test tasks and configure them tasks.withType(Test::class.java).configureEach { + enabled = activePartitionProvider.get() + // Disable all tests if skipTests property was specified onlyIf { !skipTestsProvider.isPresent } @@ -83,52 +88,42 @@ tasks.withType(Test::class.java).configureEach { timeout.set(Duration.of(20, ChronoUnit.MINUTES)) } -val allTestsTask = tasks.maybeCreate("allTests") -val allLatestDepTestsTask = tasks.maybeCreate("allLatestDepTests") -val checkTask = tasks.named("check") - -project.afterEvaluate { - tasks.withType(Test::class.java).forEach { - // Add test to appropriate aggregate task - if (it.name.contains("latest", ignoreCase = true)) { - allLatestDepTestsTask.dependsOn(it) - } else if (it.name != "traceAgentTest") { - allTestsTask.dependsOn(it) +tasks.register("allTests") { + dependsOn(providers.provider { + tasks.withType().filter { testTask -> + !testTask.name.contains("latest", ignoreCase = true) && testTask.name != "traceAgentTest" } + }) +} - checkTask.configure { - dependsOn(it) +tasks.register("allLatestDepTests") { + dependsOn(providers.provider { + tasks.withType().filter { testTask -> + testTask.name.contains("latest", ignoreCase = true) } - } + }) } -// Setup flaky tests jobs. Done in afterEvaluate so that it applies to latestDepTest. -project.afterEvaluate { - tasks.withType(Test::class.java).configureEach { - // Flaky tests management for JUnit 5 - if (testFramework is JUnitPlatformOptions) { - val junitPlatform = testFramework as JUnitPlatformOptions - if (skipFlakyTestsProvider.isPresent) { - junitPlatform.excludeTags("flaky") - } else if (runFlakyTestsProvider.isPresent) { - junitPlatform.includeTags("flaky") - } - } +tasks.named("check") { + dependsOn(tasks.withType()) +} - // Flaky tests management for Spock +tasks.withType(Test::class.java).configureEach { + // Flaky tests management for JUnit 5 + if (testFramework is JUnitPlatformOptions) { + val junitPlatform = testFramework as JUnitPlatformOptions if (skipFlakyTestsProvider.isPresent) { - jvmArgs("-Drun.flaky.tests=false") + junitPlatform.excludeTags("flaky") } else if (runFlakyTestsProvider.isPresent) { - jvmArgs("-Drun.flaky.tests=true") + junitPlatform.includeTags("flaky") } } -} -if (!(project.property("activePartition") as Boolean)) { - project.afterEvaluate { - tasks.withType(Test::class.java).configureEach { - enabled = false - } + // Flaky tests management for Spock + if (skipFlakyTestsProvider.isPresent) { + jvmArgs("-Drun.flaky.tests=false") + } else if (runFlakyTestsProvider.isPresent) { + jvmArgs("-Drun.flaky.tests=true") } } From be417229aba3fc6baf6f371b93c977a0a95f290a Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Fri, 24 Oct 2025 16:37:17 -0400 Subject: [PATCH 04/13] Remove old file references and add missing configuration --- .../kotlin/datadog.configure-tests.gradle.kts | 9 ++ .../armeria/armeria-grpc-0.84/build.gradle | 2 - .../armeria/armeria-jetty-1.24/build.gradle | 1 - .../aws-java/aws-java-sqs-1.0/build.gradle | 2 - .../aws-java/aws-java-sqs-2.0/build.gradle | 2 - .../instrumentation/jakarta-jms/build.gradle | 1 - .../instrumentation/jms/build.gradle | 2 - .../kafka/kafka-clients-0.11/build.gradle | 3 - .../scala-promise-2.10/build.gradle | 2 - .../scala-promise-2.13/build.gradle | 2 - .../spring/spring-jms-3.1/build.gradle | 2 - .../spymemcached-2.10/build.gradle | 1 - .../vertx-mysql-client-3.9/build.gradle | 2 - .../vertx-mysql-client-4.0/build.gradle | 2 - .../vertx-mysql-client-4.4.2/build.gradle | 2 - .../vertx-pg-client-4.0/build.gradle | 2 - .../vertx-pg-client-4.4.2/build.gradle | 2 - .../vertx/vertx-redis-client-3.9/build.gradle | 1 - .../vertx/vertx-rx-3.5/build.gradle | 2 - .../vertx-web/vertx-web-3.4/build.gradle | 2 - .../vertx-web/vertx-web-3.5/build.gradle | 2 - gradle/configure_tests.gradle | 133 ------------------ 22 files changed, 9 insertions(+), 170 deletions(-) delete mode 100644 gradle/configure_tests.gradle diff --git a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts index 6a8ba36f450..ff9ebc784e8 100644 --- a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -2,6 +2,8 @@ import org.gradle.api.tasks.testing.Test import org.gradle.api.tasks.testing.junitplatform.JUnitPlatformOptions import org.gradle.api.services.BuildService import org.gradle.api.services.BuildServiceParameters +import org.gradle.testing.base.TestingExtension +import org.gradle.api.plugins.jvm.JvmTestSuite import java.time.Duration import java.time.temporal.ChronoUnit @@ -32,6 +34,13 @@ val forkedTestLimit = gradle.sharedServices.registerIfAbsent("forkedTestLimit", maxParallelUsages.set(3) } +extensions.findByType(TestingExtension::class.java)?.apply { + suites.withType(JvmTestSuite::class.java).configureEach { + // Use JUnit 5 to run tests + useJUnitJupiter() + } +} + // Use lazy providers to avoid evaluating the property until it is needed val skipTestsProvider = rootProject.providers.gradleProperty("skipTests") val skipForkedTestsProvider = rootProject.providers.gradleProperty("skipForkedTests") diff --git a/dd-java-agent/instrumentation/armeria/armeria-grpc-0.84/build.gradle b/dd-java-agent/instrumentation/armeria/armeria-grpc-0.84/build.gradle index 32996b1f7e2..faf1cae4c43 100644 --- a/dd-java-agent/instrumentation/armeria/armeria-grpc-0.84/build.gradle +++ b/dd-java-agent/instrumentation/armeria/armeria-grpc-0.84/build.gradle @@ -40,8 +40,6 @@ protobuf { addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } 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 9109cf87d89..3d8aa6394fe 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 @@ -16,7 +16,6 @@ muzzle { } apply from: "$rootDir/gradle/java.gradle" -apply from: "$rootDir/gradle/configure_tests.gradle" addTestSuiteForDir('latestDepTest', 'test') 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 03b5fcdcb5c..879ed1cce12 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 @@ -13,8 +13,6 @@ apply from: "$rootDir/gradle/java.gradle" addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - 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-2.0/build.gradle b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/build.gradle index ad8355da2f0..bde3f7ee5e0 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 @@ -14,8 +14,6 @@ apply from: "$rootDir/gradle/java.gradle" addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - dependencies { compileOnly group: 'software.amazon.awssdk', name: 'sqs', version: '2.2.0' compileOnly group: 'com.amazonaws', name: 'amazon-sqs-java-messaging-lib', version: '2.0.0' diff --git a/dd-java-agent/instrumentation/jakarta-jms/build.gradle b/dd-java-agent/instrumentation/jakarta-jms/build.gradle index a86e2f3750c..297fad6eb15 100644 --- a/dd-java-agent/instrumentation/jakarta-jms/build.gradle +++ b/dd-java-agent/instrumentation/jakarta-jms/build.gradle @@ -14,7 +14,6 @@ muzzle { } apply from: "$rootDir/gradle/java.gradle" -apply from: "$rootDir/gradle/configure_tests.gradle" repositories { maven { diff --git a/dd-java-agent/instrumentation/jms/build.gradle b/dd-java-agent/instrumentation/jms/build.gradle index d8f1f40fbdb..717ef42380d 100644 --- a/dd-java-agent/instrumentation/jms/build.gradle +++ b/dd-java-agent/instrumentation/jms/build.gradle @@ -26,8 +26,6 @@ repositories { addTestSuite('latestDepTest') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } diff --git a/dd-java-agent/instrumentation/kafka/kafka-clients-0.11/build.gradle b/dd-java-agent/instrumentation/kafka/kafka-clients-0.11/build.gradle index b23bf4c1808..5a301dd5b82 100644 --- a/dd-java-agent/instrumentation/kafka/kafka-clients-0.11/build.gradle +++ b/dd-java-agent/instrumentation/kafka/kafka-clients-0.11/build.gradle @@ -20,8 +20,6 @@ apply from: "$rootDir/gradle/java.gradle" addTestSuite('latestDepTest') addTestSuite('iastLatestDepTest3') -apply from: "$rootDir/gradle/configure_tests.gradle" - dependencies { compileOnly group: 'org.apache.kafka', name: 'kafka-clients', version: '0.11.0.0' implementation project(':dd-java-agent:instrumentation:kafka:kafka-common') @@ -39,7 +37,6 @@ dependencies { testRuntimeOnly project(':dd-java-agent:instrumentation:reactive-streams') testImplementation project(':dd-java-agent:agent-iast:iast-test-fixtures') - // IAST testing dependencies testRuntimeOnly project(':dd-java-agent:instrumentation:iast-instrumenter') testRuntimeOnly project(':dd-java-agent:instrumentation:java:java-lang:java-lang-1.8') diff --git a/dd-java-agent/instrumentation/scala-promise/scala-promise-2.10/build.gradle b/dd-java-agent/instrumentation/scala-promise/scala-promise-2.10/build.gradle index 4d170e05420..8355186ebbd 100644 --- a/dd-java-agent/instrumentation/scala-promise/scala-promise-2.10/build.gradle +++ b/dd-java-agent/instrumentation/scala-promise/scala-promise-2.10/build.gradle @@ -28,8 +28,6 @@ apply plugin: 'scala' // Don't use test-with-scala since we want to pick our own addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'forkedTest') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } diff --git a/dd-java-agent/instrumentation/scala-promise/scala-promise-2.13/build.gradle b/dd-java-agent/instrumentation/scala-promise/scala-promise-2.13/build.gradle index 3bb3d2df5dc..effcc09dc31 100644 --- a/dd-java-agent/instrumentation/scala-promise/scala-promise-2.13/build.gradle +++ b/dd-java-agent/instrumentation/scala-promise/scala-promise-2.13/build.gradle @@ -28,8 +28,6 @@ apply plugin: 'scala' // Don't use test-with-scala since we want to pick our own addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'forkedTest') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } diff --git a/dd-java-agent/instrumentation/spring/spring-jms-3.1/build.gradle b/dd-java-agent/instrumentation/spring/spring-jms-3.1/build.gradle index a8ed32d6221..ecc8a113a6f 100644 --- a/dd-java-agent/instrumentation/spring/spring-jms-3.1/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-jms-3.1/build.gradle @@ -12,8 +12,6 @@ apply from: "$rootDir/gradle/java.gradle" addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } diff --git a/dd-java-agent/instrumentation/spymemcached-2.10/build.gradle b/dd-java-agent/instrumentation/spymemcached-2.10/build.gradle index 565824ff70d..81a3331232b 100644 --- a/dd-java-agent/instrumentation/spymemcached-2.10/build.gradle +++ b/dd-java-agent/instrumentation/spymemcached-2.10/build.gradle @@ -8,7 +8,6 @@ muzzle { } apply from: "$rootDir/gradle/java.gradle" -apply from: "$rootDir/gradle/configure_tests.gradle" addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') diff --git a/dd-java-agent/instrumentation/vertx/vertx-mysql-client/vertx-mysql-client-3.9/build.gradle b/dd-java-agent/instrumentation/vertx/vertx-mysql-client/vertx-mysql-client-3.9/build.gradle index 93f9000af8d..47917d808bd 100644 --- a/dd-java-agent/instrumentation/vertx/vertx-mysql-client/vertx-mysql-client-3.9/build.gradle +++ b/dd-java-agent/instrumentation/vertx/vertx-mysql-client/vertx-mysql-client-3.9/build.gradle @@ -14,8 +14,6 @@ muzzle { addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } diff --git a/dd-java-agent/instrumentation/vertx/vertx-mysql-client/vertx-mysql-client-4.0/build.gradle b/dd-java-agent/instrumentation/vertx/vertx-mysql-client/vertx-mysql-client-4.0/build.gradle index e04507cb8ba..fcb046147b0 100644 --- a/dd-java-agent/instrumentation/vertx/vertx-mysql-client/vertx-mysql-client-4.0/build.gradle +++ b/dd-java-agent/instrumentation/vertx/vertx-mysql-client/vertx-mysql-client-4.0/build.gradle @@ -13,8 +13,6 @@ muzzle { addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } diff --git a/dd-java-agent/instrumentation/vertx/vertx-mysql-client/vertx-mysql-client-4.4.2/build.gradle b/dd-java-agent/instrumentation/vertx/vertx-mysql-client/vertx-mysql-client-4.4.2/build.gradle index 6159f4e43e8..c87098d8a90 100644 --- a/dd-java-agent/instrumentation/vertx/vertx-mysql-client/vertx-mysql-client-4.4.2/build.gradle +++ b/dd-java-agent/instrumentation/vertx/vertx-mysql-client/vertx-mysql-client-4.4.2/build.gradle @@ -13,8 +13,6 @@ muzzle { addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } diff --git a/dd-java-agent/instrumentation/vertx/vertx-pg-client/vertx-pg-client-4.0/build.gradle b/dd-java-agent/instrumentation/vertx/vertx-pg-client/vertx-pg-client-4.0/build.gradle index 46dfa1e16f4..002e1c63393 100644 --- a/dd-java-agent/instrumentation/vertx/vertx-pg-client/vertx-pg-client-4.0/build.gradle +++ b/dd-java-agent/instrumentation/vertx/vertx-pg-client/vertx-pg-client-4.0/build.gradle @@ -21,8 +21,6 @@ muzzle { addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } diff --git a/dd-java-agent/instrumentation/vertx/vertx-pg-client/vertx-pg-client-4.4.2/build.gradle b/dd-java-agent/instrumentation/vertx/vertx-pg-client/vertx-pg-client-4.4.2/build.gradle index 8f29134c68c..16e8f6d2ba8 100644 --- a/dd-java-agent/instrumentation/vertx/vertx-pg-client/vertx-pg-client-4.4.2/build.gradle +++ b/dd-java-agent/instrumentation/vertx/vertx-pg-client/vertx-pg-client-4.4.2/build.gradle @@ -12,8 +12,6 @@ muzzle { addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } diff --git a/dd-java-agent/instrumentation/vertx/vertx-redis-client-3.9/build.gradle b/dd-java-agent/instrumentation/vertx/vertx-redis-client-3.9/build.gradle index 5e847d89caa..ffbef8a91c3 100644 --- a/dd-java-agent/instrumentation/vertx/vertx-redis-client-3.9/build.gradle +++ b/dd-java-agent/instrumentation/vertx/vertx-redis-client-3.9/build.gradle @@ -9,7 +9,6 @@ muzzle { } apply from: "$rootDir/gradle/java.gradle" -apply from: "$rootDir/gradle/configure_tests.gradle" addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') diff --git a/dd-java-agent/instrumentation/vertx/vertx-rx-3.5/build.gradle b/dd-java-agent/instrumentation/vertx/vertx-rx-3.5/build.gradle index fdf319a2514..8c98c54be0c 100644 --- a/dd-java-agent/instrumentation/vertx/vertx-rx-3.5/build.gradle +++ b/dd-java-agent/instrumentation/vertx/vertx-rx-3.5/build.gradle @@ -3,8 +3,6 @@ apply from: "$rootDir/gradle/java.gradle" addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } diff --git a/dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-3.4/build.gradle b/dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-3.4/build.gradle index 56f1bf53c32..445885de346 100644 --- a/dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-3.4/build.gradle +++ b/dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-3.4/build.gradle @@ -18,8 +18,6 @@ muzzle { addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } diff --git a/dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-3.5/build.gradle b/dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-3.5/build.gradle index e2fe7548b0d..fc5a94cf814 100644 --- a/dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-3.5/build.gradle +++ b/dd-java-agent/instrumentation/vertx/vertx-web/vertx-web-3.5/build.gradle @@ -18,8 +18,6 @@ muzzle { addTestSuiteForDir('latestDepTest', 'test') addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test') -apply from: "$rootDir/gradle/configure_tests.gradle" - tasks.named("latestDepTest", Test) { finalizedBy 'latestDepForkedTest' } diff --git a/gradle/configure_tests.gradle b/gradle/configure_tests.gradle deleted file mode 100644 index 829c894f016..00000000000 --- a/gradle/configure_tests.gradle +++ /dev/null @@ -1,133 +0,0 @@ -// import java.time.Duration -// import java.time.temporal.ChronoUnit - -// def isTestingInstrumentation(Project project) { -// return [ -// "junit-4.10", -// "cucumber", -// "cucumber-junit-4", -// "junit-4.13", -// "munit-junit-4", -// "junit-5.3", -// "junit-5.8", -// "cucumber-junit-5", -// "spock-junit-5", -// "testng-6", -// "testng-7", -// "karate", -// "scalatest", -// "selenium", -// "weaver" -// ].contains(project.name) -// } - -// def forkedTestLimit = gradle.sharedServices.registerIfAbsent("forkedTestLimit", BuildService) { -// maxParallelUsages = 3 -// } - -// testing { -// suites.configureEach { -// // Use JUnit 5 to run tests -// useJUnitJupiter() -// } -// } - -// // Go through the Test tasks and configure them -// tasks.withType(Test).configureEach { -// // Disable all tests if skipTests property was specified -// onlyIf { !project.rootProject.hasProperty("skipTests") } - -// // Enable force rerun of tests with -Prerun.tests.${project.name} -// outputs.upToDateWhen { -// !project.rootProject.hasProperty("rerun.tests.${project.name}") -// } - -// // Avoid executing classes used to test testing frameworks instrumentation -// if (isTestingInstrumentation(project)) { -// exclude("**/TestSucceed*") -// exclude("**/TestFailed*") -// exclude("**/TestFailedWithSuccessPercentage*") -// exclude("**/TestError*") -// exclude("**/TestSkipped*") -// exclude("**/TestSkippedClass*") -// exclude("**/TestInheritance*", "**/BaseTestInheritance*") -// exclude("**/TestFactory*") -// exclude("**/TestParameterized*") -// exclude("**/TestRepeated*") -// exclude("**/TestTemplate*") -// exclude("**/TestDisableTestTrace*") -// exclude("**/TestAssumption*", "**/TestSuiteSetUpAssumption*") -// exclude("**/TestUnskippable*") -// exclude("**/TestWithSetup*") -// } - -// // Split up tests that want to run forked in their own separate JVM for generated tasks -// if (name.startsWith("forkedTest") || name.endsWith("ForkedTest")) { -// setExcludes([]) -// setIncludes(["**/*ForkedTest*"]) -// forkEvery = 1 -// // Limit the number of concurrent forked tests -// usesService(forkedTestLimit) -// onlyIf { !project.rootProject.hasProperty("skipForkedTests") } -// } else { -// exclude("**/*ForkedTest*") -// } - -// // Set test timeout for 20 minutes. Default job timeout is 1h (configured on CI level). -// timeout = Duration.of(20, ChronoUnit.MINUTES) - -// check.dependsOn(it) -// } - -// Task allTestsTask = tasks.maybeCreate('allTests') -// Task allLatestDepTestsTask = tasks.maybeCreate('allLatestDepTests') -// project.afterEvaluate { -// tasks.withType(Test).each { -// if (it.name.containsIgnoreCase('latest')) { -// allLatestDepTestsTask.dependsOn it -// } else if (it.name != 'traceAgentTest') { -// allTestsTask.dependsOn it -// } -// } -// } - -// // Setup flaky tests jobs. Done in afterEvaluate so that it applies to latestDepTest. -// project.afterEvaluate { -// tasks.withType(Test).configureEach { -// // Flaky tests management for JUnit 5 -// testFramework { -// if (it instanceof JUnitPlatformOptions) { -// if (project.rootProject.hasProperty("skipFlakyTests")) { -// excludeTags("flaky") -// } else if (project.rootProject.hasProperty("runFlakyTests")) { -// includeTags("flaky") -// } -// } -// } - -// // Flaky tests management for Spock -// if (project.rootProject.hasProperty("skipFlakyTests")) { -// jvmArgs += ["-Drun.flaky.tests=false"] -// } else if (project.rootProject.hasProperty("runFlakyTests")) { -// jvmArgs += ["-Drun.flaky.tests=true"] -// } -// } -// } - -// if (!project.property("activePartition")) { -// project.afterEvaluate { -// tasks.withType(Test).configureEach { -// enabled = false -// } -// } -// } - -// tasks.withType(Test).configureEach { -// // https://docs.gradle.com/develocity/flaky-test-detection/ -// // https://docs.gradle.com/develocity/gradle-plugin/current/#test_retry -// develocity.testRetry { -// if (providers.environmentVariable("CI").isPresent()) { -// maxRetries = 3 -// } -// } -// } From d85b522e50468ba2f9b84117742074f239d93175 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Mon, 27 Oct 2025 16:29:27 -0400 Subject: [PATCH 05/13] Alphabetize instrumentations --- .../kotlin/datadog.configure-tests.gradle.kts | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts index ff9ebc784e8..3d06e3ebc91 100644 --- a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -9,20 +9,20 @@ import java.time.temporal.ChronoUnit fun isTestingInstrumentation(project: Project): Boolean { return listOf( - "junit-4.10", "cucumber", "cucumber-junit-4", + "cucumber-junit-5", + "junit-4.10", "junit-4.13", - "munit-junit-4", "junit-5.3", "junit-5.8", - "cucumber-junit-5", - "spock-junit-5", - "testng-6", - "testng-7", "karate", + "munit-junit-4", "scalatest", "selenium", + "spock-junit-5", + "testng-6", + "testng-7", "weaver" ).contains(project.name) } @@ -64,19 +64,19 @@ tasks.withType(Test::class.java).configureEach { // Avoid executing classes used to test testing frameworks instrumentation if (isTestingInstrumentation(project)) { - exclude("**/TestSucceed*") + exclude("**/TestAssumption*", "**/TestSuiteSetUpAssumption*") + exclude("**/TestDisableTestTrace*") + exclude("**/TestError*") + exclude("**/TestFactory*") exclude("**/TestFailed*") exclude("**/TestFailedWithSuccessPercentage*") - exclude("**/TestError*") - exclude("**/TestSkipped*") - exclude("**/TestSkippedClass*") exclude("**/TestInheritance*", "**/BaseTestInheritance*") - exclude("**/TestFactory*") exclude("**/TestParameterized*") exclude("**/TestRepeated*") + exclude("**/TestSkipped*") + exclude("**/TestSkippedClass*") + exclude("**/TestSucceed*") exclude("**/TestTemplate*") - exclude("**/TestDisableTestTrace*") - exclude("**/TestAssumption*", "**/TestSuiteSetUpAssumption*") exclude("**/TestUnskippable*") exclude("**/TestWithSetup*") } From afa8ed9fc4b24fd7c4e27280cc23ca13ba622d54 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Mon, 27 Oct 2025 16:31:04 -0400 Subject: [PATCH 06/13] Comment tasks --- buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts index 3d06e3ebc91..eeb2d0a4486 100644 --- a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -97,6 +97,8 @@ tasks.withType(Test::class.java).configureEach { timeout.set(Duration.of(20, ChronoUnit.MINUTES)) } +// Register a task "allTests" that depends on all non-latest and non-traceAgentTest Test tasks. +// This is used when we only want to run the 'main' test sets. tasks.register("allTests") { dependsOn(providers.provider { tasks.withType().filter { testTask -> @@ -105,6 +107,8 @@ tasks.register("allTests") { }) } +// Register a task "allLatestDepTests" that depends on all Test tasks whose names include 'latest'. +// This is used when we want to run tests against the latest dependency versions. tasks.register("allLatestDepTests") { dependsOn(providers.provider { tasks.withType().filter { testTask -> @@ -113,6 +117,8 @@ tasks.register("allLatestDepTests") { }) } +// Make the 'check' task depends on all Test tasks in the project. +// This means that when running the 'check' task, all Test tasks will run as well. tasks.named("check") { dependsOn(tasks.withType()) } From f654867f52714f02830d3b29718a9f8cb5e61c10 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Mon, 27 Oct 2025 17:09:47 -0400 Subject: [PATCH 07/13] Add comment for forked test memory limit --- buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts index eeb2d0a4486..529e5055a06 100644 --- a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -29,9 +29,11 @@ fun isTestingInstrumentation(project: Project): Boolean { // Need concrete implementation of BuildService in Kotlin abstract class ForkedTestLimit : BuildService +// Forked tests will fail with OOM if the memory is set too high. Gitlab allows at least a limit of 3. +val forkedTestsMemoryLimit = 3 val forkedTestLimit = gradle.sharedServices.registerIfAbsent("forkedTestLimit", ForkedTestLimit::class.java) { - maxParallelUsages.set(3) + maxParallelUsages.set(forkedTestsMemoryLimit) } extensions.findByType(TestingExtension::class.java)?.apply { From 01611f50b529b97d35d2ec403bfc79aaec129ca3 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Wed, 5 Nov 2025 15:03:11 -0500 Subject: [PATCH 08/13] Address quick formatting review comments --- .../kotlin/datadog.configure-tests.gradle.kts | 16 ++++++---------- gradle/java_no_deps.gradle | 3 +-- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts index 529e5055a06..9422e636fa5 100644 --- a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -53,7 +53,7 @@ val activePartitionProvider = providers.provider { } // Go through the Test tasks and configure them -tasks.withType(Test::class.java).configureEach { +tasks.withType().configureEach { enabled = activePartitionProvider.get() // Disable all tests if skipTests property was specified @@ -102,20 +102,16 @@ tasks.withType(Test::class.java).configureEach { // Register a task "allTests" that depends on all non-latest and non-traceAgentTest Test tasks. // This is used when we only want to run the 'main' test sets. tasks.register("allTests") { - dependsOn(providers.provider { - tasks.withType().filter { testTask -> - !testTask.name.contains("latest", ignoreCase = true) && testTask.name != "traceAgentTest" - } + dependsOn(tasks.withType().matching { testTask -> + !testTask.name.contains("latest", ignoreCase = true) && testTask.name != "traceAgentTest" }) } // Register a task "allLatestDepTests" that depends on all Test tasks whose names include 'latest'. // This is used when we want to run tests against the latest dependency versions. tasks.register("allLatestDepTests") { - dependsOn(providers.provider { - tasks.withType().filter { testTask -> - testTask.name.contains("latest", ignoreCase = true) - } + dependsOn(tasks.withType().matching { testTask -> + !testTask.name.contains("latest", ignoreCase = true) }) } @@ -125,7 +121,7 @@ tasks.named("check") { dependsOn(tasks.withType()) } -tasks.withType(Test::class.java).configureEach { +tasks.withType().configureEach { // Flaky tests management for JUnit 5 if (testFramework is JUnitPlatformOptions) { val junitPlatform = testFramework as JUnitPlatformOptions diff --git a/gradle/java_no_deps.gradle b/gradle/java_no_deps.gradle index 09341e139ef..00edda5d99d 100644 --- a/gradle/java_no_deps.gradle +++ b/gradle/java_no_deps.gradle @@ -3,6 +3,7 @@ import java.nio.file.Paths import org.gradle.api.internal.provider.PropertyFactory import org.gradle.jvm.toolchain.internal.SpecificInstallationToolchainSpec +apply plugin: 'datadog.configure-tests' apply plugin: 'java-library' apply from: "$rootDir/gradle/codenarc.gradle" @@ -465,5 +466,3 @@ tasks.register('testJar', Jar) { from(sourceSets.test.output) archiveClassifier = 'test' } - -apply plugin: 'datadog.configure-tests' From 822e01aef662442a1693f2b63ec3d86614288122 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Wed, 5 Nov 2025 15:19:24 -0500 Subject: [PATCH 09/13] Add develocity as a dependency --- buildSrc/build.gradle.kts | 6 ++++++ .../kotlin/datadog.configure-tests.gradle.kts | 18 +++++++++--------- gradle/libs.versions.toml | 3 +++ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index d93c261886a..35d9fed1085 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -49,6 +49,10 @@ apply { from("$rootDir/../gradle/repositories.gradle") } +repositories { + gradlePluginPortal() +} + dependencies { implementation(gradleApi()) implementation(localGroovy()) @@ -69,6 +73,8 @@ dependencies { implementation("com.fasterxml.jackson.core:jackson-databind") implementation("com.fasterxml.jackson.core:jackson-annotations") implementation("com.fasterxml.jackson.core:jackson-core") + + compileOnly(libs.develocity) } tasks.compileKotlin { diff --git a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts index 9422e636fa5..a8fe55f432f 100644 --- a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -140,12 +140,12 @@ tasks.withType().configureEach { } } -// tasks.withType(Test).configureEach { -// // https://docs.gradle.com/develocity/flaky-test-detection/ -// // https://docs.gradle.com/develocity/gradle-plugin/current/#test_retry -// develocity.testRetry { -// if (providers.environmentVariable("CI").isPresent()) { -// maxRetries = 3 -// } -// } -// } +tasks.withType().configureEach { + // https://docs.gradle.com/develocity/flaky-test-detection/ + // https://docs.gradle.com/develocity/gradle-plugin/current/#test_retry + develocity.testRetry { + if (providers.environmentVariable("CI").isPresent()) { + maxRetries = 3 + } + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ed7909b3a57..87b35eec1e6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -37,6 +37,7 @@ cafe_crypto = "0.1.0" lz4 = "1.7.1" jmh = "1.37" jackson = "2.20.0" +develocity = "4.2.2" [libraries] slf4j = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" } @@ -104,6 +105,8 @@ jmc-flightrecorder = { module = "org.openjdk.jmc:flightrecorder", version.ref = jackson-databind = {module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson"} +develocity = { module = "com.gradle:develocity-gradle-plugin", version.ref = "develocity" } + [bundles] asm = ["asm", "asmcommons"] cafe-crypto = ["cafe-crypto-curve25519", "cafe-crypto-ed25519"] From 60716352b89656180f6169346b7ea73da6a64b5d Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Wed, 5 Nov 2025 15:39:27 -0500 Subject: [PATCH 10/13] Introduce testInstrumentation extension --- .../kotlin/datadog.configure-tests.gradle.kts | 22 ++----------------- .../instrumentation/cucumber/build.gradle | 2 ++ .../junit/junit-4.10/build.gradle | 2 ++ .../junit-4.10/cucumber-junit-4/build.gradle | 2 ++ .../junit/junit-4.10/junit-4.13/build.gradle | 2 ++ .../junit-4.10/munit-junit-4/build.gradle | 2 ++ .../junit/junit-5.3/build.gradle | 2 ++ .../junit-5.3/cucumber-junit-5/build.gradle | 2 ++ .../junit/junit-5.3/junit-5.8/build.gradle | 2 ++ .../junit-5.3/spock-junit-5/build.gradle | 2 ++ .../instrumentation/karate/build.gradle | 2 ++ .../instrumentation/scalatest/build.gradle | 2 ++ .../instrumentation/selenium/build.gradle | 2 ++ .../testng/testng-6/build.gradle | 2 ++ .../testng/testng-7/build.gradle | 2 ++ .../instrumentation/weaver/build.gradle | 2 ++ 16 files changed, 32 insertions(+), 20 deletions(-) diff --git a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts index a8fe55f432f..ab271ee55bb 100644 --- a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -7,25 +7,7 @@ import org.gradle.api.plugins.jvm.JvmTestSuite import java.time.Duration import java.time.temporal.ChronoUnit -fun isTestingInstrumentation(project: Project): Boolean { - return listOf( - "cucumber", - "cucumber-junit-4", - "cucumber-junit-5", - "junit-4.10", - "junit-4.13", - "junit-5.3", - "junit-5.8", - "karate", - "munit-junit-4", - "scalatest", - "selenium", - "spock-junit-5", - "testng-6", - "testng-7", - "weaver" - ).contains(project.name) -} +val isTestingInstrumentation = project.findProperty("testingInstrumentation") as? Boolean ?: false // Need concrete implementation of BuildService in Kotlin abstract class ForkedTestLimit : BuildService @@ -65,7 +47,7 @@ tasks.withType().configureEach { } // Avoid executing classes used to test testing frameworks instrumentation - if (isTestingInstrumentation(project)) { + if (isTestingInstrumentation) { exclude("**/TestAssumption*", "**/TestSuiteSetUpAssumption*") exclude("**/TestDisableTestTrace*") exclude("**/TestError*") diff --git a/dd-java-agent/instrumentation/cucumber/build.gradle b/dd-java-agent/instrumentation/cucumber/build.gradle index 21ae5de3546..ee503d250af 100644 --- a/dd-java-agent/instrumentation/cucumber/build.gradle +++ b/dd-java-agent/instrumentation/cucumber/build.gradle @@ -1,5 +1,7 @@ apply from: "$rootDir/gradle/java.gradle" +ext.testingInstrumentation = true + muzzle { pass { group = 'io.cucumber' diff --git a/dd-java-agent/instrumentation/junit/junit-4.10/build.gradle b/dd-java-agent/instrumentation/junit/junit-4.10/build.gradle index f8d1abd9be1..5549b0b9fe6 100644 --- a/dd-java-agent/instrumentation/junit/junit-4.10/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-4.10/build.gradle @@ -8,6 +8,8 @@ plugins { apply from: "$rootDir/gradle/java.gradle" apply from: "$rootDir/gradle/test-with-kotlin.gradle" +ext.testingInstrumentation = true + muzzle { pass { group = 'junit' diff --git a/dd-java-agent/instrumentation/junit/junit-4.10/cucumber-junit-4/build.gradle b/dd-java-agent/instrumentation/junit/junit-4.10/cucumber-junit-4/build.gradle index 0e528111889..afb289d9806 100644 --- a/dd-java-agent/instrumentation/junit/junit-4.10/cucumber-junit-4/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-4.10/cucumber-junit-4/build.gradle @@ -1,5 +1,7 @@ apply from: "$rootDir/gradle/java.gradle" +ext.testingInstrumentation = true + muzzle { pass { group = 'io.cucumber' diff --git a/dd-java-agent/instrumentation/junit/junit-4.10/junit-4.13/build.gradle b/dd-java-agent/instrumentation/junit/junit-4.10/junit-4.13/build.gradle index 7c176ad7fe3..45ff7f1082e 100644 --- a/dd-java-agent/instrumentation/junit/junit-4.10/junit-4.13/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-4.10/junit-4.13/build.gradle @@ -1,5 +1,7 @@ apply from: "$rootDir/gradle/java.gradle" +ext.testingInstrumentation = true + muzzle { pass { group = 'junit' diff --git a/dd-java-agent/instrumentation/junit/junit-4.10/munit-junit-4/build.gradle b/dd-java-agent/instrumentation/junit/junit-4.10/munit-junit-4/build.gradle index 5f3a1fd306e..bc0c48e4b40 100644 --- a/dd-java-agent/instrumentation/junit/junit-4.10/munit-junit-4/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-4.10/munit-junit-4/build.gradle @@ -1,6 +1,8 @@ apply from: "$rootDir/gradle/java.gradle" apply plugin: 'scala' +ext.testingInstrumentation = true + muzzle { pass { group = 'org.scalameta' diff --git a/dd-java-agent/instrumentation/junit/junit-5.3/build.gradle b/dd-java-agent/instrumentation/junit/junit-5.3/build.gradle index fbffbe3af73..ee298d73b04 100644 --- a/dd-java-agent/instrumentation/junit/junit-5.3/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-5.3/build.gradle @@ -1,5 +1,7 @@ apply from: "$rootDir/gradle/java.gradle" +ext.testingInstrumentation = true + // JUnit5 5.3.0+ version is needed because of the fix in the TestInheritance test suite names. // Previously at that version, the test suite name was the base class. def jupiterVersion = '5.3.0' diff --git a/dd-java-agent/instrumentation/junit/junit-5.3/cucumber-junit-5/build.gradle b/dd-java-agent/instrumentation/junit/junit-5.3/cucumber-junit-5/build.gradle index 344da340e60..1271f46dd7d 100644 --- a/dd-java-agent/instrumentation/junit/junit-5.3/cucumber-junit-5/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-5.3/cucumber-junit-5/build.gradle @@ -1,5 +1,7 @@ apply from: "$rootDir/gradle/java.gradle" +ext.testingInstrumentation = true + muzzle { pass { group = 'io.cucumber' diff --git a/dd-java-agent/instrumentation/junit/junit-5.3/junit-5.8/build.gradle b/dd-java-agent/instrumentation/junit/junit-5.3/junit-5.8/build.gradle index 4129d7ce857..e08fec4c653 100644 --- a/dd-java-agent/instrumentation/junit/junit-5.3/junit-5.8/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-5.3/junit-5.8/build.gradle @@ -1,5 +1,7 @@ apply from: "$rootDir/gradle/java.gradle" +ext.testingInstrumentation = true + def jupiterVersion = '5.8.0' def platformVersion = '1.8.0' diff --git a/dd-java-agent/instrumentation/junit/junit-5.3/spock-junit-5/build.gradle b/dd-java-agent/instrumentation/junit/junit-5.3/spock-junit-5/build.gradle index 13c27b71fd3..45c109692c7 100644 --- a/dd-java-agent/instrumentation/junit/junit-5.3/spock-junit-5/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-5.3/spock-junit-5/build.gradle @@ -1,5 +1,7 @@ apply from: "$rootDir/gradle/java.gradle" +ext.testingInstrumentation = true + def spockGroovyVersion = '3.0' muzzle { diff --git a/dd-java-agent/instrumentation/karate/build.gradle b/dd-java-agent/instrumentation/karate/build.gradle index 3b0ce1a8d97..59e3c23361f 100644 --- a/dd-java-agent/instrumentation/karate/build.gradle +++ b/dd-java-agent/instrumentation/karate/build.gradle @@ -5,6 +5,8 @@ ext { apply from: "$rootDir/gradle/java.gradle" +ext.testingInstrumentation = true + muzzle { pass { group = 'com.intuit.karate' diff --git a/dd-java-agent/instrumentation/scalatest/build.gradle b/dd-java-agent/instrumentation/scalatest/build.gradle index baeab8c0849..f7392e7fc19 100644 --- a/dd-java-agent/instrumentation/scalatest/build.gradle +++ b/dd-java-agent/instrumentation/scalatest/build.gradle @@ -1,6 +1,8 @@ apply from: "$rootDir/gradle/java.gradle" apply plugin: 'scala' +ext.testingInstrumentation = true + muzzle { pass { group = 'org.scalatest' diff --git a/dd-java-agent/instrumentation/selenium/build.gradle b/dd-java-agent/instrumentation/selenium/build.gradle index 7c5c008d4d7..4d12260c71f 100644 --- a/dd-java-agent/instrumentation/selenium/build.gradle +++ b/dd-java-agent/instrumentation/selenium/build.gradle @@ -8,6 +8,8 @@ ext { apply from: "$rootDir/gradle/java.gradle" +ext.testingInstrumentation = true + muzzle { pass { group = 'org.seleniumhq.selenium' diff --git a/dd-java-agent/instrumentation/testng/testng-6/build.gradle b/dd-java-agent/instrumentation/testng/testng-6/build.gradle index ce584b3fe43..6b9cf79c151 100644 --- a/dd-java-agent/instrumentation/testng/testng-6/build.gradle +++ b/dd-java-agent/instrumentation/testng/testng-6/build.gradle @@ -4,6 +4,8 @@ plugins { apply from: "$rootDir/gradle/java.gradle" +ext.testingInstrumentation = true + muzzle { pass { group = 'org.testng' diff --git a/dd-java-agent/instrumentation/testng/testng-7/build.gradle b/dd-java-agent/instrumentation/testng/testng-7/build.gradle index 6385a574129..4e89709f53a 100644 --- a/dd-java-agent/instrumentation/testng/testng-7/build.gradle +++ b/dd-java-agent/instrumentation/testng/testng-7/build.gradle @@ -9,6 +9,8 @@ ext { apply from: "$rootDir/gradle/java.gradle" +ext.testingInstrumentation = true + muzzle { pass { group = 'org.testng' diff --git a/dd-java-agent/instrumentation/weaver/build.gradle b/dd-java-agent/instrumentation/weaver/build.gradle index f763985c7a8..f03438ff363 100644 --- a/dd-java-agent/instrumentation/weaver/build.gradle +++ b/dd-java-agent/instrumentation/weaver/build.gradle @@ -1,6 +1,8 @@ apply from: "$rootDir/gradle/java.gradle" apply plugin: 'scala' +ext.testingInstrumentation = true + muzzle { pass { group = 'com.disneystreaming' From 5064dcf862acc57ca20e8437542953dac0b71f65 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Thu, 6 Nov 2025 10:28:48 -0500 Subject: [PATCH 11/13] Address review comments --- .../main/kotlin/datadog.configure-tests.gradle.kts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts index ab271ee55bb..acff6c686b1 100644 --- a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -7,7 +7,9 @@ import org.gradle.api.plugins.jvm.JvmTestSuite import java.time.Duration import java.time.temporal.ChronoUnit -val isTestingInstrumentation = project.findProperty("testingInstrumentation") as? Boolean ?: false +val isTestingInstrumentation = providers.provider { + project.findProperty("testingInstrumentation") as? Boolean ?: false +} // Need concrete implementation of BuildService in Kotlin abstract class ForkedTestLimit : BuildService @@ -18,8 +20,8 @@ val forkedTestLimit = gradle.sharedServices.registerIfAbsent("forkedTestLimit", maxParallelUsages.set(forkedTestsMemoryLimit) } -extensions.findByType(TestingExtension::class.java)?.apply { - suites.withType(JvmTestSuite::class.java).configureEach { +extensions.findByType()?.apply { + suites.withType().configureEach { // Use JUnit 5 to run tests useJUnitJupiter() } @@ -39,7 +41,7 @@ tasks.withType().configureEach { enabled = activePartitionProvider.get() // Disable all tests if skipTests property was specified - onlyIf { !skipTestsProvider.isPresent } + onlyIf("skipTests are undefined or false") { !skipTestsProvider.isPresent } // Enable force rerun of tests with -Prerun.tests.${project.name} outputs.upToDateWhen { @@ -47,7 +49,7 @@ tasks.withType().configureEach { } // Avoid executing classes used to test testing frameworks instrumentation - if (isTestingInstrumentation) { + if (isTestingInstrumentation.get()) { exclude("**/TestAssumption*", "**/TestSuiteSetUpAssumption*") exclude("**/TestDisableTestTrace*") exclude("**/TestError*") @@ -72,7 +74,7 @@ tasks.withType().configureEach { forkEvery = 1 // Limit the number of concurrent forked tests usesService(forkedTestLimit) - onlyIf { !skipForkedTestsProvider.isPresent } + onlyIf("skipForkedTests are undefined or false") { !skipForkedTestsProvider.isPresent } } else { exclude("**/*ForkedTest*") } From c82daa72ffbe4aa11992950022e6119615ae047a Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Thu, 6 Nov 2025 10:43:56 -0500 Subject: [PATCH 12/13] Typo --- buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts index acff6c686b1..935b12c15c5 100644 --- a/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -99,7 +99,7 @@ tasks.register("allLatestDepTests") { }) } -// Make the 'check' task depends on all Test tasks in the project. +// Make the 'check' task depend on all Test tasks in the project. // This means that when running the 'check' task, all Test tasks will run as well. tasks.named("check") { dependsOn(tasks.withType()) From 8096191034d851c5dc5a2b770ea87d2918df70bc Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Thu, 6 Nov 2025 14:11:17 -0500 Subject: [PATCH 13/13] Move extension definition to top of file --- dd-java-agent/instrumentation/cucumber/build.gradle | 4 ++-- dd-java-agent/instrumentation/junit/junit-4.10/build.gradle | 4 ++-- .../junit/junit-4.10/cucumber-junit-4/build.gradle | 4 ++-- .../instrumentation/junit/junit-4.10/junit-4.13/build.gradle | 4 ++-- .../junit/junit-4.10/munit-junit-4/build.gradle | 4 ++-- dd-java-agent/instrumentation/junit/junit-5.3/build.gradle | 4 ++-- .../junit/junit-5.3/cucumber-junit-5/build.gradle | 4 ++-- .../instrumentation/junit/junit-5.3/junit-5.8/build.gradle | 4 ++-- .../junit/junit-5.3/spock-junit-5/build.gradle | 4 ++-- dd-java-agent/instrumentation/karate/build.gradle | 3 +-- dd-java-agent/instrumentation/scalatest/build.gradle | 4 ++-- dd-java-agent/instrumentation/selenium/build.gradle | 3 +-- dd-java-agent/instrumentation/testng/testng-6/build.gradle | 4 ++-- dd-java-agent/instrumentation/testng/testng-7/build.gradle | 3 +-- dd-java-agent/instrumentation/weaver/build.gradle | 4 ++-- 15 files changed, 27 insertions(+), 30 deletions(-) diff --git a/dd-java-agent/instrumentation/cucumber/build.gradle b/dd-java-agent/instrumentation/cucumber/build.gradle index ee503d250af..4258244fb64 100644 --- a/dd-java-agent/instrumentation/cucumber/build.gradle +++ b/dd-java-agent/instrumentation/cucumber/build.gradle @@ -1,7 +1,7 @@ -apply from: "$rootDir/gradle/java.gradle" - ext.testingInstrumentation = true +apply from: "$rootDir/gradle/java.gradle" + muzzle { pass { group = 'io.cucumber' diff --git a/dd-java-agent/instrumentation/junit/junit-4.10/build.gradle b/dd-java-agent/instrumentation/junit/junit-4.10/build.gradle index 5549b0b9fe6..99b4ef2e46c 100644 --- a/dd-java-agent/instrumentation/junit/junit-4.10/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-4.10/build.gradle @@ -5,11 +5,11 @@ plugins { id 'org.jetbrains.kotlin.jvm' } +ext.testingInstrumentation = true + apply from: "$rootDir/gradle/java.gradle" apply from: "$rootDir/gradle/test-with-kotlin.gradle" -ext.testingInstrumentation = true - muzzle { pass { group = 'junit' diff --git a/dd-java-agent/instrumentation/junit/junit-4.10/cucumber-junit-4/build.gradle b/dd-java-agent/instrumentation/junit/junit-4.10/cucumber-junit-4/build.gradle index afb289d9806..f5dc3d7ab87 100644 --- a/dd-java-agent/instrumentation/junit/junit-4.10/cucumber-junit-4/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-4.10/cucumber-junit-4/build.gradle @@ -1,7 +1,7 @@ -apply from: "$rootDir/gradle/java.gradle" - ext.testingInstrumentation = true +apply from: "$rootDir/gradle/java.gradle" + muzzle { pass { group = 'io.cucumber' diff --git a/dd-java-agent/instrumentation/junit/junit-4.10/junit-4.13/build.gradle b/dd-java-agent/instrumentation/junit/junit-4.10/junit-4.13/build.gradle index 45ff7f1082e..ab2434265ac 100644 --- a/dd-java-agent/instrumentation/junit/junit-4.10/junit-4.13/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-4.10/junit-4.13/build.gradle @@ -1,7 +1,7 @@ -apply from: "$rootDir/gradle/java.gradle" - ext.testingInstrumentation = true +apply from: "$rootDir/gradle/java.gradle" + muzzle { pass { group = 'junit' diff --git a/dd-java-agent/instrumentation/junit/junit-4.10/munit-junit-4/build.gradle b/dd-java-agent/instrumentation/junit/junit-4.10/munit-junit-4/build.gradle index bc0c48e4b40..f5dc8befbc2 100644 --- a/dd-java-agent/instrumentation/junit/junit-4.10/munit-junit-4/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-4.10/munit-junit-4/build.gradle @@ -1,8 +1,8 @@ +ext.testingInstrumentation = true + apply from: "$rootDir/gradle/java.gradle" apply plugin: 'scala' -ext.testingInstrumentation = true - muzzle { pass { group = 'org.scalameta' diff --git a/dd-java-agent/instrumentation/junit/junit-5.3/build.gradle b/dd-java-agent/instrumentation/junit/junit-5.3/build.gradle index ee298d73b04..c0da8954d4a 100644 --- a/dd-java-agent/instrumentation/junit/junit-5.3/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-5.3/build.gradle @@ -1,7 +1,7 @@ -apply from: "$rootDir/gradle/java.gradle" - ext.testingInstrumentation = true +apply from: "$rootDir/gradle/java.gradle" + // JUnit5 5.3.0+ version is needed because of the fix in the TestInheritance test suite names. // Previously at that version, the test suite name was the base class. def jupiterVersion = '5.3.0' diff --git a/dd-java-agent/instrumentation/junit/junit-5.3/cucumber-junit-5/build.gradle b/dd-java-agent/instrumentation/junit/junit-5.3/cucumber-junit-5/build.gradle index 1271f46dd7d..c12695f5eba 100644 --- a/dd-java-agent/instrumentation/junit/junit-5.3/cucumber-junit-5/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-5.3/cucumber-junit-5/build.gradle @@ -1,7 +1,7 @@ -apply from: "$rootDir/gradle/java.gradle" - ext.testingInstrumentation = true +apply from: "$rootDir/gradle/java.gradle" + muzzle { pass { group = 'io.cucumber' diff --git a/dd-java-agent/instrumentation/junit/junit-5.3/junit-5.8/build.gradle b/dd-java-agent/instrumentation/junit/junit-5.3/junit-5.8/build.gradle index e08fec4c653..35f3dd4b4be 100644 --- a/dd-java-agent/instrumentation/junit/junit-5.3/junit-5.8/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-5.3/junit-5.8/build.gradle @@ -1,7 +1,7 @@ -apply from: "$rootDir/gradle/java.gradle" - ext.testingInstrumentation = true +apply from: "$rootDir/gradle/java.gradle" + def jupiterVersion = '5.8.0' def platformVersion = '1.8.0' diff --git a/dd-java-agent/instrumentation/junit/junit-5.3/spock-junit-5/build.gradle b/dd-java-agent/instrumentation/junit/junit-5.3/spock-junit-5/build.gradle index 45c109692c7..7e0a67c2b9c 100644 --- a/dd-java-agent/instrumentation/junit/junit-5.3/spock-junit-5/build.gradle +++ b/dd-java-agent/instrumentation/junit/junit-5.3/spock-junit-5/build.gradle @@ -1,7 +1,7 @@ -apply from: "$rootDir/gradle/java.gradle" - ext.testingInstrumentation = true +apply from: "$rootDir/gradle/java.gradle" + def spockGroovyVersion = '3.0' muzzle { diff --git a/dd-java-agent/instrumentation/karate/build.gradle b/dd-java-agent/instrumentation/karate/build.gradle index 59e3c23361f..4a55b4a2ed7 100644 --- a/dd-java-agent/instrumentation/karate/build.gradle +++ b/dd-java-agent/instrumentation/karate/build.gradle @@ -1,12 +1,11 @@ ext { // karate 1.4.0+ requires Java 11 or higher. latestDepTestMinJavaVersionForTests = JavaVersion.VERSION_11 + testingInstrumentation = true } apply from: "$rootDir/gradle/java.gradle" -ext.testingInstrumentation = true - muzzle { pass { group = 'com.intuit.karate' diff --git a/dd-java-agent/instrumentation/scalatest/build.gradle b/dd-java-agent/instrumentation/scalatest/build.gradle index f7392e7fc19..1c758f3862e 100644 --- a/dd-java-agent/instrumentation/scalatest/build.gradle +++ b/dd-java-agent/instrumentation/scalatest/build.gradle @@ -1,8 +1,8 @@ +ext.testingInstrumentation = true + apply from: "$rootDir/gradle/java.gradle" apply plugin: 'scala' -ext.testingInstrumentation = true - muzzle { pass { group = 'org.scalatest' diff --git a/dd-java-agent/instrumentation/selenium/build.gradle b/dd-java-agent/instrumentation/selenium/build.gradle index 4d12260c71f..b40bca0d970 100644 --- a/dd-java-agent/instrumentation/selenium/build.gradle +++ b/dd-java-agent/instrumentation/selenium/build.gradle @@ -4,12 +4,11 @@ plugins { ext { latestDepTestMinJavaVersionForTests = JavaVersion.VERSION_11 + testingInstrumentation = true } apply from: "$rootDir/gradle/java.gradle" -ext.testingInstrumentation = true - muzzle { pass { group = 'org.seleniumhq.selenium' diff --git a/dd-java-agent/instrumentation/testng/testng-6/build.gradle b/dd-java-agent/instrumentation/testng/testng-6/build.gradle index 6b9cf79c151..8721f9107b8 100644 --- a/dd-java-agent/instrumentation/testng/testng-6/build.gradle +++ b/dd-java-agent/instrumentation/testng/testng-6/build.gradle @@ -2,10 +2,10 @@ plugins { id 'java-test-fixtures' } -apply from: "$rootDir/gradle/java.gradle" - ext.testingInstrumentation = true +apply from: "$rootDir/gradle/java.gradle" + muzzle { pass { group = 'org.testng' diff --git a/dd-java-agent/instrumentation/testng/testng-7/build.gradle b/dd-java-agent/instrumentation/testng/testng-7/build.gradle index 4e89709f53a..ff5c8953b8c 100644 --- a/dd-java-agent/instrumentation/testng/testng-7/build.gradle +++ b/dd-java-agent/instrumentation/testng/testng-7/build.gradle @@ -5,12 +5,11 @@ plugins { ext { // testng 7.6.0+ requires Java 11 or higher. latestDepTestMinJavaVersionForTests = JavaVersion.VERSION_11 + testingInstrumentation = true } apply from: "$rootDir/gradle/java.gradle" -ext.testingInstrumentation = true - muzzle { pass { group = 'org.testng' diff --git a/dd-java-agent/instrumentation/weaver/build.gradle b/dd-java-agent/instrumentation/weaver/build.gradle index f03438ff363..fb392c43966 100644 --- a/dd-java-agent/instrumentation/weaver/build.gradle +++ b/dd-java-agent/instrumentation/weaver/build.gradle @@ -1,8 +1,8 @@ +ext.testingInstrumentation = true + apply from: "$rootDir/gradle/java.gradle" apply plugin: 'scala' -ext.testingInstrumentation = true - muzzle { pass { group = 'com.disneystreaming'