Skip to content

Commit dd214fd

Browse files
committed
Better classLoaderMatcher testing
1 parent 3c14fe6 commit dd214fd

2 files changed

Lines changed: 18 additions & 0 deletions

File tree

conventions/src/main/kotlin/io.opentelemetry.instrumentation.javaagent-testing.gradle.kts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ val failOnContextLeakProperty = providers.gradleProperty("failOnContextLeak")
1010
.map { it != "false" }
1111
.orElse(true)
1212

13+
val failOnMuzzleMismatchProperty = providers.gradleProperty("failOnMuzzleMismatch")
14+
.map { it == "true" }
15+
.orElse(false)
16+
1317
val testIndyProperty = providers.gradleProperty("testIndy")
1418
.map { it == "true" }
1519
.orElse(false)
@@ -85,6 +89,9 @@ class JavaagentTestArgumentsProvider(
8589
@get:Input
8690
val failOnContextLeak: Boolean,
8791

92+
@get:Input
93+
val failOnMuzzleMismatch: Boolean,
94+
8895
@get:Input
8996
val testIndy: Boolean,
9097

@@ -100,6 +107,7 @@ class JavaagentTestArgumentsProvider(
100107
"-Dotel.javaagent.experimental.initializer.jar=${shadowJar.absolutePath}",
101108
"-Dotel.javaagent.testing.additional-library-ignores.enabled=false",
102109
"-Dotel.javaagent.testing.fail-on-context-leak=$failOnContextLeak",
110+
"-Dotel.javaagent.testing.fail-on-muzzle-mismatch=$failOnMuzzleMismatch",
103111
// prevent sporadic gradle deadlocks, see SafeLogger for more details
104112
"-Dotel.javaagent.testing.transform-safe-logging.enabled=true",
105113
// Reduce noise in assertion messages since we don't need to verify this in most tests. We check
@@ -140,13 +148,15 @@ afterEvaluate {
140148
dependsOn(agentForTesting.buildDependencies)
141149

142150
val failOnContextLeakOverride = failOnContextLeakProperty.get()
151+
val failOnMuzzleMismatchOverride = failOnMuzzleMismatchProperty.get()
143152
val testIndyEnabled = testIndyProperty.get()
144153

145154
jvmArgumentProviders.add(
146155
JavaagentTestArgumentsProvider(
147156
agentShadowJar,
148157
shadowJar.archiveFile.get().asFile,
149158
failOnContextLeakOverride,
159+
failOnMuzzleMismatchOverride,
150160
testIndyEnabled,
151161
denyUnsafe
152162
)

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/MuzzleMatcher.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
*/
3535
class MuzzleMatcher implements AgentBuilder.RawMatcher {
3636

37+
private static final boolean FAIL_ON_MUZZLE_MISMATCH =
38+
Boolean.getBoolean("otel.javaagent.testing.fail-on-muzzle-mismatch");
39+
3740
private static final Logger muzzleLogger = Logger.getLogger(MuzzleMatcher.class.getName());
3841

3942
private final TransformSafeLogger instrumentationLogger;
@@ -94,6 +97,11 @@ private boolean doesMatch(ClassLoader classLoader) {
9497
muzzleLogger.log(muzzleLogLevel, "-- {0}", mismatch);
9598
}
9699
}
100+
if (FAIL_ON_MUZZLE_MISMATCH) {
101+
throw new IllegalStateException(
102+
"Muzzle mismatch detected for instrumentation "
103+
+ instrumentationModule.instrumentationName());
104+
}
97105
} else {
98106
if (instrumentationLogger.isLoggable(FINE)) {
99107
instrumentationLogger.log(

0 commit comments

Comments
 (0)