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..529e5055a06 --- /dev/null +++ b/buildSrc/src/main/kotlin/datadog.configure-tests.gradle.kts @@ -0,0 +1,155 @@ +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 + +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) +} + +// 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(forkedTestsMemoryLimit) +} + +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") +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 } + + // Enable force rerun of tests with -Prerun.tests.${project.name} + outputs.upToDateWhen { + !rootProject.providers.gradleProperty("rerun.tests.${project.name}").isPresent + } + + // Avoid executing classes used to test testing frameworks instrumentation + if (isTestingInstrumentation(project)) { + exclude("**/TestAssumption*", "**/TestSuiteSetUpAssumption*") + exclude("**/TestDisableTestTrace*") + exclude("**/TestError*") + exclude("**/TestFactory*") + exclude("**/TestFailed*") + exclude("**/TestFailedWithSuccessPercentage*") + exclude("**/TestInheritance*", "**/BaseTestInheritance*") + exclude("**/TestParameterized*") + exclude("**/TestRepeated*") + exclude("**/TestSkipped*") + exclude("**/TestSkippedClass*") + exclude("**/TestSucceed*") + exclude("**/TestTemplate*") + 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 { !skipForkedTestsProvider.isPresent } + } 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)) +} + +// 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" + } + }) +} + +// 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) + } + }) +} + +// 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()) +} + +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") + } + } + + // Flaky tests management for Spock + if (skipFlakyTestsProvider.isPresent) { + jvmArgs("-Drun.flaky.tests=false") + } else if (runFlakyTestsProvider.isPresent) { + jvmArgs("-Drun.flaky.tests=true") + } +} + +// 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/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 2afd783cc8e..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 - } - } -} 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'