diff --git a/buildSrc/src/main/kotlin/dd-trace-java.conventions.java.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.conventions.java.gradle.kts index c08e13546e4..16c07866ba9 100644 --- a/buildSrc/src/main/kotlin/dd-trace-java.conventions.java.gradle.kts +++ b/buildSrc/src/main/kotlin/dd-trace-java.conventions.java.gradle.kts @@ -1,8 +1,17 @@ plugins { id("dd-trace-java.dependency-locking") - // Expose Java accessors while the convention still delegates to script plugins. java } -apply(from = rootDir.resolve("gradle/java_deps.gradle")) apply(from = rootDir.resolve("gradle/java_no_deps.gradle")) + +val libs = versionCatalogs.named("libs") +dependencies { + testImplementation(platform(libs.findLibrary("junit-bom").get())) + testImplementation(libs.findLibrary("tabletest").get()) + testImplementation(libs.findBundle("test-logging").get()) + + testRuntimeOnly(libs.findBundle("junit5").get()) + testRuntimeOnly(libs.findBundle("junit-platform").get()) + testRuntimeOnly(libs.findLibrary("mokito-core").get()) +} diff --git a/buildSrc/src/main/kotlin/dd-trace-java.conventions.testing.groovy.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.conventions.testing.groovy.gradle.kts new file mode 100644 index 00000000000..062daca232a --- /dev/null +++ b/buildSrc/src/main/kotlin/dd-trace-java.conventions.testing.groovy.gradle.kts @@ -0,0 +1,15 @@ +/** + * Adds Groovy/Spock test support and CodeNarc. Apply alongside `dd-trace-java.conventions.java`, + * which provides the GroovyCompile configuration for projects with the `groovy` plugin. + */ +plugins { + groovy +} + +apply(from = rootDir.resolve("gradle/codenarc.gradle")) + +val libs = versionCatalogs.named("libs") +dependencies { + testImplementation(libs.findBundle("spock").get()) + testImplementation(libs.findBundle("groovy").get()) +} diff --git a/buildSrc/src/main/kotlin/dd-trace-java.module.annotation-processor.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.module.annotation-processor.gradle.kts index 10e5514f683..d3cd7dc7d33 100644 --- a/buildSrc/src/main/kotlin/dd-trace-java.module.annotation-processor.gradle.kts +++ b/buildSrc/src/main/kotlin/dd-trace-java.module.annotation-processor.gradle.kts @@ -1,3 +1,4 @@ plugins { id("dd-trace-java.conventions.java") + id("dd-trace-java.conventions.testing.groovy") } diff --git a/buildSrc/src/main/kotlin/dd-trace-java.module.bootstrap-component.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.module.bootstrap-component.gradle.kts index 10e5514f683..d3cd7dc7d33 100644 --- a/buildSrc/src/main/kotlin/dd-trace-java.module.bootstrap-component.gradle.kts +++ b/buildSrc/src/main/kotlin/dd-trace-java.module.bootstrap-component.gradle.kts @@ -1,3 +1,4 @@ plugins { id("dd-trace-java.conventions.java") + id("dd-trace-java.conventions.testing.groovy") } diff --git a/buildSrc/src/main/kotlin/dd-trace-java.module.distributable.api.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.module.distributable.api.gradle.kts index dfd3f517486..0610ad3f3ec 100644 --- a/buildSrc/src/main/kotlin/dd-trace-java.module.distributable.api.gradle.kts +++ b/buildSrc/src/main/kotlin/dd-trace-java.module.distributable.api.gradle.kts @@ -1,5 +1,6 @@ plugins { id("dd-trace-java.conventions.java") + id("dd-trace-java.conventions.testing.groovy") } apply(from = rootDir.resolve("gradle/publish.gradle")) diff --git a/buildSrc/src/main/kotlin/dd-trace-java.module.instrumentation.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.module.instrumentation.gradle.kts index ad4f117ce52..12e4aad997b 100644 --- a/buildSrc/src/main/kotlin/dd-trace-java.module.instrumentation.gradle.kts +++ b/buildSrc/src/main/kotlin/dd-trace-java.module.instrumentation.gradle.kts @@ -2,6 +2,7 @@ import datadog.gradle.plugin.instrument.BuildTimeInstrumentationExtension plugins { id("dd-trace-java.conventions.java") + id("dd-trace-java.conventions.testing.groovy") id("dd-trace-java.conventions.forbidden-apis") } diff --git a/buildSrc/src/main/kotlin/dd-trace-java.module.internal-library.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.module.internal-library.gradle.kts index 10e5514f683..d3cd7dc7d33 100644 --- a/buildSrc/src/main/kotlin/dd-trace-java.module.internal-library.gradle.kts +++ b/buildSrc/src/main/kotlin/dd-trace-java.module.internal-library.gradle.kts @@ -1,3 +1,4 @@ plugins { id("dd-trace-java.conventions.java") + id("dd-trace-java.conventions.testing.groovy") } diff --git a/buildSrc/src/main/kotlin/dd-trace-java.module.platform-component.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.module.platform-component.gradle.kts index 10e5514f683..d3cd7dc7d33 100644 --- a/buildSrc/src/main/kotlin/dd-trace-java.module.platform-component.gradle.kts +++ b/buildSrc/src/main/kotlin/dd-trace-java.module.platform-component.gradle.kts @@ -1,3 +1,4 @@ plugins { id("dd-trace-java.conventions.java") + id("dd-trace-java.conventions.testing.groovy") } diff --git a/buildSrc/src/main/kotlin/dd-trace-java.module.product-library.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.module.product-library.gradle.kts index 10e5514f683..d3cd7dc7d33 100644 --- a/buildSrc/src/main/kotlin/dd-trace-java.module.product-library.gradle.kts +++ b/buildSrc/src/main/kotlin/dd-trace-java.module.product-library.gradle.kts @@ -1,3 +1,4 @@ plugins { id("dd-trace-java.conventions.java") + id("dd-trace-java.conventions.testing.groovy") } diff --git a/buildSrc/src/main/kotlin/dd-trace-java.module.product-subsystem.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.module.product-subsystem.gradle.kts index 10e5514f683..d3cd7dc7d33 100644 --- a/buildSrc/src/main/kotlin/dd-trace-java.module.product-subsystem.gradle.kts +++ b/buildSrc/src/main/kotlin/dd-trace-java.module.product-subsystem.gradle.kts @@ -1,3 +1,4 @@ plugins { id("dd-trace-java.conventions.java") + id("dd-trace-java.conventions.testing.groovy") } diff --git a/buildSrc/src/main/kotlin/dd-trace-java.module.smoke-test.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.module.smoke-test.gradle.kts index 10e5514f683..d3cd7dc7d33 100644 --- a/buildSrc/src/main/kotlin/dd-trace-java.module.smoke-test.gradle.kts +++ b/buildSrc/src/main/kotlin/dd-trace-java.module.smoke-test.gradle.kts @@ -1,3 +1,4 @@ plugins { id("dd-trace-java.conventions.java") + id("dd-trace-java.conventions.testing.groovy") } diff --git a/buildSrc/src/main/kotlin/dd-trace-java.module.testing-support.gradle.kts b/buildSrc/src/main/kotlin/dd-trace-java.module.testing-support.gradle.kts index 10e5514f683..d3cd7dc7d33 100644 --- a/buildSrc/src/main/kotlin/dd-trace-java.module.testing-support.gradle.kts +++ b/buildSrc/src/main/kotlin/dd-trace-java.module.testing-support.gradle.kts @@ -1,3 +1,4 @@ plugins { id("dd-trace-java.conventions.java") + id("dd-trace-java.conventions.testing.groovy") } diff --git a/dd-java-agent/benchmark-integration/build.gradle b/dd-java-agent/benchmark-integration/build.gradle index 01c13633e36..a55b24c530b 100644 --- a/dd-java-agent/benchmark-integration/build.gradle +++ b/dd-java-agent/benchmark-integration/build.gradle @@ -1,5 +1,6 @@ plugins { id 'dd-trace-java.conventions.java' + id 'dd-trace-java.conventions.testing.groovy' } description = 'Integration Level Agent benchmarks.' diff --git a/dd-java-agent/benchmark-integration/jetty-perftest/build.gradle b/dd-java-agent/benchmark-integration/jetty-perftest/build.gradle index 37f757ec933..149231604f2 100644 --- a/dd-java-agent/benchmark-integration/jetty-perftest/build.gradle +++ b/dd-java-agent/benchmark-integration/jetty-perftest/build.gradle @@ -1,6 +1,7 @@ plugins { id 'com.gradleup.shadow' id 'dd-trace-java.conventions.java' + id 'dd-trace-java.conventions.testing.groovy' } dependencies { diff --git a/dd-java-agent/benchmark-integration/play-perftest/build.gradle b/dd-java-agent/benchmark-integration/play-perftest/build.gradle index 6ba28f62bba..03d67ca12ef 100644 --- a/dd-java-agent/benchmark-integration/play-perftest/build.gradle +++ b/dd-java-agent/benchmark-integration/play-perftest/build.gradle @@ -1,6 +1,7 @@ plugins { id 'com.gradleup.shadow' id 'dd-trace-java.conventions.java' + id 'dd-trace-java.conventions.testing.groovy' id 'org.gradle.playframework' } diff --git a/dd-java-agent/benchmark/build.gradle b/dd-java-agent/benchmark/build.gradle index 213da29f278..a2d5d4a1ce3 100644 --- a/dd-java-agent/benchmark/build.gradle +++ b/dd-java-agent/benchmark/build.gradle @@ -1,6 +1,7 @@ plugins { id 'dd-trace-java.jmh-conventions' id 'dd-trace-java.conventions.java' + id 'dd-trace-java.conventions.testing.groovy' } dependencies { diff --git a/dd-java-agent/build.gradle b/dd-java-agent/build.gradle index 34ce8976948..50c71d8ed4d 100644 --- a/dd-java-agent/build.gradle +++ b/dd-java-agent/build.gradle @@ -8,6 +8,7 @@ import java.util.jar.JarFile plugins { id 'com.gradleup.shadow' id 'dd-trace-java.conventions.java' + id 'dd-trace-java.conventions.testing.groovy' } description = 'dd-java-agent' diff --git a/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/src/baseTest/java/datadog/trace/instrumentation/akkahttp/appsec/UnmarshallerHelpersBlockFailureTest.java b/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/src/baseTest/java/datadog/trace/instrumentation/akkahttp/appsec/UnmarshallerHelpersBlockFailureTest.java index 900ac26de42..19798efb1f5 100644 --- a/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/src/baseTest/java/datadog/trace/instrumentation/akkahttp/appsec/UnmarshallerHelpersBlockFailureTest.java +++ b/dd-java-agent/instrumentation/akka/akka-http/akka-http-10.0/src/baseTest/java/datadog/trace/instrumentation/akkahttp/appsec/UnmarshallerHelpersBlockFailureTest.java @@ -21,8 +21,8 @@ /** * Covers the {@code UnmarshallerHelpers.tryBlock() -> AppSecContext.reportBlockFailure()} path. * Hand-written test doubles are used because Mockito is only on this module's test runtime - * classpath, not its test compile classpath (see {@code gradle/java_deps.gradle}: {@code - * testRuntimeOnly libs.mokito.core}). + * classpath, not its test compile classpath (see the {@code dd-trace-java.conventions.java} + * convention's {@code testRuntimeOnly} dependency on {@code mokito-core}). */ class UnmarshallerHelpersBlockFailureTest { diff --git a/dd-java-agent/instrumentation/tibco-businessworks/tibco-businessworks-stubs/build.gradle b/dd-java-agent/instrumentation/tibco-businessworks/tibco-businessworks-stubs/build.gradle index 444318a6e88..78bb3eb66ef 100644 --- a/dd-java-agent/instrumentation/tibco-businessworks/tibco-businessworks-stubs/build.gradle +++ b/dd-java-agent/instrumentation/tibco-businessworks/tibco-businessworks-stubs/build.gradle @@ -1,3 +1,4 @@ plugins { id 'dd-trace-java.conventions.java' + id 'dd-trace-java.conventions.testing.groovy' } diff --git a/dd-java-agent/instrumentation/vertx/vertx-redis-client/vertx-redis-client-stubs/build.gradle b/dd-java-agent/instrumentation/vertx/vertx-redis-client/vertx-redis-client-stubs/build.gradle index dcf9c400107..8089615afa0 100644 --- a/dd-java-agent/instrumentation/vertx/vertx-redis-client/vertx-redis-client-stubs/build.gradle +++ b/dd-java-agent/instrumentation/vertx/vertx-redis-client/vertx-redis-client-stubs/build.gradle @@ -1,5 +1,6 @@ plugins { id 'dd-trace-java.conventions.java' + id 'dd-trace-java.conventions.testing.groovy' } dependencies { diff --git a/dd-java-agent/load-generator/build.gradle b/dd-java-agent/load-generator/build.gradle index 3a7e2b7df48..86ae3ebaaf5 100644 --- a/dd-java-agent/load-generator/build.gradle +++ b/dd-java-agent/load-generator/build.gradle @@ -1,5 +1,6 @@ plugins { id 'dd-trace-java.conventions.java' + id 'dd-trace-java.conventions.testing.groovy' } dependencies { diff --git a/gradle/java_deps.gradle b/gradle/java_deps.gradle deleted file mode 100644 index 19a0e517e60..00000000000 --- a/gradle/java_deps.gradle +++ /dev/null @@ -1,15 +0,0 @@ -apply plugin: 'groovy' - -dependencies { - testImplementation platform(libs.junit.bom) - testImplementation libs.bundles.spock - testImplementation libs.bundles.groovy - testImplementation libs.tabletest - - testImplementation libs.bundles.test.logging - - // JUnit and Mockito compatible with Spock 2.4.0 - testRuntimeOnly libs.bundles.junit5 - testRuntimeOnly libs.bundles.junit.platform - testRuntimeOnly libs.mokito.core -} diff --git a/gradle/java_no_deps.gradle b/gradle/java_no_deps.gradle index f558fc04fb4..b9f2a81671d 100644 --- a/gradle/java_no_deps.gradle +++ b/gradle/java_no_deps.gradle @@ -13,7 +13,6 @@ apply plugin: 'dd-trace-java.test-jvm-constraints' apply plugin: 'dd-trace-java.conventions.forbidden-apis' apply plugin: 'dd-trace-java.conventions.spotbugs' -apply from: "$rootDir/gradle/codenarc.gradle" apply from: "$rootDir/gradle/spotless.gradle" apply from: "$rootDir/gradle/repositories.gradle" apply from: "$rootDir/gradle/test-suites.gradle" diff --git a/gradle/spotless.gradle b/gradle/spotless.gradle index cb7aaa4d3f8..92e26ad434f 100644 --- a/gradle/spotless.gradle +++ b/gradle/spotless.gradle @@ -14,7 +14,7 @@ boolean forbidLegacyScriptApplies = project.rootProject.name == 'dd-trace-java' def legacyScriptApplyLinePattern = ~/^\s*(?:\w+\.)?apply(?:\s+from\s*:|\s*\(\s*from\s*=).*/ // Script plugins that must be replaced by their corresponding convention plugins. def forbiddenScriptApplies = [ - 'gradle/java.gradle' : 'Apply the \'dd-trace-java.conventions.java\' convention plugin instead of applying the script plugin \'gradle/java.gradle\' directly.', + 'gradle/java.gradle' : 'Apply the \'dd-trace-java.conventions.java\' and \'dd-trace-java.conventions.testing.groovy\' convention plugins instead of applying the script plugin \'gradle/java.gradle\' directly.', 'gradle/publish.gradle': 'Apply the \'dd-trace-java.module.distributable.*\' convention plugin instead of applying the script plugin \'gradle/publish.gradle\' directly.', ] def forbidLegacyScriptApplyStep = { String text -> diff --git a/internal-api/build.gradle.kts b/internal-api/build.gradle.kts index 7e113cb60f5..37a46c35b28 100644 --- a/internal-api/build.gradle.kts +++ b/internal-api/build.gradle.kts @@ -289,7 +289,6 @@ dependencies { testImplementation(project(":utils:test-utils")) testImplementation(libs.bundles.junit5) testImplementation(libs.assertj.core) - testImplementation("org.junit.vintage:junit-vintage-engine:${libs.versions.junit5.get()}") testImplementation(libs.commons.math) testImplementation(libs.bundles.mockito) testImplementation(libs.jol.core) diff --git a/internal-api/gradle.lockfile b/internal-api/gradle.lockfile index a9e4b3de0d4..06f786e8de1 100644 --- a/internal-api/gradle.lockfile +++ b/internal-api/gradle.lockfile @@ -6,27 +6,21 @@ ch.qos.logback:logback-classic:1.2.13=jmhRuntimeClasspath,testCompileClasspath,t ch.qos.logback:logback-core:1.2.13=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath com.datadoghq:dd-instrument-java:0.0.6=jmhRuntimeClasspath,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath com.datadoghq:dd-javac-plugin-client:0.2.2=compileClasspath,jmhCompileClasspath,jmhRuntimeClasspath,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -com.github.javaparser:javaparser-core:3.25.6=codenarc com.github.spotbugs:spotbugs-annotations:4.10.4=compileClasspath,jmhCompileClasspath,spotbugs com.github.spotbugs:spotbugs:4.10.4=spotbugs com.github.stephenc.jcip:jcip-annotations:1.0-1=spotbugs com.google.code.findbugs:jsr305:3.0.2=compileClasspath,jmhCompileClasspath,jmhRuntimeClasspath,spotbugs,testCompileClasspath,testRuntimeClasspath com.google.code.gson:gson:2.14.0=spotbugs com.google.errorprone:error_prone_annotations:2.48.0=spotbugs -com.thoughtworks.qdox:qdox:1.12.1=codenarc commons-fileupload:commons-fileupload:1.5=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath commons-io:commons-io:2.11.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath commons-io:commons-io:2.21.0=spotbugs de.thetaphi:forbiddenapis:3.11=compileClasspath,jmhCompileClasspath,jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -io.leangen.geantyref:geantyref:1.3.16=jmhRuntimeClasspath,testRuntimeClasspath jaxen:jaxen:2.0.6=spotbugs -junit:junit:4.13.2=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy-agent:1.18.12=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.12=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath net.sf.jopt-simple:jopt-simple:5.0.4=jmh,jmhCompileClasspath,jmhRuntimeClasspath net.sf.saxon:Saxon-HE:12.10=spotbugs -org.apache.ant:ant-antlr:1.10.14=codenarc -org.apache.ant:ant-junit:1.10.14=codenarc org.apache.bcel:bcel:6.12.0=spotbugs org.apache.commons:commons-lang3:3.20.0=spotbugs org.apache.commons:commons-math3:3.2=testCompileClasspath,testRuntimeClasspath @@ -36,20 +30,7 @@ org.apache.logging.log4j:log4j-api:2.26.1=spotbugs org.apache.logging.log4j:log4j-core:2.26.1=spotbugs org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath org.assertj:assertj-core:3.27.7=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-ant:3.0.23=codenarc -org.codehaus.groovy:groovy-docgenerator:3.0.23=codenarc -org.codehaus.groovy:groovy-groovydoc:3.0.23=codenarc -org.codehaus.groovy:groovy-json:3.0.23=codenarc -org.codehaus.groovy:groovy-json:3.0.25=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-templates:3.0.23=codenarc -org.codehaus.groovy:groovy-xml:3.0.23=codenarc -org.codehaus.groovy:groovy:3.0.23=codenarc -org.codehaus.groovy:groovy:3.0.25=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.codenarc:CodeNarc:3.7.0=codenarc org.dom4j:dom4j:2.2.0=spotbugs -org.gmetrics:GMetrics:2.1.0=codenarc -org.hamcrest:hamcrest-core:1.3=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.hamcrest:hamcrest:3.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.jacoco:org.jacoco.agent:0.8.15=jacocoAgent,jacocoAnt org.jacoco:org.jacoco.ant:0.8.15=jacocoAnt org.jacoco:org.jacoco.core:0.8.15=jacocoAnt @@ -59,13 +40,12 @@ org.junit.jupiter:junit-jupiter-engine:5.14.1=jmhRuntimeClasspath,testRuntimeCla org.junit.jupiter:junit-jupiter-params:5.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter:5.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.platform:junit-platform-commons:1.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-engine:1.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-engine:1.14.1=jmhRuntimeClasspath,testRuntimeClasspath org.junit.platform:junit-platform-launcher:1.14.1=jmhRuntimeClasspath,testRuntimeClasspath -org.junit.vintage:junit-vintage-engine:5.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit:junit-bom:5.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.mockito:mockito-core:4.4.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.mockito:mockito-junit-jupiter:4.4.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.objenesis:objenesis:3.3=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.objenesis:objenesis:3.2=jmhRuntimeClasspath,testRuntimeClasspath org.openjdk.jmh:jmh-core:1.37=jmh,jmhCompileClasspath,jmhRuntimeClasspath org.openjdk.jmh:jmh-generator-asm:1.37=jmh,jmhCompileClasspath,jmhRuntimeClasspath org.openjdk.jmh:jmh-generator-bytecode:1.37=jmh,jmhCompileClasspath,jmhRuntimeClasspath @@ -87,8 +67,6 @@ org.slf4j:slf4j-api:2.0.17=spotbugsSlf4j org.slf4j:slf4j-api:2.0.18=spotbugs org.slf4j:slf4j-simple:2.0.17=spotbugsSlf4j org.snakeyaml:snakeyaml-engine:2.9=jmhRuntimeClasspath,runtimeClasspath,testCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath -org.spockframework:spock-bom:2.4-groovy-3.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.spockframework:spock-core:2.4-groovy-3.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.tabletest:tabletest-junit:1.2.2=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.tabletest:tabletest-parser:1.2.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.xmlresolver:xmlresolver:5.3.3=spotbugs diff --git a/internal-api/internal-api-9/build.gradle.kts b/internal-api/internal-api-9/build.gradle.kts index 47ede220d8b..533565396f7 100644 --- a/internal-api/internal-api-9/build.gradle.kts +++ b/internal-api/internal-api-9/build.gradle.kts @@ -24,12 +24,10 @@ tasks.withType().configureEach { javadocTool = javaToolchains.javadocToolFor(java.toolchain) } -listOf(JavaCompile::class.java, GroovyCompile::class.java).forEach { compileTaskType -> - tasks.withType(compileTaskType).configureEach { - // These implementations are selected only on Java 9+, so they can target Java 9 and restore - // --release after confirming no project output must be loaded during Java 8 discovery. - configureCompiler(JavaVersion.VERSION_1_8, "Uses Java 9+ APIs (StackWalker, ProcessHandle, Module) at Java 8 bytecode") - } +tasks.withType().configureEach { + // These implementations are selected only on Java 9+, so they can target Java 9 and restore + // --release after confirming no project output must be loaded during Java 8 discovery. + configureCompiler(JavaVersion.VERSION_1_8, "Uses Java 9+ APIs (StackWalker, ProcessHandle, Module) at Java 8 bytecode") } extra["minimumBranchCoverage"] = 0.8 diff --git a/internal-api/internal-api-9/gradle.lockfile b/internal-api/internal-api-9/gradle.lockfile index a0f126c5923..a458d3b0628 100644 --- a/internal-api/internal-api-9/gradle.lockfile +++ b/internal-api/internal-api-9/gradle.lockfile @@ -13,7 +13,6 @@ com.datadoghq:dd-instrument-java:0.0.6=jmhRuntimeClasspath,runtimeClasspath,test com.datadoghq:dd-javac-plugin-client:0.2.2=compileClasspath,jmhCompileClasspath,jmhRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.datadoghq:java-dogstatsd-client:4.4.5=jmhRuntimeClasspath,testRuntimeClasspath com.datadoghq:sketches-java:0.8.3=jmhRuntimeClasspath,testRuntimeClasspath -com.github.javaparser:javaparser-core:3.25.6=codenarc com.github.jnr:jffi:1.3.15=jmhRuntimeClasspath,testRuntimeClasspath com.github.jnr:jnr-a64asm:1.0.0=jmhRuntimeClasspath,testRuntimeClasspath com.github.jnr:jnr-constants:0.10.4=jmhRuntimeClasspath,testRuntimeClasspath @@ -38,12 +37,10 @@ com.squareup.moshi:moshi:1.11.0=jmhRuntimeClasspath,testCompileClasspath,testRun com.squareup.okhttp3:logging-interceptor:3.12.12=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath com.squareup.okhttp3:okhttp:3.12.12=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath com.squareup.okio:okio:1.17.5=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -com.thoughtworks.qdox:qdox:1.12.1=codenarc commons-fileupload:commons-fileupload:1.5=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath commons-io:commons-io:2.11.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath commons-io:commons-io:2.21.0=spotbugs de.thetaphi:forbiddenapis:3.11=compileClasspath,jmhCompileClasspath,jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -io.leangen.geantyref:geantyref:1.3.16=jmhRuntimeClasspath,testRuntimeClasspath io.sqreen:libsqreen:17.6.0=jmhRuntimeClasspath,testRuntimeClasspath javax.servlet:javax.servlet-api:3.1.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath jaxen:jaxen:2.0.6=spotbugs @@ -54,8 +51,6 @@ net.java.dev.jna:jna-platform:5.8.0=jmhRuntimeClasspath,testRuntimeClasspath net.java.dev.jna:jna:5.8.0=jmhRuntimeClasspath,testRuntimeClasspath net.sf.jopt-simple:jopt-simple:5.0.4=jmh,jmhCompileClasspath,jmhRuntimeClasspath net.sf.saxon:Saxon-HE:12.10=spotbugs -org.apache.ant:ant-antlr:1.10.14=codenarc -org.apache.ant:ant-junit:1.10.14=codenarc org.apache.bcel:bcel:6.12.0=spotbugs org.apache.commons:commons-lang3:3.20.0=spotbugs org.apache.commons:commons-math3:3.6.1=jmh,jmhCompileClasspath,jmhRuntimeClasspath @@ -63,20 +58,8 @@ org.apache.commons:commons-text:1.15.0=spotbugs org.apache.logging.log4j:log4j-api:2.26.1=spotbugs org.apache.logging.log4j:log4j-core:2.26.1=spotbugs org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath -org.codehaus.groovy:groovy-ant:3.0.23=codenarc -org.codehaus.groovy:groovy-docgenerator:3.0.23=codenarc -org.codehaus.groovy:groovy-groovydoc:3.0.23=codenarc -org.codehaus.groovy:groovy-json:3.0.23=codenarc -org.codehaus.groovy:groovy-json:3.0.25=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.codehaus.groovy:groovy-templates:3.0.23=codenarc -org.codehaus.groovy:groovy-xml:3.0.23=codenarc -org.codehaus.groovy:groovy:3.0.23=codenarc -org.codehaus.groovy:groovy:3.0.25=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.codenarc:CodeNarc:3.7.0=codenarc org.dom4j:dom4j:2.2.0=spotbugs -org.gmetrics:GMetrics:2.1.0=codenarc org.hamcrest:hamcrest-core:1.3=jmhRuntimeClasspath,testRuntimeClasspath -org.hamcrest:hamcrest:3.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.jacoco:org.jacoco.agent:0.8.15=jacocoAgent,jacocoAnt org.jacoco:org.jacoco.ant:0.8.15=jacocoAnt org.jacoco:org.jacoco.core:0.8.15=jacocoAnt @@ -89,14 +72,14 @@ org.junit.jupiter:junit-jupiter-engine:5.14.1=jmhRuntimeClasspath,testRuntimeCla org.junit.jupiter:junit-jupiter-params:5.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter:5.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.platform:junit-platform-commons:1.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-engine:1.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-engine:1.14.1=jmhRuntimeClasspath,testRuntimeClasspath org.junit.platform:junit-platform-launcher:1.14.1=jmhRuntimeClasspath,testRuntimeClasspath org.junit.platform:junit-platform-runner:1.14.1=jmhRuntimeClasspath,testRuntimeClasspath org.junit.platform:junit-platform-suite-api:1.14.1=jmhRuntimeClasspath,testRuntimeClasspath org.junit.platform:junit-platform-suite-commons:1.14.1=jmhRuntimeClasspath,testRuntimeClasspath org.junit:junit-bom:5.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.mockito:mockito-core:4.4.0=jmhRuntimeClasspath,testRuntimeClasspath -org.objenesis:objenesis:3.3=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.objenesis:objenesis:3.2=jmhRuntimeClasspath,testRuntimeClasspath org.openjdk.jmh:jmh-core:1.37=jmh,jmhCompileClasspath,jmhRuntimeClasspath org.openjdk.jmh:jmh-generator-asm:1.37=jmh,jmhCompileClasspath,jmhRuntimeClasspath org.openjdk.jmh:jmh-generator-bytecode:1.37=jmh,jmhCompileClasspath,jmhRuntimeClasspath @@ -121,8 +104,6 @@ org.slf4j:slf4j-api:2.0.17=spotbugsSlf4j org.slf4j:slf4j-api:2.0.18=spotbugs org.slf4j:slf4j-simple:2.0.17=spotbugsSlf4j org.snakeyaml:snakeyaml-engine:2.9=jmhRuntimeClasspath,runtimeClasspath,testRuntimeClasspath -org.spockframework:spock-bom:2.4-groovy-3.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.spockframework:spock-core:2.4-groovy-3.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.tabletest:tabletest-junit:1.2.2=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.tabletest:tabletest-parser:1.2.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.xmlresolver:xmlresolver:5.3.3=spotbugs diff --git a/internal-api/src/test/java/datadog/trace/api/TagMapEntryTest.java b/internal-api/src/test/java/datadog/trace/api/TagMapEntryTest.java index e7c483e80ec..8ec3bd68c3a 100644 --- a/internal-api/src/test/java/datadog/trace/api/TagMapEntryTest.java +++ b/internal-api/src/test/java/datadog/trace/api/TagMapEntryTest.java @@ -1,9 +1,9 @@ package datadog.trace.api; -import static org.junit.Assert.assertSame; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertTrue; import datadog.trace.api.TagMap.Entry; diff --git a/products/metrics/metrics-api/gradle.lockfile b/products/metrics/metrics-api/gradle.lockfile index 8e6dfda4965..ff958e19e42 100644 --- a/products/metrics/metrics-api/gradle.lockfile +++ b/products/metrics/metrics-api/gradle.lockfile @@ -14,7 +14,6 @@ com.google.errorprone:error_prone_annotations:2.48.0=spotbugs com.thoughtworks.qdox:qdox:1.12.1=codenarc commons-io:commons-io:2.21.0=spotbugs de.thetaphi:forbiddenapis:3.11=compileClasspath,jmhCompileClasspath -io.leangen.geantyref:geantyref:1.3.16=jmhRuntimeClasspath,testRuntimeClasspath jaxen:jaxen:2.0.6=spotbugs net.bytebuddy:byte-buddy-agent:1.18.12=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy:1.18.12=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -33,15 +32,12 @@ org.codehaus.groovy:groovy-ant:3.0.23=codenarc org.codehaus.groovy:groovy-docgenerator:3.0.23=codenarc org.codehaus.groovy:groovy-groovydoc:3.0.23=codenarc org.codehaus.groovy:groovy-json:3.0.23=codenarc -org.codehaus.groovy:groovy-json:3.0.25=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.codehaus.groovy:groovy-templates:3.0.23=codenarc org.codehaus.groovy:groovy-xml:3.0.23=codenarc org.codehaus.groovy:groovy:3.0.23=codenarc -org.codehaus.groovy:groovy:3.0.25=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.codenarc:CodeNarc:3.7.0=codenarc org.dom4j:dom4j:2.2.0=spotbugs org.gmetrics:GMetrics:2.1.0=codenarc -org.hamcrest:hamcrest:3.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.jacoco:org.jacoco.agent:0.8.15=jacocoAgent,jacocoAnt org.jacoco:org.jacoco.ant:0.8.15=jacocoAnt org.jacoco:org.jacoco.core:0.8.15=jacocoAnt @@ -51,12 +47,12 @@ org.junit.jupiter:junit-jupiter-engine:5.14.1=jmhRuntimeClasspath,testRuntimeCla org.junit.jupiter:junit-jupiter-params:5.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter:5.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.platform:junit-platform-commons:1.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-engine:1.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-engine:1.14.1=jmhRuntimeClasspath,testRuntimeClasspath org.junit.platform:junit-platform-launcher:1.14.1=jmhRuntimeClasspath,testRuntimeClasspath org.junit:junit-bom:5.14.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.mockito:mockito-core:4.4.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.mockito:mockito-junit-jupiter:4.4.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.objenesis:objenesis:3.3=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath +org.objenesis:objenesis:3.2=jmhRuntimeClasspath,testRuntimeClasspath org.openjdk.jmh:jmh-core:1.37=jmh,jmhCompileClasspath,jmhRuntimeClasspath org.openjdk.jmh:jmh-generator-asm:1.37=jmh,jmhCompileClasspath,jmhRuntimeClasspath org.openjdk.jmh:jmh-generator-bytecode:1.37=jmh,jmhCompileClasspath,jmhRuntimeClasspath @@ -77,8 +73,6 @@ org.slf4j:slf4j-api:1.7.32=jmhRuntimeClasspath,testCompileClasspath,testRuntimeC org.slf4j:slf4j-api:2.0.17=spotbugsSlf4j org.slf4j:slf4j-api:2.0.18=spotbugs org.slf4j:slf4j-simple:2.0.17=spotbugsSlf4j -org.spockframework:spock-bom:2.4-groovy-3.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath -org.spockframework:spock-core:2.4-groovy-3.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.tabletest:tabletest-junit:1.2.2=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.tabletest:tabletest-parser:1.2.1=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath org.xmlresolver:xmlresolver:5.3.3=spotbugs diff --git a/remote-config/remote-config-api/gradle.lockfile b/remote-config/remote-config-api/gradle.lockfile index 6874f76cee7..a230bcf6413 100644 --- a/remote-config/remote-config-api/gradle.lockfile +++ b/remote-config/remote-config-api/gradle.lockfile @@ -14,7 +14,6 @@ com.google.errorprone:error_prone_annotations:2.48.0=spotbugs com.thoughtworks.qdox:qdox:1.12.1=codenarc commons-io:commons-io:2.21.0=spotbugs de.thetaphi:forbiddenapis:3.11=compileClasspath -io.leangen.geantyref:geantyref:1.3.16=testRuntimeClasspath jaxen:jaxen:2.0.6=spotbugs net.bytebuddy:byte-buddy-agent:1.12.8=testRuntimeClasspath net.bytebuddy:byte-buddy:1.12.8=testRuntimeClasspath @@ -31,15 +30,12 @@ org.codehaus.groovy:groovy-ant:3.0.23=codenarc org.codehaus.groovy:groovy-docgenerator:3.0.23=codenarc org.codehaus.groovy:groovy-groovydoc:3.0.23=codenarc org.codehaus.groovy:groovy-json:3.0.23=codenarc -org.codehaus.groovy:groovy-json:3.0.25=testCompileClasspath,testRuntimeClasspath org.codehaus.groovy:groovy-templates:3.0.23=codenarc org.codehaus.groovy:groovy-xml:3.0.23=codenarc org.codehaus.groovy:groovy:3.0.23=codenarc -org.codehaus.groovy:groovy:3.0.25=testCompileClasspath,testRuntimeClasspath org.codenarc:CodeNarc:3.7.0=codenarc org.dom4j:dom4j:2.2.0=spotbugs org.gmetrics:GMetrics:2.1.0=codenarc -org.hamcrest:hamcrest:3.0=testCompileClasspath,testRuntimeClasspath org.jacoco:org.jacoco.agent:0.8.15=jacocoAgent,jacocoAnt org.jacoco:org.jacoco.ant:0.8.15=jacocoAnt org.jacoco:org.jacoco.core:0.8.15=jacocoAnt @@ -49,11 +45,11 @@ org.junit.jupiter:junit-jupiter-engine:5.14.1=testRuntimeClasspath org.junit.jupiter:junit-jupiter-params:5.14.1=testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter:5.14.1=testCompileClasspath,testRuntimeClasspath org.junit.platform:junit-platform-commons:1.14.1=testCompileClasspath,testRuntimeClasspath -org.junit.platform:junit-platform-engine:1.14.1=testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-engine:1.14.1=testRuntimeClasspath org.junit.platform:junit-platform-launcher:1.14.1=testRuntimeClasspath org.junit:junit-bom:5.14.1=testCompileClasspath,testRuntimeClasspath org.mockito:mockito-core:4.4.0=testRuntimeClasspath -org.objenesis:objenesis:3.3=testCompileClasspath,testRuntimeClasspath +org.objenesis:objenesis:3.2=testRuntimeClasspath org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testRuntimeClasspath org.ow2.asm:asm-analysis:9.10.1=spotbugs org.ow2.asm:asm-commons:9.10.1=jacocoAnt,spotbugs @@ -67,8 +63,6 @@ org.slf4j:slf4j-api:1.7.32=testCompileClasspath,testRuntimeClasspath org.slf4j:slf4j-api:2.0.17=spotbugsSlf4j org.slf4j:slf4j-api:2.0.18=spotbugs org.slf4j:slf4j-simple:2.0.17=spotbugsSlf4j -org.spockframework:spock-bom:2.4-groovy-3.0=testCompileClasspath,testRuntimeClasspath -org.spockframework:spock-core:2.4-groovy-3.0=testCompileClasspath,testRuntimeClasspath org.tabletest:tabletest-junit:1.2.2=testCompileClasspath,testRuntimeClasspath org.tabletest:tabletest-parser:1.2.1=testCompileClasspath,testRuntimeClasspath org.xmlresolver:xmlresolver:5.3.3=spotbugs diff --git a/utils/test-utils/src/main/java/datadog/trace/test/util/ThreadUtils.java b/utils/test-utils/src/main/java/datadog/trace/test/util/ThreadUtils.java index 8439c2c038a..8ec2bd97138 100644 --- a/utils/test-utils/src/main/java/datadog/trace/test/util/ThreadUtils.java +++ b/utils/test-utils/src/main/java/datadog/trace/test/util/ThreadUtils.java @@ -1,6 +1,5 @@ package datadog.trace.test.util; -import groovy.lang.Closure; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -38,34 +37,13 @@ public interface ThrowingRunnable { public static boolean runConcurrently( final int concurrency, final int totalInvocations, final ThrowingRunnable runnable) throws Throwable { - return runConcurrently( - concurrency, - totalInvocations, - new Closure(null) { - @Override - public Void call() { - try { - runnable.run(); - } catch (RuntimeException | Error e) { - throw e; - } catch (Throwable t) { - throw new RuntimeException(t); - } - return null; - } - }); - } - - public static boolean runConcurrently( - final int concurrency, final int totalInvocations, final Closure closure) - throws Throwable { // There is no reason in creating more threads than invocations int poolSize = Math.min(concurrency, totalInvocations); - // If we are not running anything concurrently, then just call the closure directly + // If we are not running anything concurrently, then just run the action directly if (poolSize == 1) { for (int c = 0; c < totalInvocations; c++) { - closure.call(); + runnable.run(); } return true; } @@ -85,7 +63,7 @@ public static boolean runConcurrently( startBarrier.await(); for (int c = 0; c < invocations && throwable.get() == null; c++) { try { - closure.call(); + runnable.run(); } catch (Throwable t) { throwable.compareAndSet(null, t); } diff --git a/utils/test-utils/src/test/java/datadog/trace/test/util/ThreadUtilsTest.java b/utils/test-utils/src/test/java/datadog/trace/test/util/ThreadUtilsTest.java new file mode 100644 index 00000000000..7ec2fad3674 --- /dev/null +++ b/utils/test-utils/src/test/java/datadog/trace/test/util/ThreadUtilsTest.java @@ -0,0 +1,93 @@ +package datadog.trace.test.util; + +import static datadog.trace.test.util.ThreadUtils.runConcurrently; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.util.concurrent.atomic.AtomicInteger; +import org.tabletest.junit.TableTest; + +class ThreadUtilsTest { + + @TableTest({ + "scenario | concurrency", + "sequential | 1 ", + "concurrent | 4 " + }) + void runsEveryInvocation(int concurrency) throws Throwable { + AtomicInteger count = new AtomicInteger(); + + assertTrue(runConcurrently(concurrency, 11, count::incrementAndGet)); + + assertEquals(11, count.get()); + } + + @TableTest({ + "scenario | concurrency", + "sequential | 1 ", + "concurrent | 4 " + }) + void propagatesCheckedException(int concurrency) { + IOException failure = new IOException("action failed"); + + IOException actual = + assertThrows( + IOException.class, + () -> + runConcurrently( + concurrency, + 11, + () -> { + throw failure; + })); + + assertSame(failure, actual); + } + + @TableTest({ + "scenario | concurrency", + "sequential | 1 ", + "concurrent | 4 " + }) + void propagatesRuntimeException(int concurrency) { + IllegalStateException failure = new IllegalStateException("action failed"); + + IllegalStateException actual = + assertThrows( + IllegalStateException.class, + () -> + runConcurrently( + concurrency, + 11, + () -> { + throw failure; + })); + + assertSame(failure, actual); + } + + @TableTest({ + "scenario | concurrency", + "sequential | 1 ", + "concurrent | 4 " + }) + void propagatesError(int concurrency) { + AssertionError failure = new AssertionError("action failed"); + + AssertionError actual = + assertThrows( + AssertionError.class, + () -> + runConcurrently( + concurrency, + 11, + () -> { + throw failure; + })); + + assertSame(failure, actual); + } +}