Add all otel api bridging instrumentations to testing agent (#13423)

This commit is contained in:
Lauri Tulmin 2025-02-28 19:10:26 +02:00 committed by GitHub
parent 2707e04890
commit 13233958ec
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
22 changed files with 76 additions and 46 deletions

View File

@ -50,4 +50,7 @@ configurations.configureEach {
force("io.opentelemetry:opentelemetry-api:1.4.0")
}
}
if (name == "testRuntimeClasspath") {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}

View File

@ -14,4 +14,7 @@ configurations.configureEach {
force("io.opentelemetry:opentelemetry-api:1.10.0")
}
}
if (name == "testRuntimeClasspath") {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}

View File

@ -5,6 +5,7 @@
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10;
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
import static java.util.Collections.singletonList;
import com.google.auto.service.AutoService;
@ -12,6 +13,7 @@ import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModul
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
import java.util.List;
import net.bytebuddy.matcher.ElementMatcher;
@AutoService(InstrumentationModule.class)
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
@ -26,6 +28,11 @@ public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
return singletonList(new OpenTelemetryInstrumentation());
}
@Override
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
return hasClassesNamed("application.io.opentelemetry.api.metrics.LongGaugeBuilder");
}
@Override
public String getModuleGroup() {
return "opentelemetry-api-bridge";

View File

@ -15,4 +15,7 @@ configurations.configureEach {
force("io.opentelemetry:opentelemetry-api:1.15.0")
}
}
if (name == "testRuntimeClasspath") {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}

View File

@ -5,6 +5,7 @@
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15;
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
import static java.util.Collections.singletonList;
import com.google.auto.service.AutoService;
@ -12,6 +13,7 @@ import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModul
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
import java.util.List;
import net.bytebuddy.matcher.ElementMatcher;
@AutoService(InstrumentationModule.class)
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
@ -25,6 +27,11 @@ public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
return singletonList(new OpenTelemetryInstrumentation());
}
@Override
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
return hasClassesNamed("application.io.opentelemetry.api.metrics.BatchCallback");
}
@Override
public String getModuleGroup() {
return "opentelemetry-api-bridge";

View File

@ -18,4 +18,7 @@ configurations.configureEach {
force("io.opentelemetry:opentelemetry-sdk-testing:1.27.0")
}
}
if (name == "testRuntimeClasspath") {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}

View File

@ -5,6 +5,7 @@
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27;
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
import static java.util.Collections.singletonList;
import com.google.auto.service.AutoService;
@ -12,6 +13,7 @@ import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModul
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
import java.util.List;
import net.bytebuddy.matcher.ElementMatcher;
@AutoService(InstrumentationModule.class)
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
@ -25,6 +27,11 @@ public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
return singletonList(new OpenTelemetryInstrumentation());
}
@Override
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
return hasClassesNamed("application.io.opentelemetry.api.logs.LoggerBuilder");
}
@Override
public String getModuleGroup() {
return "opentelemetry-api-bridge";

View File

@ -7,10 +7,8 @@ dependencies {
compileOnly("io.opentelemetry:opentelemetry-api-incubator")
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent"))
testImplementation("io.opentelemetry:opentelemetry-extension-incubator:1.31.0-alpha")
}

View File

@ -7,10 +7,8 @@ dependencies {
compileOnly("io.opentelemetry:opentelemetry-api-incubator")
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent"))
}
@ -21,9 +19,9 @@ configurations.configureEach {
resolutionStrategy {
force("io.opentelemetry:opentelemetry-api:1.32.0")
}
if (name.equals("testRuntimeClasspath")) {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}
if (name == "testRuntimeClasspath") {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}

View File

@ -27,9 +27,11 @@ public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
// skip instrumentation when opentelemetry-extension-incubator is present, instrumentation is
// handled by OpenTelemetryApiIncubatorInstrumentationModule
return not(
hasClassesNamed(
"application.io.opentelemetry.extension.incubator.metrics.ExtendedDoubleHistogramBuilder"));
return hasClassesNamed("application.io.opentelemetry.api.logs.LoggerBuilder")
.and(
not(
hasClassesNamed(
"application.io.opentelemetry.extension.incubator.metrics.ExtendedDoubleHistogramBuilder")));
}
@Override

View File

@ -7,12 +7,8 @@ dependencies {
compileOnly("io.opentelemetry:opentelemetry-api-incubator")
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent"))
}
configurations.configureEach {
@ -27,9 +23,9 @@ configurations.configureEach {
force("io.opentelemetry:opentelemetry-extension-incubator:1.32.0-alpha")
}
}
if (name.equals("testRuntimeClasspath")) {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}
if (name == "testRuntimeClasspath") {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}

View File

@ -10,7 +10,6 @@ dependencies {
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent"))
@ -22,9 +21,9 @@ configurations.configureEach {
force("io.opentelemetry:opentelemetry-api:1.38.0")
force("io.opentelemetry:opentelemetry-api-incubator:1.38.0-alpha")
}
if (name.equals("testRuntimeClasspath")) {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}
if (name == "testRuntimeClasspath") {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}

View File

@ -27,9 +27,11 @@ public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
// skip instrumentation when opentelemetry-api-incubator is present, instrumentation is
// handled by OpenTelemetryApiIncubatorInstrumentationModule
return not(
hasClassesNamed(
"application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogramBuilder"));
return hasClassesNamed("application.io.opentelemetry.api.metrics.LongGauge")
.and(
not(
hasClassesNamed(
"application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogramBuilder")));
}
@Override

View File

@ -27,6 +27,7 @@ public class OpenTelemetryApiIncubatorInstrumentationModule extends Instrumentat
// skip instrumentation when opentelemetry-api-incubator is not present, instrumentation
// is handled by OpenTelemetryApiInstrumentationModule
return hasClassesNamed(
"application.io.opentelemetry.api.metrics.LongGauge",
"application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogramBuilder");
}

