From d79f90492a18157662a9ae2ababe90bca7d6c356 Mon Sep 17 00:00:00 2001 From: Nikita Salnikov-Tarnovski Date: Tue, 23 Mar 2021 14:12:01 +0200 Subject: [PATCH] Make sure muzzle build-time check actually validates anything (#2599) * Check if muzzle build-time check actually validates anything * Force class files generation before muzzle * Apply muzzle only to javaagent projects * Apply muzzle only to javaagent projects * More fixes * More fixes * PR review comments * polish * Exclude "broken" version * Polish Co-authored-by: Trask Stalnaker --- buildSrc/src/main/groovy/MuzzlePlugin.groovy | 30 +++++-------------- gradle/instrumentation.gradle | 3 +- .../elasticsearch-rest-5.0-javaagent.gradle | 2 +- .../elasticsearch-rest-6.4-javaagent.gradle | 2 +- .../elasticsearch-rest-7.0-javaagent.gradle | 2 +- .../elasticsearch-rest-common-library.gradle} | 2 +- .../rest/ElasticsearchRestClientTracer.java | 0 .../rest/RestResponseListener.java | 0 ...asticsearch-transport-5.0-javaagent.gradle | 2 +- ...asticsearch-transport-5.3-javaagent.gradle | 2 +- ...asticsearch-transport-6.0-javaagent.gradle | 2 +- ...ticsearch-transport-common-library.gradle} | 2 +- .../ElasticsearchTransportClientTracer.java | 0 .../hibernate-common-javaagent.gradle | 6 +++- .../javaagent/jaxws-2.0-javaagent.gradle | 2 +- .../javaagent/jaxws-common-javaagent.gradle | 2 -- .../library/jaxws-common-library.gradle | 1 + .../jaxws/common/JaxWsTracer.java | 0 .../javaagent/jws-1.1-javaagent.gradle | 2 +- .../rocketmq-client-4.8-javaagent.gradle | 2 +- .../javaagent/rxjava-2.0-javaagent.gradle | 4 ++- .../rxjava2/RxJava2InstrumentationModule.java | 2 ++ .../vertx-reactive-3.5-javaagent.gradle | 2 +- .../vertx/RoutingContextHandlerWrapper.java | 0 .../vertx/VertxWebInstrumentationModule.java | 0 .../vertx/client/Contexts.java | 0 .../client/HttpRequestInstrumentation.java | 0 .../VertxClientInstrumentationModule.java | 0 .../vertx/client/VertxClientTracer.java | 0 .../instrumentation/vertx/package-info.java | 0 .../groovy/client/VertxHttpClientTest.groovy | 0 .../groovy/client/VertxSingleConnection.java | 0 .../groovy/server/VertxHttpServerTest.groovy | 0 .../src/test/java/server/VertxWebServer.java | 0 .../vertx-web-3.0-javaagent.gradle} | 4 ++- javaagent-tooling/javaagent-tooling.gradle | 2 +- .../matcher/MuzzleGradlePluginUtil.java | 8 +++++ settings.gradle | 8 ++--- 38 files changed, 48 insertions(+), 46 deletions(-) rename instrumentation/elasticsearch/elasticsearch-rest-common/{javaagent/elasticsearch-rest-common-javaagent.gradle => library/elasticsearch-rest-common-library.gradle} (61%) rename instrumentation/elasticsearch/elasticsearch-rest-common/{javaagent => library}/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestClientTracer.java (100%) rename instrumentation/elasticsearch/elasticsearch-rest-common/{javaagent => library}/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/RestResponseListener.java (100%) rename instrumentation/elasticsearch/elasticsearch-transport-common/{javaagent/elasticsearch-transport-common-javaagent.gradle => library/elasticsearch-transport-common-library.gradle} (62%) rename instrumentation/elasticsearch/elasticsearch-transport-common/{javaagent => library}/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticsearchTransportClientTracer.java (100%) delete mode 100644 instrumentation/jaxws/jaxws-common/javaagent/jaxws-common-javaagent.gradle create mode 100644 instrumentation/jaxws/jaxws-common/library/jaxws-common-library.gradle rename instrumentation/jaxws/jaxws-common/{javaagent => library}/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/common/JaxWsTracer.java (100%) rename instrumentation/vertx-web-3.0/{ => javaagent}/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java (100%) rename instrumentation/vertx-web-3.0/{ => javaagent}/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxWebInstrumentationModule.java (100%) rename instrumentation/vertx-web-3.0/{ => javaagent}/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/Contexts.java (100%) rename instrumentation/vertx-web-3.0/{ => javaagent}/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/HttpRequestInstrumentation.java (100%) rename instrumentation/vertx-web-3.0/{ => javaagent}/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/VertxClientInstrumentationModule.java (100%) rename instrumentation/vertx-web-3.0/{ => javaagent}/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/VertxClientTracer.java (100%) rename instrumentation/vertx-web-3.0/{ => javaagent}/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/package-info.java (100%) rename instrumentation/vertx-web-3.0/{ => javaagent}/src/test/groovy/client/VertxHttpClientTest.groovy (100%) rename instrumentation/vertx-web-3.0/{ => javaagent}/src/test/groovy/client/VertxSingleConnection.java (100%) rename instrumentation/vertx-web-3.0/{ => javaagent}/src/test/groovy/server/VertxHttpServerTest.groovy (100%) rename instrumentation/vertx-web-3.0/{ => javaagent}/src/test/java/server/VertxWebServer.java (100%) rename instrumentation/vertx-web-3.0/{vertx-web-3.0.gradle => javaagent/vertx-web-3.0-javaagent.gradle} (87%) diff --git a/buildSrc/src/main/groovy/MuzzlePlugin.groovy b/buildSrc/src/main/groovy/MuzzlePlugin.groovy index 300f23af8f..1195cb2627 100644 --- a/buildSrc/src/main/groovy/MuzzlePlugin.groovy +++ b/buildSrc/src/main/groovy/MuzzlePlugin.groovy @@ -50,24 +50,18 @@ class MuzzlePlugin implements Plugin { // compileMuzzle compiles all projects required to run muzzle validation. // Not adding group and description to keep this task from showing in `gradle tasks`. def compileMuzzle = project.task('compileMuzzle') + compileMuzzle.dependsOn(bootstrapProject.tasks.classes, toolingProject.tasks.classes, project.tasks.classes) + def muzzle = project.task('muzzle') { group = 'Muzzle' description = "Run instrumentation muzzle on compile time dependencies" - doLast { - if (!project.muzzle.directives.any { it.assertPass }) { - project.getLogger().info('No muzzle pass directives configured. Asserting pass against instrumentation compile-time dependencies') - ClassLoader userCL = createCompileDepsClassLoader(project) - ClassLoader instrumentationCL = createInstrumentationClassloader(project) - Method assertionMethod = instrumentationCL.loadClass('io.opentelemetry.javaagent.tooling.muzzle.matcher.MuzzleGradlePluginUtil') - .getMethod('assertInstrumentationMuzzled', ClassLoader.class, ClassLoader.class, boolean.class) - assertionMethod.invoke(null, instrumentationCL, userCL, true) - } - println "Muzzle executing for $project" - } + dependsOn(compileMuzzle) } - def printReferences = project.task('printMuzzleReferences') { + + project.task('printMuzzleReferences') { group = 'Muzzle' description = "Print references created by instrumentation muzzle" + dependsOn(compileMuzzle) doLast { ClassLoader instrumentationCL = createInstrumentationClassloader(project) Method assertionMethod = instrumentationCL.loadClass('io.opentelemetry.javaagent.tooling.muzzle.matcher.MuzzleGradlePluginUtil') @@ -75,16 +69,6 @@ class MuzzlePlugin implements Plugin { assertionMethod.invoke(null, instrumentationCL) } } - project.tasks.compileMuzzle.dependsOn(bootstrapProject.tasks.compileJava) - project.tasks.compileMuzzle.dependsOn(toolingProject.tasks.compileJava) - project.afterEvaluate { - project.tasks.compileMuzzle.dependsOn(project.tasks.compileJava) - if (project.tasks.getNames().contains('compileScala')) { - project.tasks.compileMuzzle.dependsOn(project.tasks.compileScala) - } - } - project.tasks.muzzle.dependsOn(project.tasks.compileMuzzle) - project.tasks.printMuzzleReferences.dependsOn(project.tasks.compileMuzzle) def hasRelevantTask = project.gradle.startParameter.taskNames.any { taskName -> // removing leading ':' if present @@ -102,7 +86,7 @@ class MuzzlePlugin implements Plugin { project.afterEvaluate { // use runAfter to set up task finalizers in version order - Task runAfter = project.tasks.muzzle + Task runAfter = muzzle for (MuzzleDirective muzzleDirective : project.muzzle.directives) { project.getLogger().info("configured $muzzleDirective") diff --git a/gradle/instrumentation.gradle b/gradle/instrumentation.gradle index 53cc885c5c..217abe60ea 100644 --- a/gradle/instrumentation.gradle +++ b/gradle/instrumentation.gradle @@ -2,7 +2,6 @@ import io.opentelemetry.instrumentation.gradle.bytebuddy.ByteBuddyPluginConfigurator apply plugin: 'net.bytebuddy.byte-buddy' -apply plugin: 'muzzle' apply plugin: 'com.github.johnrengelman.shadow' ext { @@ -19,6 +18,8 @@ if (project.ext.find("skipPublish") != true) { apply from: "$rootDir/gradle/instrumentation-common.gradle" if (projectDir.name == 'javaagent') { + apply plugin: 'muzzle' + archivesBaseName = projectDir.parentFile.name } diff --git a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/elasticsearch-rest-5.0-javaagent.gradle b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/elasticsearch-rest-5.0-javaagent.gradle index 432a6ecdaa..6cd9494fd8 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/elasticsearch-rest-5.0-javaagent.gradle +++ b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/elasticsearch-rest-5.0-javaagent.gradle @@ -23,7 +23,7 @@ testSets { dependencies { compileOnly group: 'org.elasticsearch.client', name: 'rest', version: '5.0.0' - implementation project(':instrumentation:elasticsearch:elasticsearch-rest-common:javaagent') + implementation project(':instrumentation:elasticsearch:elasticsearch-rest-common:library') testInstrumentation project(':instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent') testInstrumentation project(':instrumentation:apache-httpasyncclient-4.1:javaagent') diff --git a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/elasticsearch-rest-6.4-javaagent.gradle b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/elasticsearch-rest-6.4-javaagent.gradle index 5563cbf621..497d4bf13e 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/elasticsearch-rest-6.4-javaagent.gradle +++ b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/elasticsearch-rest-6.4-javaagent.gradle @@ -18,7 +18,7 @@ muzzle { dependencies { library group: 'org.elasticsearch.client', name: 'elasticsearch-rest-client', version: '6.4.0' - implementation project(':instrumentation:elasticsearch:elasticsearch-rest-common:javaagent') + implementation project(':instrumentation:elasticsearch:elasticsearch-rest-common:library') testInstrumentation project(':instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent') testInstrumentation project(':instrumentation:apache-httpasyncclient-4.1:javaagent') diff --git a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/elasticsearch-rest-7.0-javaagent.gradle b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/elasticsearch-rest-7.0-javaagent.gradle index 1b54016523..47fdde48da 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/elasticsearch-rest-7.0-javaagent.gradle +++ b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/elasticsearch-rest-7.0-javaagent.gradle @@ -18,7 +18,7 @@ muzzle { dependencies { library group: 'org.elasticsearch.client', name: 'elasticsearch-rest-client', version: '7.0.0' - implementation project(':instrumentation:elasticsearch:elasticsearch-rest-common:javaagent') + implementation project(':instrumentation:elasticsearch:elasticsearch-rest-common:library') testInstrumentation project(':instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent') testInstrumentation project(':instrumentation:apache-httpasyncclient-4.1:javaagent') diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/elasticsearch-rest-common-javaagent.gradle b/instrumentation/elasticsearch/elasticsearch-rest-common/library/elasticsearch-rest-common-library.gradle similarity index 61% rename from instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/elasticsearch-rest-common-javaagent.gradle rename to instrumentation/elasticsearch/elasticsearch-rest-common/library/elasticsearch-rest-common-library.gradle index f2ed3bb1b8..56ed61e9e6 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/elasticsearch-rest-common-javaagent.gradle +++ b/instrumentation/elasticsearch/elasticsearch-rest-common/library/elasticsearch-rest-common-library.gradle @@ -1,4 +1,4 @@ -apply from: "$rootDir/gradle/instrumentation.gradle" +apply from: "$rootDir/gradle/instrumentation-library.gradle" dependencies { compileOnly group: 'org.elasticsearch.client', name: 'rest', version: '5.0.0' diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestClientTracer.java b/instrumentation/elasticsearch/elasticsearch-rest-common/library/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestClientTracer.java similarity index 100% rename from instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestClientTracer.java rename to instrumentation/elasticsearch/elasticsearch-rest-common/library/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestClientTracer.java diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/RestResponseListener.java b/instrumentation/elasticsearch/elasticsearch-rest-common/library/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/RestResponseListener.java similarity index 100% rename from instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/RestResponseListener.java rename to instrumentation/elasticsearch/elasticsearch-rest-common/library/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/RestResponseListener.java 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 b30fa29151..4ab156b892 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 @@ -26,7 +26,7 @@ muzzle { dependencies { compileOnly group: 'org.elasticsearch.client', name: 'transport', version: '5.0.0' - implementation project(':instrumentation:elasticsearch:elasticsearch-transport-common:javaagent') + implementation project(':instrumentation:elasticsearch:elasticsearch-transport-common:library') // Ensure no cross interference testInstrumentation project(':instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent') 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 7c4cc9885d..883c8211a7 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 @@ -26,7 +26,7 @@ muzzle { dependencies { library group: 'org.elasticsearch.client', name: 'transport', version: '5.3.0' - implementation project(':instrumentation:elasticsearch:elasticsearch-transport-common:javaagent') + implementation project(':instrumentation:elasticsearch:elasticsearch-transport-common:library') testInstrumentation project(':instrumentation:apache-httpasyncclient-4.1:javaagent') testInstrumentation project(':instrumentation:netty:netty-4.1:javaagent') 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 1937bd61f9..ca6191adcc 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 @@ -20,7 +20,7 @@ muzzle { dependencies { library group: 'org.elasticsearch.client', name: 'transport', version: '6.0.0' - implementation project(':instrumentation:elasticsearch:elasticsearch-transport-common:javaagent') + implementation project(':instrumentation:elasticsearch:elasticsearch-transport-common:library') // Ensure no cross interference testInstrumentation project(':instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent') diff --git a/instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/elasticsearch-transport-common-javaagent.gradle b/instrumentation/elasticsearch/elasticsearch-transport-common/library/elasticsearch-transport-common-library.gradle similarity index 62% rename from instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/elasticsearch-transport-common-javaagent.gradle rename to instrumentation/elasticsearch/elasticsearch-transport-common/library/elasticsearch-transport-common-library.gradle index c4367baf67..df6d28cf08 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/elasticsearch-transport-common-javaagent.gradle +++ b/instrumentation/elasticsearch/elasticsearch-transport-common/library/elasticsearch-transport-common-library.gradle @@ -1,4 +1,4 @@ -apply from: "$rootDir/gradle/instrumentation.gradle" +apply from: "$rootDir/gradle/instrumentation-library.gradle" dependencies { compileOnly group: 'org.elasticsearch', name: 'elasticsearch', version: '2.0.0' diff --git a/instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticsearchTransportClientTracer.java b/instrumentation/elasticsearch/elasticsearch-transport-common/library/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticsearchTransportClientTracer.java similarity index 100% rename from instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticsearchTransportClientTracer.java rename to instrumentation/elasticsearch/elasticsearch-transport-common/library/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticsearchTransportClientTracer.java diff --git a/instrumentation/hibernate/hibernate-common/javaagent/hibernate-common-javaagent.gradle b/instrumentation/hibernate/hibernate-common/javaagent/hibernate-common-javaagent.gradle index dba9283db5..204b70ff4d 100644 --- a/instrumentation/hibernate/hibernate-common/javaagent/hibernate-common-javaagent.gradle +++ b/instrumentation/hibernate/hibernate-common/javaagent/hibernate-common-javaagent.gradle @@ -2,4 +2,8 @@ * Classes that are common to all versions of the Hibernate instrumentation. */ -apply from: "$rootDir/gradle/instrumentation.gradle" +apply from: "$rootDir/gradle/instrumentation-library.gradle" + +dependencies { + compileOnly project(':javaagent-api') +} diff --git a/instrumentation/jaxws/jaxws-2.0/javaagent/jaxws-2.0-javaagent.gradle b/instrumentation/jaxws/jaxws-2.0/javaagent/jaxws-2.0-javaagent.gradle index a84ae658fc..e508a647eb 100644 --- a/instrumentation/jaxws/jaxws-2.0/javaagent/jaxws-2.0-javaagent.gradle +++ b/instrumentation/jaxws/jaxws-2.0/javaagent/jaxws-2.0-javaagent.gradle @@ -11,5 +11,5 @@ muzzle { dependencies { library group: 'javax.xml.ws', name: 'jaxws-api', version: '2.0' - implementation project(":instrumentation:jaxws:jaxws-common:javaagent") + implementation project(":instrumentation:jaxws:jaxws-common:library") } \ No newline at end of file diff --git a/instrumentation/jaxws/jaxws-common/javaagent/jaxws-common-javaagent.gradle b/instrumentation/jaxws/jaxws-common/javaagent/jaxws-common-javaagent.gradle deleted file mode 100644 index 7d204735e6..0000000000 --- a/instrumentation/jaxws/jaxws-common/javaagent/jaxws-common-javaagent.gradle +++ /dev/null @@ -1,2 +0,0 @@ -apply from: "$rootDir/gradle/instrumentation.gradle" - diff --git a/instrumentation/jaxws/jaxws-common/library/jaxws-common-library.gradle b/instrumentation/jaxws/jaxws-common/library/jaxws-common-library.gradle new file mode 100644 index 0000000000..27b3d247d5 --- /dev/null +++ b/instrumentation/jaxws/jaxws-common/library/jaxws-common-library.gradle @@ -0,0 +1 @@ +apply from: "$rootDir/gradle/instrumentation-library.gradle" \ No newline at end of file diff --git a/instrumentation/jaxws/jaxws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/common/JaxWsTracer.java b/instrumentation/jaxws/jaxws-common/library/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/common/JaxWsTracer.java similarity index 100% rename from instrumentation/jaxws/jaxws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/common/JaxWsTracer.java rename to instrumentation/jaxws/jaxws-common/library/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxws/common/JaxWsTracer.java diff --git a/instrumentation/jaxws/jws-1.1/javaagent/jws-1.1-javaagent.gradle b/instrumentation/jaxws/jws-1.1/javaagent/jws-1.1-javaagent.gradle index 4407fde3f0..84ffdc44d6 100644 --- a/instrumentation/jaxws/jws-1.1/javaagent/jws-1.1-javaagent.gradle +++ b/instrumentation/jaxws/jws-1.1/javaagent/jws-1.1-javaagent.gradle @@ -10,5 +10,5 @@ muzzle { dependencies { library group: 'javax.jws', name: 'javax.jws-api', version: '1.1' - implementation project(":instrumentation:jaxws:jaxws-common:javaagent") + implementation project(":instrumentation:jaxws:jaxws-common:library") } \ No newline at end of file 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 c300c621b0..ed9a9a1a43 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 @@ -4,7 +4,7 @@ muzzle { pass { group = "org.apache.rocketmq" module = 'rocketmq-client' - versions = "[4.8.0,)" + versions = "[4.0.0,)" assertInverse = true } } diff --git a/instrumentation/rxjava-2.0/javaagent/rxjava-2.0-javaagent.gradle b/instrumentation/rxjava-2.0/javaagent/rxjava-2.0-javaagent.gradle index 2b1383dad9..58608c5cf5 100644 --- a/instrumentation/rxjava-2.0/javaagent/rxjava-2.0-javaagent.gradle +++ b/instrumentation/rxjava-2.0/javaagent/rxjava-2.0-javaagent.gradle @@ -4,7 +4,9 @@ muzzle { pass { group = "io.reactivex.rxjava2" module = "rxjava" - versions = "[2.0.0,)" + versions = "[2.0.6,)" + extraDependency "io.reactivex.rxjava2:rxjava:2.0.6" + assertInverse true } } diff --git a/instrumentation/rxjava-2.0/javaagent/src/main/java/io/opentelemetry/instrumentation/rxjava2/RxJava2InstrumentationModule.java b/instrumentation/rxjava-2.0/javaagent/src/main/java/io/opentelemetry/instrumentation/rxjava2/RxJava2InstrumentationModule.java index 89ebaeee8f..d265d64910 100644 --- a/instrumentation/rxjava-2.0/javaagent/src/main/java/io/opentelemetry/instrumentation/rxjava2/RxJava2InstrumentationModule.java +++ b/instrumentation/rxjava-2.0/javaagent/src/main/java/io/opentelemetry/instrumentation/rxjava2/RxJava2InstrumentationModule.java @@ -8,6 +8,7 @@ package io.opentelemetry.instrumentation.rxjava2; import static net.bytebuddy.matcher.ElementMatchers.isTypeInitializer; import static net.bytebuddy.matcher.ElementMatchers.named; +import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.tooling.InstrumentationModule; import io.opentelemetry.javaagent.tooling.TypeInstrumentation; import java.util.Collections; @@ -18,6 +19,7 @@ import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; +@AutoService(InstrumentationModule.class) public class RxJava2InstrumentationModule extends InstrumentationModule { public RxJava2InstrumentationModule() { diff --git a/instrumentation/vertx-reactive-3.5/javaagent/vertx-reactive-3.5-javaagent.gradle b/instrumentation/vertx-reactive-3.5/javaagent/vertx-reactive-3.5-javaagent.gradle index 566cc0212e..2ffd19b84b 100644 --- a/instrumentation/vertx-reactive-3.5/javaagent/vertx-reactive-3.5-javaagent.gradle +++ b/instrumentation/vertx-reactive-3.5/javaagent/vertx-reactive-3.5-javaagent.gradle @@ -17,7 +17,7 @@ dependencies { testInstrumentation project(':instrumentation:jdbc:javaagent') testInstrumentation project(':instrumentation:netty:netty-4.1:javaagent') - testInstrumentation project(':instrumentation:vertx-web-3.0') + testInstrumentation project(':instrumentation:vertx-web-3.0:javaagent') //TODO we should include rjxava2 instrumentation here as well testLibrary group: 'io.vertx', name: 'vertx-web-client', version: vertxVersion diff --git a/instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java similarity index 100% rename from instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java rename to instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java diff --git a/instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxWebInstrumentationModule.java b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxWebInstrumentationModule.java similarity index 100% rename from instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxWebInstrumentationModule.java rename to instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxWebInstrumentationModule.java diff --git a/instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/Contexts.java b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/Contexts.java similarity index 100% rename from instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/Contexts.java rename to instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/Contexts.java diff --git a/instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/HttpRequestInstrumentation.java b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/HttpRequestInstrumentation.java similarity index 100% rename from instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/HttpRequestInstrumentation.java rename to instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/HttpRequestInstrumentation.java diff --git a/instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/VertxClientInstrumentationModule.java b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/VertxClientInstrumentationModule.java similarity index 100% rename from instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/VertxClientInstrumentationModule.java rename to instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/VertxClientInstrumentationModule.java diff --git a/instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/VertxClientTracer.java b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/VertxClientTracer.java similarity index 100% rename from instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/VertxClientTracer.java rename to instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/VertxClientTracer.java diff --git a/instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/package-info.java b/instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/package-info.java similarity index 100% rename from instrumentation/vertx-web-3.0/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/package-info.java rename to instrumentation/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/package-info.java diff --git a/instrumentation/vertx-web-3.0/src/test/groovy/client/VertxHttpClientTest.groovy b/instrumentation/vertx-web-3.0/javaagent/src/test/groovy/client/VertxHttpClientTest.groovy similarity index 100% rename from instrumentation/vertx-web-3.0/src/test/groovy/client/VertxHttpClientTest.groovy rename to instrumentation/vertx-web-3.0/javaagent/src/test/groovy/client/VertxHttpClientTest.groovy diff --git a/instrumentation/vertx-web-3.0/src/test/groovy/client/VertxSingleConnection.java b/instrumentation/vertx-web-3.0/javaagent/src/test/groovy/client/VertxSingleConnection.java similarity index 100% rename from instrumentation/vertx-web-3.0/src/test/groovy/client/VertxSingleConnection.java rename to instrumentation/vertx-web-3.0/javaagent/src/test/groovy/client/VertxSingleConnection.java diff --git a/instrumentation/vertx-web-3.0/src/test/groovy/server/VertxHttpServerTest.groovy b/instrumentation/vertx-web-3.0/javaagent/src/test/groovy/server/VertxHttpServerTest.groovy similarity index 100% rename from instrumentation/vertx-web-3.0/src/test/groovy/server/VertxHttpServerTest.groovy rename to instrumentation/vertx-web-3.0/javaagent/src/test/groovy/server/VertxHttpServerTest.groovy diff --git a/instrumentation/vertx-web-3.0/src/test/java/server/VertxWebServer.java b/instrumentation/vertx-web-3.0/javaagent/src/test/java/server/VertxWebServer.java similarity index 100% rename from instrumentation/vertx-web-3.0/src/test/java/server/VertxWebServer.java rename to instrumentation/vertx-web-3.0/javaagent/src/test/java/server/VertxWebServer.java diff --git a/instrumentation/vertx-web-3.0/vertx-web-3.0.gradle b/instrumentation/vertx-web-3.0/javaagent/vertx-web-3.0-javaagent.gradle similarity index 87% rename from instrumentation/vertx-web-3.0/vertx-web-3.0.gradle rename to instrumentation/vertx-web-3.0/javaagent/vertx-web-3.0-javaagent.gradle index 54b31f707d..9f2ed34812 100644 --- a/instrumentation/vertx-web-3.0/vertx-web-3.0.gradle +++ b/instrumentation/vertx-web-3.0/javaagent/vertx-web-3.0-javaagent.gradle @@ -5,7 +5,9 @@ muzzle { group = 'io.vertx' module = 'vertx-web' versions = "[3.0.0,4.0.0)" - assertInverse = true + //TODO we should split this module into client and server + //They have different version applicability +// assertInverse = true } } diff --git a/javaagent-tooling/javaagent-tooling.gradle b/javaagent-tooling/javaagent-tooling.gradle index 48ada9a2fd..7b85141dd6 100644 --- a/javaagent-tooling/javaagent-tooling.gradle +++ b/javaagent-tooling/javaagent-tooling.gradle @@ -47,7 +47,7 @@ dependencies { implementation deps.opentelemetryZipkin implementation group: 'com.blogspot.mydailyjava', name: 'weak-lock-free', version: '0.15' - implementation deps.bytebuddy + api deps.bytebuddy implementation deps.bytebuddyagent annotationProcessor deps.autoservice implementation deps.autoservice diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/matcher/MuzzleGradlePluginUtil.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/matcher/MuzzleGradlePluginUtil.java index cd63e2dd6e..e5d60b21f9 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/matcher/MuzzleGradlePluginUtil.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/matcher/MuzzleGradlePluginUtil.java @@ -46,6 +46,7 @@ public final class MuzzleGradlePluginUtil { ClassLoader agentClassLoader, ClassLoader userClassLoader, boolean assertPass) throws Exception { // muzzle validate all instrumenters + int validatedModulesCount = 0; for (InstrumentationModule instrumentationModule : ServiceLoader.load(InstrumentationModule.class, agentClassLoader)) { Method getMuzzleReferenceMatcher = null; @@ -87,6 +88,8 @@ public final class MuzzleGradlePluginUtil { getMuzzleReferenceMatcher.setAccessible(false); } } + + validatedModulesCount++; } // run helper injector on all instrumenters if (assertPass) { @@ -108,6 +111,11 @@ public final class MuzzleGradlePluginUtil { } } } + if (validatedModulesCount == 0) { + String errorMessage = "Did not found any InstrumentationModule to validate!"; + System.err.println(errorMessage); + throw new RuntimeException(errorMessage); + } } private static Map createHelperMap( diff --git a/settings.gradle b/settings.gradle index 6a11c4a030..a6bb27c73b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -97,11 +97,11 @@ include ':instrumentation:couchbase:couchbase-testing' include ':instrumentation:dropwizard-views-0.7:javaagent' include ':instrumentation:dropwizard-testing' include ':instrumentation:eclipse-osgi-3.6:javaagent' -include ':instrumentation:elasticsearch:elasticsearch-rest-common:javaagent' +include ':instrumentation:elasticsearch:elasticsearch-rest-common:library' include ':instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent' include ':instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent' include ':instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent' -include ':instrumentation:elasticsearch:elasticsearch-transport-common:javaagent' +include ':instrumentation:elasticsearch:elasticsearch-transport-common:library' include ':instrumentation:elasticsearch:elasticsearch-transport-5.0:javaagent' include ':instrumentation:elasticsearch:elasticsearch-transport-5.3:javaagent' include ':instrumentation:elasticsearch:elasticsearch-transport-6.0:javaagent' @@ -144,7 +144,7 @@ include ':instrumentation:jaxws:jaxws-2.0-cxf-3.0:javaagent' include ':instrumentation:jaxws:jaxws-2.0-cxf-3.0:library' include ':instrumentation:jaxws:jaxws-2.0-metro-2.2:javaagent' include ':instrumentation:jaxws:jaxws-2.0-testing' -include ':instrumentation:jaxws:jaxws-common:javaagent' +include ':instrumentation:jaxws:jaxws-common:library' include ':instrumentation:jaxws:jws-1.1:javaagent' include ':instrumentation:jdbc:javaagent' include ':instrumentation:jdbc:javaagent-unittests' @@ -257,7 +257,7 @@ include ':instrumentation:struts-2.3:javaagent' include ':instrumentation:tomcat-7.0:javaagent' include ':instrumentation:twilio-6.6:javaagent' include ':instrumentation:undertow-1.4:javaagent' -include ':instrumentation:vertx-web-3.0' +include ':instrumentation:vertx-web-3.0:javaagent' include ':instrumentation:vertx-reactive-3.5:javaagent' include ':instrumentation:wicket-8.0:javaagent' include ':instrumentation:rocketmq-client-4.8:javaagent'