diff --git a/benchmark/benchmark.gradle b/benchmark/benchmark.gradle index 5e73e32878..28a220c34d 100644 --- a/benchmark/benchmark.gradle +++ b/benchmark/benchmark.gradle @@ -1,5 +1,6 @@ plugins { - id "me.champeau.jmh" version "0.6.2" + id "me.champeau.jmh" + id "com.github.johnrengelman.shadow" } apply from: "$rootDir/gradle/java.gradle" @@ -25,7 +26,6 @@ jmh { profilers = ['io.opentelemetry.benchmark.UsedMemoryProfiler', 'gc'] duplicateClassesStrategy = DuplicatesStrategy.EXCLUDE - jmhVersion = '1.28' // Specifies JMH version def jmhIncludeSingleClass = project.findProperty('jmhIncludeSingleClass') if (jmhIncludeSingleClass != null) { @@ -33,7 +33,9 @@ jmh { } } -tasks.jmh.dependsOn(':javaagent:shadowJar') +tasks.named('jmh').configure { + dependsOn(':javaagent:shadowJar') +} /* If using libasyncProfiler, use the following to generate nice svg flamegraphs. diff --git a/build.gradle b/build.gradle index b42fe63911..57030821ae 100644 --- a/build.gradle +++ b/build.gradle @@ -4,22 +4,22 @@ import nebula.plugin.release.git.opinion.Strategies plugins { id 'idea' - id "io.github.gradle-nexus.publish-plugin" version "1.0.0" - id "nebula.release" version "15.3.0" + id "io.github.gradle-nexus.publish-plugin" + id "nebula.release" - id 'org.gradle.test-retry' version '1.2.0' apply false + id 'org.gradle.test-retry' apply false - id 'org.unbroken-dome.test-sets' version '3.0.1' apply false - id 'com.github.ben-manes.versions' version '0.27.0' + id 'org.unbroken-dome.test-sets' apply false + id 'com.github.ben-manes.versions' - id 'com.dorongold.task-tree' version '1.5' + id 'com.dorongold.task-tree' - id "com.github.johnrengelman.shadow" version "6.1.0" apply false + id "com.github.johnrengelman.shadow" apply false - id "com.diffplug.spotless" version "5.8.2" - id "com.github.spotbugs" version "4.6.0" apply false + id "com.diffplug.spotless" + id "com.github.spotbugs" apply false - id "net.ltgt.errorprone" version "1.3.0" apply false + id "net.ltgt.errorprone" apply false } release { @@ -89,6 +89,3 @@ spotless { endWithNewline() } } - -task formatCode(dependsOn: ['spotlessApply']) -check.dependsOn 'spotlessCheck' diff --git a/buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/bytebuddy/ByteBuddyPluginConfigurator.java b/buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/bytebuddy/ByteBuddyPluginConfigurator.java index dd20258dbe..c97c1dd3a4 100644 --- a/buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/bytebuddy/ByteBuddyPluginConfigurator.java +++ b/buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/bytebuddy/ByteBuddyPluginConfigurator.java @@ -5,7 +5,6 @@ package io.opentelemetry.instrumentation.gradle.bytebuddy; -import com.google.common.collect.ImmutableList; import java.io.File; import java.util.Arrays; import java.util.List; @@ -13,6 +12,7 @@ import net.bytebuddy.build.gradle.ByteBuddySimpleTask; import net.bytebuddy.build.gradle.Transformation; import org.gradle.api.Project; import org.gradle.api.Task; +import org.gradle.api.file.FileCollection; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.compile.AbstractCompile; @@ -40,10 +40,10 @@ public class ByteBuddyPluginConfigurator { private final Project project; private final SourceSet sourceSet; private final String pluginClassName; - private final Iterable inputClasspath; + private final FileCollection inputClasspath; public ByteBuddyPluginConfigurator( - Project project, SourceSet sourceSet, String pluginClassName, Iterable inputClasspath) { + Project project, SourceSet sourceSet, String pluginClassName, FileCollection inputClasspath) { this.project = project; this.sourceSet = sourceSet; this.pluginClassName = pluginClassName; @@ -51,53 +51,62 @@ public class ByteBuddyPluginConfigurator { // add build resources dir to classpath if it's present File resourcesDir = sourceSet.getOutput().getResourcesDir(); this.inputClasspath = - resourcesDir == null - ? inputClasspath - : ImmutableList.builder() - .addAll(inputClasspath) - .add(sourceSet.getOutput().getResourcesDir()) - .build(); + resourcesDir == null ? inputClasspath : inputClasspath.plus(project.files(resourcesDir)); } public void configure() { String taskName = getTaskName(); - Task byteBuddyTask = project.getTasks().create(taskName); + Task byteBuddyTask = + project + .getTasks() + // TODO(anuraaga): Use lazy configuration to create muzzle task. + .create( + taskName, + task -> { + for (String language : LANGUAGES) { + AbstractCompile compile = getCompileTask(language); - for (String language : LANGUAGES) { - AbstractCompile compile = getCompileTask(language); + if (compile != null) { + Task languageTask = createLanguageTask(compile, taskName + language); + // We also process resources for SPI classes. + languageTask.dependsOn(sourceSet.getProcessResourcesTaskName()); + task.dependsOn(languageTask); + } + } + }); - if (compile != null) { - Task languageTask = createLanguageTask(compile, taskName + language); - // We also process resources for SPI classes. - languageTask.dependsOn(sourceSet.getProcessResourcesTaskName()); - byteBuddyTask.dependsOn(languageTask); - } - } - - project.getTasks().getByName(sourceSet.getClassesTaskName()).dependsOn(byteBuddyTask); + project + .getTasks() + .named(sourceSet.getClassesTaskName()) + .configure(task -> task.dependsOn(byteBuddyTask)); } private Task createLanguageTask(AbstractCompile compileTask, String name) { - ByteBuddySimpleTask task = project.getTasks().create(name, ByteBuddySimpleTask.class); - task.setGroup("Byte Buddy"); - task.getOutputs().cacheIf(unused -> true); + return project + .getTasks() + .create( + name, + ByteBuddySimpleTask.class, + task -> { + task.setGroup("Byte Buddy"); + task.getOutputs().cacheIf(unused -> true); - File classesDirectory = compileTask.getDestinationDir(); - File rawClassesDirectory = - new File(classesDirectory.getParent(), classesDirectory.getName() + "raw") - .getAbsoluteFile(); + File classesDirectory = compileTask.getDestinationDir(); + File rawClassesDirectory = + new File(classesDirectory.getParent(), classesDirectory.getName() + "raw") + .getAbsoluteFile(); - task.dependsOn(compileTask); - compileTask.setDestinationDir(rawClassesDirectory); + task.dependsOn(compileTask); + compileTask.setDestinationDir(rawClassesDirectory); - task.setSource(rawClassesDirectory); - task.setTarget(classesDirectory); - task.setClassPath(compileTask.getClasspath()); + task.setSource(rawClassesDirectory); + task.setTarget(classesDirectory); + task.setClassPath(compileTask.getClasspath()); - task.dependsOn(compileTask); + task.dependsOn(compileTask); - task.getTransformations().add(createTransformation(inputClasspath, pluginClassName)); - return task; + task.getTransformations().add(createTransformation(inputClasspath, pluginClassName)); + }); } private AbstractCompile getCompileTask(String language) { @@ -123,7 +132,7 @@ public class ByteBuddyPluginConfigurator { } private static Transformation createTransformation( - Iterable classPath, String pluginClassName) { + FileCollection classPath, String pluginClassName) { Transformation transformation = new ClasspathTransformation(classPath, pluginClassName); transformation.setPlugin(ClasspathByteBuddyPlugin.class); return transformation; diff --git a/gradle/instrumentation-common.gradle b/gradle/instrumentation-common.gradle index 9b170da645..d226ee027a 100644 --- a/gradle/instrumentation-common.gradle +++ b/gradle/instrumentation-common.gradle @@ -68,9 +68,14 @@ configurations { if (testLatestDeps) { afterEvaluate { - def latestDepTest = tasks.findByName('latestDepTest') - if (latestDepTest) { - tasks.test.dependsOn latestDepTest + // Try/catch seems to be the only way to access an optional task with lazy configuration API. + try { + def latestDepTest = tasks.named('latestDepTest') + tasks.named('test').configure { + dependsOn(latestDepTest) + } + } catch (UnknownDomainObjectException e) { + // Ignore } } } diff --git a/gradle/instrumentation.gradle b/gradle/instrumentation.gradle index 188ffa9156..52d182c2f4 100644 --- a/gradle/instrumentation.gradle +++ b/gradle/instrumentation.gradle @@ -80,7 +80,7 @@ configurations { testInstrumentation } -shadowJar { +tasks.named('shadowJar').configure { configurations = [project.configurations.runtimeClasspath, project.configurations.testInstrumentation] mergeServiceFiles() diff --git a/gradle/jacoco.gradle b/gradle/jacoco.gradle index 860b9cd9df..22874606b5 100644 --- a/gradle/jacoco.gradle +++ b/gradle/jacoco.gradle @@ -4,8 +4,8 @@ jacoco { toolVersion = "0.8.6" } -jacocoTestReport { - dependsOn test +tasks.named('jacocoTestReport').configure { + dependsOn('test') reports { xml.enabled true csv.enabled false @@ -30,7 +30,7 @@ project.ext.minimumBranchCoverage = 0.9 project.ext.minimumInstructionCoverage = 0.9 afterEvaluate { - tasks.withType(Test) { + tasks.withType(Test).configureEach { jacoco { // Make sure that excluded classes do not get jacoco instrumentation applied since it may confuse apm agent in some cases excludes = project.excludedClassesCoverage @@ -59,6 +59,10 @@ afterEvaluate { } } - jacocoTestCoverageVerification.dependsOn jacocoTestReport - check.dependsOn jacocoTestCoverageVerification + tasks.named('jacocoTestCoverageVerification').configure { + dependsOn('jacocoTestReport') + } + tasks.named('check').configure { + dependsOn('jacocoTestCoverageVerification') + } } diff --git a/gradle/java.gradle b/gradle/java.gradle index 4516f5714f..e3249bf5d1 100644 --- a/gradle/java.gradle +++ b/gradle/java.gradle @@ -50,48 +50,20 @@ java { withSourcesJar() } -tasks.withType(JavaCompile) { +tasks.withType(JavaCompile).configureEach { options.release.set(project.ext.release.majorVersion.toInteger()) options.compilerArgs.add("-Werror") } //Groovy and Scala compilers don't actually understand --release option -tasks.withType(GroovyCompile) { +tasks.withType(GroovyCompile).configureEach { sourceCompatibility = JavaVersion.toVersion(project.ext.release) targetCompatibility = JavaVersion.toVersion(project.ext.release) } -tasks.withType(ScalaCompile) { +tasks.withType(ScalaCompile).configureEach { sourceCompatibility = JavaVersion.toVersion(project.ext.release) targetCompatibility = JavaVersion.toVersion(project.ext.release) } -apply plugin: "eclipse" -eclipse { - classpath { - downloadSources = true - downloadJavadoc = true - } -} -if (configurations.find { it.name == 'jmh' }) { - eclipse.classpath.plusConfigurations += [configurations.jmh] -} - -jar { - /* - Make Jar build fail on duplicate files - - By default Gradle Jar task can put multiple files with the same name - into a Jar. This may lead to confusion. For example if auto-service - annotation processing creates files with same name in `scala` and - `java` directory this would result in Jar having two files with the - same name in it. Which in turn would result in only one of those - files being actually considered when that Jar is used leading to very - confusing failures. - - Instead we should 'fail early' and avoid building such Jars. - */ - duplicatesStrategy = 'fail' -} - repositories { mavenCentral() mavenLocal() @@ -113,7 +85,22 @@ dependencies { testImplementation group: 'com.github.stefanbirkner', name: 'system-rules', version: '1.19.0' } -jar { +tasks.named('jar').configure { + /* + Make Jar build fail on duplicate files + + By default Gradle Jar task can put multiple files with the same name + into a Jar. This may lead to confusion. For example if auto-service + annotation processing creates files with same name in `scala` and + `java` directory this would result in Jar having two files with the + same name in it. Which in turn would result in only one of those + files being actually considered when that Jar is used leading to very + confusing failures. + + Instead we should 'fail early' and avoid building such Jars. + */ + duplicatesStrategy = 'fail' + manifest { attributes( "Implementation-Title": project.name, @@ -132,7 +119,7 @@ normalization { } } -javadoc { +tasks.named('javadoc').configure { options.addStringOption('Xdoclint:none', '-quiet') // non-standard option to fail on warnings, see https://bugs.openjdk.java.net/browse/JDK-8200363 options.addStringOption('Xwerror', '-quiet') @@ -183,7 +170,7 @@ def isJavaVersionAllowed(JavaVersion version) { def testJavaVersion = rootProject.findProperty('testJavaVersion') if (testJavaVersion != null) { def requestedJavaVersion = JavaVersion.toVersion(testJavaVersion) - tasks.withType(Test).all { + tasks.withType(Test).configureEach { javaLauncher = javaToolchains.launcherFor { languageVersion = JavaLanguageVersion.of(requestedJavaVersion.majorVersion) } @@ -194,7 +181,7 @@ if (testJavaVersion != null) { // the default test task's version so commands like `./gradlew check` can test all projects regardless // of Java version. if (!isJavaVersionAllowed(JavaVersion.toVersion(DEFAULT_JAVA_VERSION))) { - tasks.withType(Test) { + tasks.withType(Test).configureEach { javaLauncher = javaToolchains.launcherFor { languageVersion = JavaLanguageVersion.of(project.getProperty('maxJavaVersionForTests').majorVersion) } @@ -229,7 +216,7 @@ tasks.withType(Test).configureEach { jvmArgs "-Dio.opentelemetry.javaagent.shaded.io.opentelemetry.context.enableStrictContext=${rootProject.findProperty('enableStrictContext') ?: false}" } -tasks.withType(AbstractArchiveTask) { +tasks.withType(AbstractArchiveTask).configureEach { preserveFileTimestamps = false reproducibleFileOrder = true } @@ -240,7 +227,7 @@ plugins.withId('net.ltgt.errorprone') { errorprone group: "com.google.errorprone", name: "error_prone_core", version: versions.errorprone } - tasks.withType(JavaCompile) { + tasks.withType(JavaCompile).configureEach { if (!name.toLowerCase().contains("test")) { options.errorprone { error("NullAway") diff --git a/gradle/publish.gradle b/gradle/publish.gradle index 517b35007a..e09e380a27 100644 --- a/gradle/publish.gradle +++ b/gradle/publish.gradle @@ -88,7 +88,9 @@ private String artifactPrefix(Project p, String archivesBaseName) { return 'opentelemetry-' } -rootProject.tasks.release.finalizedBy tasks.publishToSonatype +rootProject.tasks.named('release').configure { + finalizedBy tasks.publishToSonatype +} tasks.withType(Sign).configureEach { onlyIf { System.getenv("CI") != null } diff --git a/gradle/spotbugs.gradle b/gradle/spotbugs.gradle index 78cdb0aa59..f97156f6a8 100644 --- a/gradle/spotbugs.gradle +++ b/gradle/spotbugs.gradle @@ -11,21 +11,15 @@ allprojects { excludeFilter = file("$rootDir/gradle/spotbugs-exclude.xml") } - spotbugsTest { - reports { - html.enabled = !isCI - xml.enabled = isCI - html { - stylesheet = 'fancy-hist.xsl' - } - } - } - spotbugsMain { - reports { - html.enabled = !isCI - xml.enabled = isCI - html { - stylesheet = 'fancy-hist.xsl' + // NB: For some reason, SpotBugsTask can't be referenced even when importing it. + tasks.withType(VerificationTask).configureEach { + if (name.startsWith("spotbugs")) { + reports { + html.enabled = !isCI + xml.enabled = isCI + html { + stylesheet = 'fancy-hist.xsl' + } } } } diff --git a/gradle/spotless.gradle b/gradle/spotless.gradle index 2b8c971b82..d985b1105f 100644 --- a/gradle/spotless.gradle +++ b/gradle/spotless.gradle @@ -27,6 +27,3 @@ spotless { endWithNewline() } } - -task formatCode(dependsOn: ['spotlessApply']) -check.dependsOn 'spotlessCheck' diff --git a/gradle/test-with-kotlin.gradle b/gradle/test-with-kotlin.gradle index fac310f4bd..194f8df31d 100644 --- a/gradle/test-with-kotlin.gradle +++ b/gradle/test-with-kotlin.gradle @@ -1,7 +1,7 @@ // Enable testing kotlin code in groovy spock tests. apply plugin: 'org.jetbrains.kotlin.jvm' -compileTestGroovy { +tasks.named('compileTestGroovy').configure { //Note: look like it should be `classpath += files(sourceSets.test.kotlin.classesDirectory)` //instead, but kotlin plugin doesn't support it (yet?) classpath += files(compileTestKotlin.destinationDir) diff --git a/gradle/test-with-scala.gradle b/gradle/test-with-scala.gradle index 3443eeb697..e6ae9aa1ec 100644 --- a/gradle/test-with-scala.gradle +++ b/gradle/test-with-scala.gradle @@ -6,6 +6,6 @@ dependencies { testImplementation deps.scala } -compileTestGroovy { +tasks.named('compileTestGroovy').configure { classpath += files(sourceSets.test.scala.classesDirectory) } diff --git a/instrumentation/akka-actor-2.5/javaagent/akka-actor-2.5-javaagent.gradle b/instrumentation/akka-actor-2.5/javaagent/akka-actor-2.5-javaagent.gradle index 5d30c229d8..931d97336b 100644 --- a/instrumentation/akka-actor-2.5/javaagent/akka-actor-2.5-javaagent.gradle +++ b/instrumentation/akka-actor-2.5/javaagent/akka-actor-2.5-javaagent.gradle @@ -17,6 +17,6 @@ dependencies { testImplementation group: 'com.typesafe.akka', name: 'akka-actor_2.11', version: '2.5.0' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { jvmArgs '-Dotel.instrumentation.akka-actor.enabled=true' } \ No newline at end of file diff --git a/instrumentation/akka-http-10.0/javaagent/akka-http-10.0-javaagent.gradle b/instrumentation/akka-http-10.0/javaagent/akka-http-10.0-javaagent.gradle index f3ca5270ff..d61d985145 100644 --- a/instrumentation/akka-http-10.0/javaagent/akka-http-10.0-javaagent.gradle +++ b/instrumentation/akka-http-10.0/javaagent/akka-http-10.0-javaagent.gradle @@ -63,7 +63,7 @@ compileVersion101TestGroovy { dependsOn compileVersion101TestScala } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/2639 jvmArgs "-Dio.opentelemetry.javaagent.shaded.io.opentelemetry.context.enableStrictContext=false" } \ No newline at end of file diff --git a/instrumentation/apache-camel-2.20/javaagent/apache-camel-2.20-javaagent.gradle b/instrumentation/apache-camel-2.20/javaagent/apache-camel-2.20-javaagent.gradle index 88bb41cec7..a799fbea54 100644 --- a/instrumentation/apache-camel-2.20/javaagent/apache-camel-2.20-javaagent.gradle +++ b/instrumentation/apache-camel-2.20/javaagent/apache-camel-2.20-javaagent.gradle @@ -46,7 +46,7 @@ dependencies { latestDepTestLibrary group: 'org.apache.camel', name: 'camel-aws', version: '2.+' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.apache-camel.experimental-span-attributes=true" jvmArgs "-Dotel.instrumentation.aws-sdk.experimental-span-attributes=true" diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/aws-sdk-1.11-javaagent.gradle b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/aws-sdk-1.11-javaagent.gradle index 66df7a45cb..9a066fe099 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/aws-sdk-1.11-javaagent.gradle +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/aws-sdk-1.11-javaagent.gradle @@ -97,7 +97,7 @@ if (!testLatestDeps) { check.dependsOn test_before_1_11_106, testSqs } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.aws-sdk.experimental-span-attributes=true" } diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/javaagent/aws-sdk-2.2-javaagent.gradle b/instrumentation/aws-sdk/aws-sdk-2.2/javaagent/aws-sdk-2.2-javaagent.gradle index 122a6bd4d8..5ae12eabe6 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/javaagent/aws-sdk-2.2-javaagent.gradle +++ b/instrumentation/aws-sdk/aws-sdk-2.2/javaagent/aws-sdk-2.2-javaagent.gradle @@ -22,7 +22,7 @@ dependencies { testImplementation project(':instrumentation:netty:netty-4.1:javaagent') } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.aws-sdk.experimental-span-attributes=true" } diff --git a/instrumentation/couchbase/couchbase-2.6/javaagent/couchbase-2.6-javaagent.gradle b/instrumentation/couchbase/couchbase-2.6/javaagent/couchbase-2.6-javaagent.gradle index 9bec141fdd..58d342b4dd 100644 --- a/instrumentation/couchbase/couchbase-2.6/javaagent/couchbase-2.6-javaagent.gradle +++ b/instrumentation/couchbase/couchbase-2.6/javaagent/couchbase-2.6-javaagent.gradle @@ -31,7 +31,7 @@ dependencies { latestDepTestLibrary group: 'com.couchbase.client', name: 'java-client', version: '2.+' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.couchbase.experimental-span-attributes=true" } diff --git a/instrumentation/elasticsearch/elasticsearch-transport-5.0/javaagent/elasticsearch-transport-5.0-javaagent.gradle b/instrumentation/elasticsearch/elasticsearch-transport-5.0/javaagent/elasticsearch-transport-5.0-javaagent.gradle index 70c073717c..c67a6c2298 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-5.0/javaagent/elasticsearch-transport-5.0-javaagent.gradle +++ b/instrumentation/elasticsearch/elasticsearch-transport-5.0/javaagent/elasticsearch-transport-5.0-javaagent.gradle @@ -38,7 +38,7 @@ dependencies { testImplementation group: 'org.elasticsearch.client', name: 'transport', version: '5.0.0' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.elasticsearch.experimental-span-attributes=true" } diff --git a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/elasticsearch-transport-5.3-javaagent.gradle b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/elasticsearch-transport-5.3-javaagent.gradle index 82f35878ad..b79f796fe5 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/elasticsearch-transport-5.3-javaagent.gradle +++ b/instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/elasticsearch-transport-5.3-javaagent.gradle @@ -43,7 +43,7 @@ dependencies { latestDepTestLibrary group: 'org.springframework.data', name: 'spring-data-elasticsearch', version: '3.0.+' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.elasticsearch.experimental-span-attributes=true" } diff --git a/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/elasticsearch-transport-6.0-javaagent.gradle b/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/elasticsearch-transport-6.0-javaagent.gradle index e4534bc1d9..36655d08e0 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/elasticsearch-transport-6.0-javaagent.gradle +++ b/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/elasticsearch-transport-6.0-javaagent.gradle @@ -37,7 +37,7 @@ dependencies { testImplementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.0' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.elasticsearch.experimental-span-attributes=true" } diff --git a/instrumentation/executors/javaagent/executors-javaagent.gradle b/instrumentation/executors/javaagent/executors-javaagent.gradle index a26142ecd0..c5f484c818 100644 --- a/instrumentation/executors/javaagent/executors-javaagent.gradle +++ b/instrumentation/executors/javaagent/executors-javaagent.gradle @@ -6,7 +6,7 @@ muzzle { } } -tasks.withType(Test) { +tasks.withType(Test).configureEach { jvmArgs "-Dotel.instrumentation.executors.include=ExecutorInstrumentationTest\$CustomThreadPoolExecutor" jvmArgs "-Djava.awt.headless=true" } diff --git a/instrumentation/grizzly-2.0/javaagent/grizzly-2.0-javaagent.gradle b/instrumentation/grizzly-2.0/javaagent/grizzly-2.0-javaagent.gradle index 5fba968521..ccf961ab67 100644 --- a/instrumentation/grizzly-2.0/javaagent/grizzly-2.0-javaagent.gradle +++ b/instrumentation/grizzly-2.0/javaagent/grizzly-2.0-javaagent.gradle @@ -20,11 +20,11 @@ dependencies { latestDepTestLibrary group: 'org.glassfish.jersey.inject', name: 'jersey-hk2', version: '2.+' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { jvmArgs "-Dotel.instrumentation.grizzly.enabled=true" } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/2640 jvmArgs "-Dio.opentelemetry.javaagent.shaded.io.opentelemetry.context.enableStrictContext=false" } \ No newline at end of file diff --git a/instrumentation/hystrix-1.4/javaagent/hystrix-1.4-javaagent.gradle b/instrumentation/hystrix-1.4/javaagent/hystrix-1.4-javaagent.gradle index 28ebdb5e5f..31ae162e08 100644 --- a/instrumentation/hystrix-1.4/javaagent/hystrix-1.4-javaagent.gradle +++ b/instrumentation/hystrix-1.4/javaagent/hystrix-1.4-javaagent.gradle @@ -15,7 +15,7 @@ dependencies { library group: 'io.reactivex', name: 'rxjava', version: '1.0.7' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.hystrix.experimental-span-attributes=true" // Disable so failure testing below doesn't inadvertently change the behavior. diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/jaxrs-2.0-cxf-3.2-javaagent.gradle b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/jaxrs-2.0-cxf-3.2-javaagent.gradle index 681dce9eb5..a760568223 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/jaxrs-2.0-cxf-3.2-javaagent.gradle +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/jaxrs-2.0-cxf-3.2-javaagent.gradle @@ -38,7 +38,7 @@ dependencies { latestDepTestLibrary group: 'org.eclipse.jetty', name: 'jetty-webapp', version: '9.+' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.jaxrs.experimental-span-attributes=true" } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/jaxrs-2.0-jersey-2.0-javaagent.gradle b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/jaxrs-2.0-jersey-2.0-javaagent.gradle index 013b3616e7..c13eafb7cf 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/jaxrs-2.0-jersey-2.0-javaagent.gradle +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/jaxrs-2.0-jersey-2.0-javaagent.gradle @@ -46,7 +46,7 @@ test { systemProperty 'testLatestDeps', testLatestDeps } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.jaxrs.experimental-span-attributes=true" } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/jaxrs-2.0-resteasy-3.0-javaagent.gradle b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/jaxrs-2.0-resteasy-3.0-javaagent.gradle index da1245d57b..740dc1a33e 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/jaxrs-2.0-resteasy-3.0-javaagent.gradle +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/javaagent/jaxrs-2.0-resteasy-3.0-javaagent.gradle @@ -49,7 +49,7 @@ test { systemProperty 'testLatestDeps', testLatestDeps } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.jaxrs.experimental-span-attributes=true" } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/jaxrs-2.0-resteasy-3.1-javaagent.gradle b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/jaxrs-2.0-resteasy-3.1-javaagent.gradle index 2d77bfe4db..f2c436ca3a 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/jaxrs-2.0-resteasy-3.1-javaagent.gradle +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/javaagent/jaxrs-2.0-resteasy-3.1-javaagent.gradle @@ -53,7 +53,7 @@ if (findProperty('testLatestDeps')) { } } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.jaxrs.experimental-span-attributes=true" } diff --git a/instrumentation/jdbc/javaagent/jdbc-javaagent.gradle b/instrumentation/jdbc/javaagent/jdbc-javaagent.gradle index 7e25956ce6..d1a5e59a26 100644 --- a/instrumentation/jdbc/javaagent/jdbc-javaagent.gradle +++ b/instrumentation/jdbc/javaagent/jdbc-javaagent.gradle @@ -26,6 +26,6 @@ dependencies { latestDepTestLibrary group: 'org.apache.derby', name: 'derby', version: '10.14.+' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { jvmArgs "-Dotel.instrumentation.jdbc-datasource.enabled=true" } diff --git a/instrumentation/jsp-2.3/javaagent/jsp-2.3-javaagent.gradle b/instrumentation/jsp-2.3/javaagent/jsp-2.3-javaagent.gradle index 81a286467f..cdf6b3bb22 100644 --- a/instrumentation/jsp-2.3/javaagent/jsp-2.3-javaagent.gradle +++ b/instrumentation/jsp-2.3/javaagent/jsp-2.3-javaagent.gradle @@ -34,7 +34,7 @@ dependencies { latestDepTestLibrary group: 'org.apache.tomcat.embed', name: 'tomcat-embed-logging-juli', version: '9.+' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // skip jar scanning using environment variables: // http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html#JAR_Scanning // having this set allows us to test with old versions of the tomcat api since diff --git a/instrumentation/kafka-clients-0.11/javaagent/kafka-clients-0.11-javaagent.gradle b/instrumentation/kafka-clients-0.11/javaagent/kafka-clients-0.11-javaagent.gradle index 0e566da1cb..c0f04657f1 100644 --- a/instrumentation/kafka-clients-0.11/javaagent/kafka-clients-0.11-javaagent.gradle +++ b/instrumentation/kafka-clients-0.11/javaagent/kafka-clients-0.11-javaagent.gradle @@ -29,7 +29,7 @@ dependencies { latestDepTestLibrary group: 'org.assertj', name: 'assertj-core', version: '3.+' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.kafka.experimental-span-attributes=true" } diff --git a/instrumentation/kafka-streams-0.11/javaagent/kafka-streams-0.11-javaagent.gradle b/instrumentation/kafka-streams-0.11/javaagent/kafka-streams-0.11-javaagent.gradle index 91dada8532..18ec175273 100644 --- a/instrumentation/kafka-streams-0.11/javaagent/kafka-streams-0.11-javaagent.gradle +++ b/instrumentation/kafka-streams-0.11/javaagent/kafka-streams-0.11-javaagent.gradle @@ -34,7 +34,7 @@ dependencies { latestDepTestLibrary group: 'org.assertj', name: 'assertj-core', version: '3.+' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.kafka.experimental-span-attributes=true" } diff --git a/instrumentation/kubernetes-client-7.0/javaagent/kubernetes-client-7.0-javaagent.gradle b/instrumentation/kubernetes-client-7.0/javaagent/kubernetes-client-7.0-javaagent.gradle index b067f74c74..2e90b41d4e 100644 --- a/instrumentation/kubernetes-client-7.0/javaagent/kubernetes-client-7.0-javaagent.gradle +++ b/instrumentation/kubernetes-client-7.0/javaagent/kubernetes-client-7.0-javaagent.gradle @@ -17,7 +17,7 @@ dependencies { testInstrumentation(project(':instrumentation:okhttp:okhttp-3.0:javaagent')) } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.kubernetes-client.experimental-span-attributes=true" } diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/lettuce-4.0-javaagent.gradle b/instrumentation/lettuce/lettuce-4.0/javaagent/lettuce-4.0-javaagent.gradle index 39c55b7472..02b5f3e636 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/lettuce-4.0-javaagent.gradle +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/lettuce-4.0-javaagent.gradle @@ -18,7 +18,7 @@ dependencies { latestDepTestLibrary group: 'biz.paluch.redis', name: 'lettuce', version: '4.+' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.lettuce.experimental-span-attributes=true" } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/lettuce-5.0-javaagent.gradle b/instrumentation/lettuce/lettuce-5.0/javaagent/lettuce-5.0-javaagent.gradle index 46e2f26f78..19694002b2 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/lettuce-5.0-javaagent.gradle +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/lettuce-5.0-javaagent.gradle @@ -19,7 +19,7 @@ dependencies { testInstrumentation project(':instrumentation:reactor-3.1:javaagent') } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.lettuce.experimental-span-attributes=true" } diff --git a/instrumentation/methods/javaagent/methods-javaagent.gradle b/instrumentation/methods/javaagent/methods-javaagent.gradle index 261cced7da..cc8e1ad7b1 100644 --- a/instrumentation/methods/javaagent/methods-javaagent.gradle +++ b/instrumentation/methods/javaagent/methods-javaagent.gradle @@ -10,6 +10,6 @@ dependencies { compileOnly project(':javaagent-tooling') } -tasks.withType(Test) { +tasks.withType(Test).configureEach { jvmArgs "-Dotel.instrumentation.methods.include=package.ClassName[method1,method2];MethodTest\$ConfigTracedCallable[call]" } diff --git a/instrumentation/rabbitmq-2.7/javaagent/rabbitmq-2.7-javaagent.gradle b/instrumentation/rabbitmq-2.7/javaagent/rabbitmq-2.7-javaagent.gradle index 034eb1ae4d..e8395f4683 100644 --- a/instrumentation/rabbitmq-2.7/javaagent/rabbitmq-2.7-javaagent.gradle +++ b/instrumentation/rabbitmq-2.7/javaagent/rabbitmq-2.7-javaagent.gradle @@ -23,7 +23,7 @@ configurations.testRuntime { } } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.rabbitmq.experimental-span-attributes=true" } diff --git a/instrumentation/ratpack-1.4/javaagent/ratpack-1.4-javaagent.gradle b/instrumentation/ratpack-1.4/javaagent/ratpack-1.4-javaagent.gradle index 1f842f7080..9e185805ec 100644 --- a/instrumentation/ratpack-1.4/javaagent/ratpack-1.4-javaagent.gradle +++ b/instrumentation/ratpack-1.4/javaagent/ratpack-1.4-javaagent.gradle @@ -20,7 +20,7 @@ dependencies { } } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/2648 jvmArgs "-Dio.opentelemetry.javaagent.shaded.io.opentelemetry.context.enableStrictContext=false" } diff --git a/instrumentation/rmi/javaagent/rmi-javaagent.gradle b/instrumentation/rmi/javaagent/rmi-javaagent.gradle index 25dd0b9bb1..e0c812a9f1 100644 --- a/instrumentation/rmi/javaagent/rmi-javaagent.gradle +++ b/instrumentation/rmi/javaagent/rmi-javaagent.gradle @@ -6,7 +6,9 @@ muzzle { } } -task "rmic", dependsOn: testClasses { +def rmic = tasks.register('rmic') { + dependsOn(testClasses) + def clazz = 'rmi.app.ServerLegacy' // Try one level up too in case java.home refers to jre directory inside jdk directory @@ -19,7 +21,7 @@ task "rmic", dependsOn: testClasses { command.execute().text } -test.dependsOn "rmic" +test.dependsOn rmic // We cannot use "--release" javac option here because that will forbid importing "sun.rmi" package. // We also can't seem to use the toolchain without the "--release" option. So disable everything. @@ -32,12 +34,12 @@ java { } } -tasks.withType(JavaCompile) { +tasks.withType(JavaCompile).configureEach { options.release = null } -tasks.withType(GroovyCompile) { +tasks.withType(GroovyCompile).configureEach { options.release = null } -tasks.withType(Test) { +tasks.withType(Test).configureEach { jvmArgs "-Djava.rmi.server.hostname=127.0.0.1" } diff --git a/instrumentation/rocketmq-client-4.8/javaagent/rocketmq-client-4.8-javaagent.gradle b/instrumentation/rocketmq-client-4.8/javaagent/rocketmq-client-4.8-javaagent.gradle index ed9a9a1a43..a96c566780 100644 --- a/instrumentation/rocketmq-client-4.8/javaagent/rocketmq-client-4.8-javaagent.gradle +++ b/instrumentation/rocketmq-client-4.8/javaagent/rocketmq-client-4.8-javaagent.gradle @@ -16,6 +16,6 @@ dependencies { } -tasks.withType(Test) { +tasks.withType(Test).configureEach { jvmArgs "-Dotel.instrumentation.rocketmq-client.experimental-span-attributes=true" } \ No newline at end of file diff --git a/instrumentation/servlet/glassfish-testing/glassfish-testing.gradle b/instrumentation/servlet/glassfish-testing/glassfish-testing.gradle index 5a11c3d30a..3985ace9ea 100644 --- a/instrumentation/servlet/glassfish-testing/glassfish-testing.gradle +++ b/instrumentation/servlet/glassfish-testing/glassfish-testing.gradle @@ -13,6 +13,6 @@ dependencies { testLibrary group: 'org.glassfish.main.extras', name: 'glassfish-embedded-all', version: '4.0' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { jvmArgs "-Djava.awt.headless=true" } diff --git a/instrumentation/spring/spring-batch-3.0/javaagent/spring-batch-3.0-javaagent.gradle b/instrumentation/spring/spring-batch-3.0/javaagent/spring-batch-3.0-javaagent.gradle index f2fcdeef35..67582458ed 100644 --- a/instrumentation/spring/spring-batch-3.0/javaagent/spring-batch-3.0-javaagent.gradle +++ b/instrumentation/spring/spring-batch-3.0/javaagent/spring-batch-3.0-javaagent.gradle @@ -17,7 +17,7 @@ dependencies { testInstrumentation project(':instrumentation:spring:spring-core-2.0:javaagent') } -tasks.withType(Test) { +tasks.withType(Test).configureEach { jvmArgs '-Dotel.instrumentation.spring-batch.enabled=true' } test { diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/spring-webflux-5.0-javaagent.gradle b/instrumentation/spring/spring-webflux-5.0/javaagent/spring-webflux-5.0-javaagent.gradle index a5ca159d84..5f9c9849a7 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/spring-webflux-5.0-javaagent.gradle +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/spring-webflux-5.0-javaagent.gradle @@ -51,7 +51,7 @@ dependencies { testImplementation group: 'org.spockframework', name: 'spock-spring', version: '1.1-groovy-2.4' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs '-Dotel.instrumentation.spring-webflux.experimental-span-attributes=true' // TODO(anuraaga): There is no actual context leak - it just seems that the server-side does not diff --git a/instrumentation/spring/spring-webmvc-3.1/javaagent/spring-webmvc-3.1-javaagent.gradle b/instrumentation/spring/spring-webmvc-3.1/javaagent/spring-webmvc-3.1-javaagent.gradle index a37d95615d..db6f9b1586 100644 --- a/instrumentation/spring/spring-webmvc-3.1/javaagent/spring-webmvc-3.1-javaagent.gradle +++ b/instrumentation/spring/spring-webmvc-3.1/javaagent/spring-webmvc-3.1-javaagent.gradle @@ -57,7 +57,7 @@ dependencies { testImplementation "org.glassfish.jaxb:jaxb-runtime:2.3.2" } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs '-Dotel.instrumentation.spring-webmvc.experimental-span-attributes=true' } diff --git a/instrumentation/spymemcached-2.12/javaagent/spymemcached-2.12-javaagent.gradle b/instrumentation/spymemcached-2.12/javaagent/spymemcached-2.12-javaagent.gradle index 73a7455e88..beeaad1221 100644 --- a/instrumentation/spymemcached-2.12/javaagent/spymemcached-2.12-javaagent.gradle +++ b/instrumentation/spymemcached-2.12/javaagent/spymemcached-2.12-javaagent.gradle @@ -16,7 +16,7 @@ dependencies { testImplementation deps.testcontainers } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.spymemcached.experimental-span-attributes=true" } diff --git a/instrumentation/twilio-6.6/javaagent/twilio-6.6-javaagent.gradle b/instrumentation/twilio-6.6/javaagent/twilio-6.6-javaagent.gradle index f52b3982f0..59d50853c2 100644 --- a/instrumentation/twilio-6.6/javaagent/twilio-6.6-javaagent.gradle +++ b/instrumentation/twilio-6.6/javaagent/twilio-6.6-javaagent.gradle @@ -18,7 +18,7 @@ dependencies { latestDepTestLibrary group: 'com.twilio.sdk', name: 'twilio', version: '7.+' } -tasks.withType(Test) { +tasks.withType(Test).configureEach { // TODO run tests both with and without experimental span attributes jvmArgs "-Dotel.instrumentation.twilio.experimental-span-attributes=true" } diff --git a/settings.gradle b/settings.gradle index 9bcd980cb2..7ca63b6717 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,19 @@ +pluginManagement { + plugins { + id "com.diffplug.spotless" version "5.8.2" + id 'com.dorongold.task-tree' version '1.5' + id 'com.github.ben-manes.versions' version '0.27.0' + id "com.github.johnrengelman.shadow" version "6.1.0" + id "com.github.spotbugs" version "4.6.0" + id "io.github.gradle-nexus.publish-plugin" version "1.0.0" + id "me.champeau.jmh" version "0.6.4" + id "net.ltgt.errorprone" version "1.3.0" + id 'org.unbroken-dome.test-sets' version '3.0.1' + id "nebula.release" version "15.3.0" + id 'org.gradle.test-retry' version '1.2.0' + } +} + plugins { id 'com.gradle.enterprise' version '3.5' id 'com.github.burrunan.s3-build-cache' version '1.1'