View File

@ -13,4 +13,7 @@ configurations.configureEach {
force("io.opentelemetry:opentelemetry-api:1.4.0")
}
}
if (name == "testRuntimeClasspath") {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}

View File

@ -7,12 +7,9 @@ dependencies {
compileOnly("io.opentelemetry:opentelemetry-api-incubator")
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent"))

View File

@ -7,14 +7,7 @@ dependencies {
compileOnly("io.opentelemetry:opentelemetry-api-incubator")
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent"))
}
@ -24,9 +17,9 @@ configurations.configureEach {
force("io.opentelemetry:opentelemetry-api:1.42.0")
force("io.opentelemetry:opentelemetry-api-incubator:1.42.0-alpha")
}
if (name.equals("testRuntimeClasspath")) {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}
if (name == "testRuntimeClasspath") {
exclude(group = "io.opentelemetry", module = "opentelemetry-api-incubator")
}
}

View File

@ -25,7 +25,9 @@ public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
@Override
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
return not(hasClassesNamed("application.io.opentelemetry.api.incubator.logs.ExtendedLogger"));
return hasClassesNamed("application.io.opentelemetry.api.common.Value")
.and(
not(hasClassesNamed("application.io.opentelemetry.api.incubator.logs.ExtendedLogger")));
}
@Override

View File

@ -27,6 +27,7 @@ public class OpenTelemetryApiIncubatorInstrumentationModule extends Instrumentat
// EventLogger was removed in 1.47, including it here prevents the instrumentation from applying
// to 1.47
return hasClassesNamed(
"application.io.opentelemetry.api.common.Value",
"application.io.opentelemetry.api.incubator.logs.ExtendedLogger",
"application.io.opentelemetry.api.incubator.events.EventLogger");
}

View File

@ -7,14 +7,7 @@ dependencies {
compileOnly("io.opentelemetry:opentelemetry-api-incubator")
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent"))
implementation(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent"))

View File

@ -24,7 +24,9 @@ public class OpenTelemetryApiIncubatorInstrumentationModule extends Instrumentat
@Override
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
return hasClassesNamed("application.io.opentelemetry.api.incubator.logs.ExtendedLogger");
return hasClassesNamed(
"application.io.opentelemetry.api.common.Value",
"application.io.opentelemetry.api.incubator.logs.ExtendedLogger");
}
@Override

View File

@ -76,6 +76,16 @@ dependencies {
baseJavaagentLibs(project(":muzzle"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-instrumentation-api:javaagent"))
baseJavaagentLibs(project(":instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent"))
baseJavaagentLibs(project(":instrumentation:executors:javaagent"))