Bridge more incubating api (#12230)
This commit is contained in:
parent
a07e84a748
commit
d3068c8c61
|
|
@ -5,26 +5,20 @@
|
|||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace;
|
||||
|
||||
import static io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging.toAgentOrNull;
|
||||
|
||||
import application.io.opentelemetry.api.common.AttributeKey;
|
||||
import application.io.opentelemetry.api.common.Attributes;
|
||||
import application.io.opentelemetry.api.trace.Span;
|
||||
import application.io.opentelemetry.api.trace.SpanBuilder;
|
||||
import application.io.opentelemetry.api.trace.SpanContext;
|
||||
import application.io.opentelemetry.api.trace.SpanKind;
|
||||
import application.io.opentelemetry.api.trace.StatusCode;
|
||||
import application.io.opentelemetry.context.Context;
|
||||
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
class ApplicationSpan implements Span {
|
||||
public class ApplicationSpan implements Span {
|
||||
|
||||
private final io.opentelemetry.api.trace.Span agentSpan;
|
||||
|
||||
ApplicationSpan(io.opentelemetry.api.trace.Span agentSpan) {
|
||||
public ApplicationSpan(io.opentelemetry.api.trace.Span agentSpan) {
|
||||
this.agentSpan = agentSpan;
|
||||
}
|
||||
|
||||
|
|
@ -190,103 +184,4 @@ class ApplicationSpan implements Span {
|
|||
public int hashCode() {
|
||||
return agentSpan.hashCode();
|
||||
}
|
||||
|
||||
static class Builder implements SpanBuilder {
|
||||
|
||||
private final io.opentelemetry.api.trace.SpanBuilder agentBuilder;
|
||||
|
||||
Builder(io.opentelemetry.api.trace.SpanBuilder agentBuilder) {
|
||||
this.agentBuilder = agentBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setParent(Context applicationContext) {
|
||||
agentBuilder.setParent(AgentContextStorage.getAgentContext(applicationContext));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setNoParent() {
|
||||
agentBuilder.setNoParent();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder addLink(SpanContext applicationSpanContext) {
|
||||
agentBuilder.addLink(Bridging.toAgent(applicationSpanContext));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder addLink(
|
||||
SpanContext applicationSpanContext, Attributes applicationAttributes) {
|
||||
agentBuilder.addLink(Bridging.toAgent(applicationSpanContext));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setAttribute(String key, String value) {
|
||||
agentBuilder.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setAttribute(String key, long value) {
|
||||
agentBuilder.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setAttribute(String key, double value) {
|
||||
agentBuilder.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setAttribute(String key, boolean value) {
|
||||
agentBuilder.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public <T> SpanBuilder setAttribute(AttributeKey<T> applicationKey, T value) {
|
||||
@SuppressWarnings("unchecked")
|
||||
io.opentelemetry.api.common.AttributeKey<T> agentKey = Bridging.toAgent(applicationKey);
|
||||
if (agentKey != null) {
|
||||
agentBuilder.setAttribute(agentKey, value);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setSpanKind(SpanKind applicationSpanKind) {
|
||||
io.opentelemetry.api.trace.SpanKind agentSpanKind = toAgentOrNull(applicationSpanKind);
|
||||
if (agentSpanKind != null) {
|
||||
agentBuilder.setSpanKind(agentSpanKind);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setStartTimestamp(long startTimestamp, TimeUnit unit) {
|
||||
agentBuilder.setStartTimestamp(startTimestamp, unit);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Span startSpan() {
|
||||
return new ApplicationSpan(agentBuilder.startSpan());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,117 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace;
|
||||
|
||||
import static io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging.toAgentOrNull;
|
||||
|
||||
import application.io.opentelemetry.api.common.AttributeKey;
|
||||
import application.io.opentelemetry.api.common.Attributes;
|
||||
import application.io.opentelemetry.api.trace.Span;
|
||||
import application.io.opentelemetry.api.trace.SpanBuilder;
|
||||
import application.io.opentelemetry.api.trace.SpanContext;
|
||||
import application.io.opentelemetry.api.trace.SpanKind;
|
||||
import application.io.opentelemetry.context.Context;
|
||||
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class ApplicationSpanBuilder implements SpanBuilder {
|
||||
|
||||
private final io.opentelemetry.api.trace.SpanBuilder agentBuilder;
|
||||
|
||||
protected ApplicationSpanBuilder(io.opentelemetry.api.trace.SpanBuilder agentBuilder) {
|
||||
this.agentBuilder = agentBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setParent(Context applicationContext) {
|
||||
agentBuilder.setParent(AgentContextStorage.getAgentContext(applicationContext));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setNoParent() {
|
||||
agentBuilder.setNoParent();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder addLink(SpanContext applicationSpanContext) {
|
||||
agentBuilder.addLink(Bridging.toAgent(applicationSpanContext));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder addLink(SpanContext applicationSpanContext, Attributes applicationAttributes) {
|
||||
agentBuilder.addLink(Bridging.toAgent(applicationSpanContext));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setAttribute(String key, String value) {
|
||||
agentBuilder.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setAttribute(String key, long value) {
|
||||
agentBuilder.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setAttribute(String key, double value) {
|
||||
agentBuilder.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setAttribute(String key, boolean value) {
|
||||
agentBuilder.setAttribute(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public <T> SpanBuilder setAttribute(AttributeKey<T> applicationKey, T value) {
|
||||
@SuppressWarnings("unchecked")
|
||||
io.opentelemetry.api.common.AttributeKey<T> agentKey = Bridging.toAgent(applicationKey);
|
||||
if (agentKey != null) {
|
||||
agentBuilder.setAttribute(agentKey, value);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setSpanKind(SpanKind applicationSpanKind) {
|
||||
io.opentelemetry.api.trace.SpanKind agentSpanKind = toAgentOrNull(applicationSpanKind);
|
||||
if (agentSpanKind != null) {
|
||||
agentBuilder.setSpanKind(agentSpanKind);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public SpanBuilder setStartTimestamp(long startTimestamp, TimeUnit unit) {
|
||||
agentBuilder.setStartTimestamp(startTimestamp, unit);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Span startSpan() {
|
||||
return new ApplicationSpan(agentBuilder.startSpan());
|
||||
}
|
||||
}
|
||||
|
|
@ -18,6 +18,6 @@ public class ApplicationTracer implements Tracer {
|
|||
|
||||
@Override
|
||||
public SpanBuilder spanBuilder(String spanName) {
|
||||
return new ApplicationSpan.Builder(agentTracer.spanBuilder(spanName));
|
||||
return new ApplicationSpanBuilder(agentTracer.spanBuilder(spanName));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace;
|
||||
|
||||
public interface ApplicationTracerFactory {
|
||||
|
||||
ApplicationTracer newTracer(io.opentelemetry.api.trace.Tracer agentTracer);
|
||||
}
|
||||
|
|
@ -7,7 +7,6 @@ package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace;
|
|||
|
||||
import application.io.opentelemetry.api.trace.Tracer;
|
||||
import application.io.opentelemetry.api.trace.TracerProvider;
|
||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.lang.invoke.MethodType;
|
||||
|
|
@ -16,10 +15,13 @@ public class ApplicationTracerProvider implements TracerProvider {
|
|||
|
||||
private static final MethodHandle TRACE_PROVIDER_14 = getApplicationTracerProvider14();
|
||||
|
||||
protected final ApplicationTracerFactory tracerFactory;
|
||||
protected final io.opentelemetry.api.trace.TracerProvider agentTracerProvider;
|
||||
|
||||
protected ApplicationTracerProvider(
|
||||
ApplicationTracerFactory tracerFactory,
|
||||
io.opentelemetry.api.trace.TracerProvider agentTracerProvider) {
|
||||
this.tracerFactory = tracerFactory;
|
||||
this.agentTracerProvider = agentTracerProvider;
|
||||
}
|
||||
|
||||
|
|
@ -48,17 +50,17 @@ public class ApplicationTracerProvider implements TracerProvider {
|
|||
}
|
||||
}
|
||||
|
||||
return new ApplicationTracerProvider(agentTracerProvider);
|
||||
return new ApplicationTracerProvider(ApplicationTracer::new, agentTracerProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tracer get(String instrumentationName) {
|
||||
return new ApplicationTracer(agentTracerProvider.get(instrumentationName));
|
||||
return tracerFactory.newTracer(agentTracerProvider.get(instrumentationName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tracer get(String instrumentationName, String instrumentationVersion) {
|
||||
return new ApplicationTracer(
|
||||
GlobalOpenTelemetry.getTracerProvider().get(instrumentationName, instrumentationVersion));
|
||||
return tracerFactory.newTracer(
|
||||
agentTracerProvider.get(instrumentationName, instrumentationVersion));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,11 +11,11 @@ import application.io.opentelemetry.context.Context;
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging;
|
||||
|
||||
class ApplicationDoubleCounter implements DoubleCounter {
|
||||
public class ApplicationDoubleCounter implements DoubleCounter {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleCounter agentCounter;
|
||||
|
||||
ApplicationDoubleCounter(io.opentelemetry.api.metrics.DoubleCounter agentCounter) {
|
||||
protected ApplicationDoubleCounter(io.opentelemetry.api.metrics.DoubleCounter agentCounter) {
|
||||
this.agentCounter = agentCounter;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,11 +11,12 @@ import application.io.opentelemetry.context.Context;
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging;
|
||||
|
||||
final class ApplicationDoubleHistogram implements DoubleHistogram {
|
||||
public class ApplicationDoubleHistogram implements DoubleHistogram {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleHistogram agentHistogram;
|
||||
|
||||
ApplicationDoubleHistogram(io.opentelemetry.api.metrics.DoubleHistogram agentHistogram) {
|
||||
protected ApplicationDoubleHistogram(
|
||||
io.opentelemetry.api.metrics.DoubleHistogram agentHistogram) {
|
||||
this.agentHistogram = agentHistogram;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,11 +11,12 @@ import application.io.opentelemetry.context.Context;
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging;
|
||||
|
||||
class ApplicationDoubleUpDownCounter implements DoubleUpDownCounter {
|
||||
public class ApplicationDoubleUpDownCounter implements DoubleUpDownCounter {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleUpDownCounter agentCounter;
|
||||
|
||||
ApplicationDoubleUpDownCounter(io.opentelemetry.api.metrics.DoubleUpDownCounter agentCounter) {
|
||||
protected ApplicationDoubleUpDownCounter(
|
||||
io.opentelemetry.api.metrics.DoubleUpDownCounter agentCounter) {
|
||||
this.agentCounter = agentCounter;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,11 +11,11 @@ import application.io.opentelemetry.context.Context;
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging;
|
||||
|
||||
class ApplicationLongCounter implements LongCounter {
|
||||
public class ApplicationLongCounter implements LongCounter {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongCounter agentCounter;
|
||||
|
||||
ApplicationLongCounter(io.opentelemetry.api.metrics.LongCounter agentCounter) {
|
||||
protected ApplicationLongCounter(io.opentelemetry.api.metrics.LongCounter agentCounter) {
|
||||
this.agentCounter = agentCounter;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,11 +11,11 @@ import application.io.opentelemetry.context.Context;
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging;
|
||||
|
||||
final class ApplicationLongHistogram implements LongHistogram {
|
||||
public class ApplicationLongHistogram implements LongHistogram {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongHistogram agentHistogram;
|
||||
|
||||
ApplicationLongHistogram(io.opentelemetry.api.metrics.LongHistogram agentHistogram) {
|
||||
protected ApplicationLongHistogram(io.opentelemetry.api.metrics.LongHistogram agentHistogram) {
|
||||
this.agentHistogram = agentHistogram;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,11 +11,12 @@ import application.io.opentelemetry.context.Context;
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging;
|
||||
|
||||
class ApplicationLongUpDownCounter implements LongUpDownCounter {
|
||||
public class ApplicationLongUpDownCounter implements LongUpDownCounter {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongUpDownCounter agentCounter;
|
||||
|
||||
ApplicationLongUpDownCounter(io.opentelemetry.api.metrics.LongUpDownCounter agentCounter) {
|
||||
protected ApplicationLongUpDownCounter(
|
||||
io.opentelemetry.api.metrics.LongUpDownCounter agentCounter) {
|
||||
this.agentCounter = agentCounter;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,12 +11,14 @@ import application.io.opentelemetry.api.metrics.MeterProvider;
|
|||
import application.io.opentelemetry.api.trace.TracerProvider;
|
||||
import application.io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.propagation.ApplicationContextPropagators;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerFactory;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationMeterFactory;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationMeterProvider;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.metrics.ApplicationMeterFactory115;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerFactory;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerFactory127;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerProvider;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.trace.ApplicationTracerFactory127;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.trace.ApplicationTracerProvider14;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
|
|
@ -36,7 +38,7 @@ public final class ApplicationOpenTelemetry127 implements OpenTelemetry {
|
|||
io.opentelemetry.api.OpenTelemetry agentOpenTelemetry =
|
||||
io.opentelemetry.api.GlobalOpenTelemetry.get();
|
||||
applicationTracerProvider =
|
||||
new ApplicationTracerProvider14(agentOpenTelemetry.getTracerProvider());
|
||||
new ApplicationTracerProvider14(getTracerFactory(), agentOpenTelemetry.getTracerProvider());
|
||||
applicationContextPropagators =
|
||||
new ApplicationContextPropagators(agentOpenTelemetry.getPropagators());
|
||||
applicationMeterProvider =
|
||||
|
|
@ -66,10 +68,16 @@ public final class ApplicationOpenTelemetry127 implements OpenTelemetry {
|
|||
}
|
||||
|
||||
private static ApplicationMeterFactory getMeterFactory() {
|
||||
// this class is defined in opentelemetry-api-1.38
|
||||
// this class is defined in opentelemetry-api-1.40
|
||||
ApplicationMeterFactory meterFactory =
|
||||
getMeterFactory(
|
||||
"io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.metrics.ApplicationMeterFactory138Incubator");
|
||||
"io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics.ApplicationMeterFactory140Incubator");
|
||||
if (meterFactory == null) {
|
||||
// this class is defined in opentelemetry-api-1.38
|
||||
meterFactory =
|
||||
getMeterFactory(
|
||||
"io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.metrics.ApplicationMeterFactory138Incubator");
|
||||
}
|
||||
if (meterFactory == null) {
|
||||
// this class is defined in opentelemetry-api-1.38
|
||||
meterFactory =
|
||||
|
|
@ -115,7 +123,18 @@ public final class ApplicationOpenTelemetry127 implements OpenTelemetry {
|
|||
// this class is defined in opentelemetry-api-1.42
|
||||
ApplicationLoggerFactory loggerFactory =
|
||||
getLoggerFactory(
|
||||
"io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.logs.ApplicationLoggerFactory142");
|
||||
"io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.logs.ApplicationLoggerFactory142Incubator");
|
||||
if (loggerFactory == null) {
|
||||
loggerFactory =
|
||||
getLoggerFactory(
|
||||
"io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.logs.ApplicationLoggerFactory142");
|
||||
}
|
||||
if (loggerFactory == null) {
|
||||
// this class is defined in opentelemetry-api-1.40
|
||||
loggerFactory =
|
||||
getLoggerFactory(
|
||||
"io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.logs.ApplicationLoggerFactory140Incubator");
|
||||
}
|
||||
if (loggerFactory == null) {
|
||||
loggerFactory = new ApplicationLoggerFactory127();
|
||||
}
|
||||
|
|
@ -127,6 +146,22 @@ public final class ApplicationOpenTelemetry127 implements OpenTelemetry {
|
|||
return getFactory(className, ApplicationLoggerFactory.class);
|
||||
}
|
||||
|
||||
private static ApplicationTracerFactory getTracerFactory() {
|
||||
// this class is defined in opentelemetry-api-1.40
|
||||
ApplicationTracerFactory tracerFactory =
|
||||
getTracerFactory(
|
||||
"io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.trace.ApplicationTracerFactory140Incubator");
|
||||
if (tracerFactory == null) {
|
||||
tracerFactory = new ApplicationTracerFactory127();
|
||||
}
|
||||
|
||||
return tracerFactory;
|
||||
}
|
||||
|
||||
private static ApplicationTracerFactory getTracerFactory(String className) {
|
||||
return getFactory(className, ApplicationTracerFactory.class);
|
||||
}
|
||||
|
||||
private static <T> T getFactory(String className, Class<T> factoryClass) {
|
||||
try {
|
||||
Class<?> clazz = Class.forName(className);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.trace;
|
||||
|
||||
import io.opentelemetry.api.trace.Tracer;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracer;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerFactory;
|
||||
|
||||
public class ApplicationTracerFactory127 implements ApplicationTracerFactory {
|
||||
|
||||
@Override
|
||||
public ApplicationTracer newTracer(Tracer agentTracer) {
|
||||
return new ApplicationTracer(agentTracer);
|
||||
}
|
||||
}
|
||||
|
|
@ -11,12 +11,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridgin
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleCounterBuilder;
|
||||
import java.util.List;
|
||||
|
||||
final class ApplicationDoubleCounterBuilder137 extends ApplicationDoubleCounterBuilder
|
||||
public class ApplicationDoubleCounterBuilder137 extends ApplicationDoubleCounterBuilder
|
||||
implements ExtendedDoubleCounterBuilder {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleCounterBuilder agentBuilder;
|
||||
|
||||
ApplicationDoubleCounterBuilder137(
|
||||
protected ApplicationDoubleCounterBuilder137(
|
||||
io.opentelemetry.api.metrics.DoubleCounterBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
|
|
|
|||
|
|
@ -12,12 +12,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridgin
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleHistogramBuilder;
|
||||
import java.util.List;
|
||||
|
||||
final class ApplicationDoubleHistogramBuilder137 extends ApplicationDoubleHistogramBuilder
|
||||
public class ApplicationDoubleHistogramBuilder137 extends ApplicationDoubleHistogramBuilder
|
||||
implements ExtendedDoubleHistogramBuilder {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleHistogramBuilder agentBuilder;
|
||||
|
||||
ApplicationDoubleHistogramBuilder137(
|
||||
protected ApplicationDoubleHistogramBuilder137(
|
||||
io.opentelemetry.api.metrics.DoubleHistogramBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
|
|
|
|||
|
|
@ -11,12 +11,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridgin
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleUpDownCounterBuilder;
|
||||
import java.util.List;
|
||||
|
||||
final class ApplicationDoubleUpDownCounterBuilder137 extends ApplicationDoubleUpDownCounterBuilder
|
||||
public class ApplicationDoubleUpDownCounterBuilder137 extends ApplicationDoubleUpDownCounterBuilder
|
||||
implements ExtendedDoubleUpDownCounterBuilder {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder agentBuilder;
|
||||
|
||||
ApplicationDoubleUpDownCounterBuilder137(
|
||||
protected ApplicationDoubleUpDownCounterBuilder137(
|
||||
io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
|
|
|
|||
|
|
@ -12,12 +12,13 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridgin
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongCounterBuilder;
|
||||
import java.util.List;
|
||||
|
||||
final class ApplicationLongCounterBuilder137 extends ApplicationLongCounterBuilder
|
||||
public class ApplicationLongCounterBuilder137 extends ApplicationLongCounterBuilder
|
||||
implements ExtendedLongCounterBuilder {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongCounterBuilder agentBuilder;
|
||||
|
||||
ApplicationLongCounterBuilder137(io.opentelemetry.api.metrics.LongCounterBuilder agentBuilder) {
|
||||
protected ApplicationLongCounterBuilder137(
|
||||
io.opentelemetry.api.metrics.LongCounterBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,12 +11,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridgin
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongHistogramBuilder;
|
||||
import java.util.List;
|
||||
|
||||
final class ApplicationLongHistogramBuilder137 extends ApplicationLongHistogramBuilder
|
||||
public class ApplicationLongHistogramBuilder137 extends ApplicationLongHistogramBuilder
|
||||
implements ExtendedLongHistogramBuilder {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongHistogramBuilder agentBuilder;
|
||||
|
||||
ApplicationLongHistogramBuilder137(
|
||||
protected ApplicationLongHistogramBuilder137(
|
||||
io.opentelemetry.api.metrics.LongHistogramBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
|
|
|
|||
|
|
@ -12,12 +12,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridgin
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongUpDownCounterBuilder;
|
||||
import java.util.List;
|
||||
|
||||
final class ApplicationLongUpDownCounterBuilder137 extends ApplicationLongUpDownCounterBuilder
|
||||
public class ApplicationLongUpDownCounterBuilder137 extends ApplicationLongUpDownCounterBuilder
|
||||
implements ExtendedLongUpDownCounterBuilder {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongUpDownCounterBuilder agentBuilder;
|
||||
|
||||
ApplicationLongUpDownCounterBuilder137(
|
||||
protected ApplicationLongUpDownCounterBuilder137(
|
||||
io.opentelemetry.api.metrics.LongUpDownCounterBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
|
|
|
|||
|
|
@ -12,12 +12,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridgin
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics.ApplicationDoubleGaugeBuilder138;
|
||||
import java.util.List;
|
||||
|
||||
final class ApplicationDoubleGaugeBuilder138Incubator extends ApplicationDoubleGaugeBuilder138
|
||||
public class ApplicationDoubleGaugeBuilder138Incubator extends ApplicationDoubleGaugeBuilder138
|
||||
implements ExtendedDoubleGaugeBuilder {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleGaugeBuilder agentBuilder;
|
||||
|
||||
ApplicationDoubleGaugeBuilder138Incubator(
|
||||
protected ApplicationDoubleGaugeBuilder138Incubator(
|
||||
io.opentelemetry.api.metrics.DoubleGaugeBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
|
|
|
|||
|
|
@ -11,12 +11,12 @@ import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridgin
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics.ApplicationLongGaugeBuilder138;
|
||||
import java.util.List;
|
||||
|
||||
final class ApplicationLongGaugeBuilder138Incubator extends ApplicationLongGaugeBuilder138
|
||||
public class ApplicationLongGaugeBuilder138Incubator extends ApplicationLongGaugeBuilder138
|
||||
implements ExtendedLongGaugeBuilder {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongGaugeBuilder agentBuilder;
|
||||
|
||||
ApplicationLongGaugeBuilder138Incubator(
|
||||
protected ApplicationLongGaugeBuilder138Incubator(
|
||||
io.opentelemetry.api.metrics.LongGaugeBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.common.Attributes;
|
||||
import application.io.opentelemetry.api.metrics.DoubleGauge;
|
||||
import application.io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging;
|
||||
|
||||
public class ApplicationDoubleGauge138 implements DoubleGauge {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleGauge agentDoubleGauge;
|
||||
|
||||
protected ApplicationDoubleGauge138(io.opentelemetry.api.metrics.DoubleGauge agentDoubleGauge) {
|
||||
this.agentDoubleGauge = agentDoubleGauge;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(double value) {
|
||||
agentDoubleGauge.set(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(double value, Attributes attributes) {
|
||||
agentDoubleGauge.set(value, Bridging.toAgent(attributes));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(double value, Attributes attributes, Context applicationContext) {
|
||||
agentDoubleGauge.set(
|
||||
value,
|
||||
Bridging.toAgent(attributes),
|
||||
AgentContextStorage.getAgentContext(applicationContext));
|
||||
}
|
||||
}
|
||||
|
|
@ -5,12 +5,8 @@
|
|||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.common.Attributes;
|
||||
import application.io.opentelemetry.api.metrics.DoubleGauge;
|
||||
import application.io.opentelemetry.api.metrics.LongGaugeBuilder;
|
||||
import application.io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleGaugeBuilder;
|
||||
|
||||
public class ApplicationDoubleGaugeBuilder138 extends ApplicationDoubleGaugeBuilder {
|
||||
|
|
@ -31,25 +27,6 @@ public class ApplicationDoubleGaugeBuilder138 extends ApplicationDoubleGaugeBuil
|
|||
@Override
|
||||
public DoubleGauge build() {
|
||||
io.opentelemetry.api.metrics.DoubleGauge agentDoubleGauge = agentBuilder.build();
|
||||
return new DoubleGauge() {
|
||||
|
||||
@Override
|
||||
public void set(double value) {
|
||||
agentDoubleGauge.set(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(double value, Attributes attributes) {
|
||||
agentDoubleGauge.set(value, Bridging.toAgent(attributes));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(double value, Attributes attributes, Context applicationContext) {
|
||||
agentDoubleGauge.set(
|
||||
value,
|
||||
Bridging.toAgent(attributes),
|
||||
AgentContextStorage.getAgentContext(applicationContext));
|
||||
}
|
||||
};
|
||||
return new ApplicationDoubleGauge138(agentDoubleGauge);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.common.Attributes;
|
||||
import application.io.opentelemetry.api.metrics.LongGauge;
|
||||
import application.io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging;
|
||||
|
||||
public class ApplicationLongGauge138 implements LongGauge {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongGauge agentLongGauge;
|
||||
|
||||
protected ApplicationLongGauge138(io.opentelemetry.api.metrics.LongGauge agentLongGauge) {
|
||||
this.agentLongGauge = agentLongGauge;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(long value) {
|
||||
agentLongGauge.set(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(long value, Attributes attributes) {
|
||||
agentLongGauge.set(value, Bridging.toAgent(attributes));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(long value, Attributes attributes, Context applicationContext) {
|
||||
agentLongGauge.set(
|
||||
value,
|
||||
Bridging.toAgent(attributes),
|
||||
AgentContextStorage.getAgentContext(applicationContext));
|
||||
}
|
||||
}
|
||||
|
|
@ -5,11 +5,7 @@
|
|||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.common.Attributes;
|
||||
import application.io.opentelemetry.api.metrics.LongGauge;
|
||||
import application.io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.Bridging;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongGaugeBuilder;
|
||||
|
||||
public class ApplicationLongGaugeBuilder138 extends ApplicationLongGaugeBuilder {
|
||||
|
|
@ -25,24 +21,6 @@ public class ApplicationLongGaugeBuilder138 extends ApplicationLongGaugeBuilder
|
|||
@Override
|
||||
public LongGauge build() {
|
||||
io.opentelemetry.api.metrics.LongGauge agentLongGauge = agentBuilder.build();
|
||||
return new LongGauge() {
|
||||
@Override
|
||||
public void set(long value) {
|
||||
agentLongGauge.set(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(long value, Attributes attributes) {
|
||||
agentLongGauge.set(value, Bridging.toAgent(attributes));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(long value, Attributes attributes, Context applicationContext) {
|
||||
agentLongGauge.set(
|
||||
value,
|
||||
Bridging.toAgent(attributes),
|
||||
AgentContextStorage.getAgentContext(applicationContext));
|
||||
}
|
||||
};
|
||||
return new ApplicationLongGauge138(agentLongGauge);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,13 +8,17 @@ package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.trace;
|
|||
import application.io.opentelemetry.api.trace.Tracer;
|
||||
import application.io.opentelemetry.api.trace.TracerBuilder;
|
||||
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracer;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerFactory;
|
||||
|
||||
class ApplicationTracerBuilder implements TracerBuilder {
|
||||
|
||||
private final ApplicationTracerFactory tracerFactory;
|
||||
private final io.opentelemetry.api.trace.TracerBuilder agentTracerBuilder;
|
||||
|
||||
public ApplicationTracerBuilder(io.opentelemetry.api.trace.TracerBuilder agentTracerBuilder) {
|
||||
public ApplicationTracerBuilder(
|
||||
ApplicationTracerFactory tracerFactory,
|
||||
io.opentelemetry.api.trace.TracerBuilder agentTracerBuilder) {
|
||||
this.tracerFactory = tracerFactory;
|
||||
this.agentTracerBuilder = agentTracerBuilder;
|
||||
}
|
||||
|
||||
|
|
@ -34,6 +38,6 @@ class ApplicationTracerBuilder implements TracerBuilder {
|
|||
|
||||
@Override
|
||||
public Tracer build() {
|
||||
return new ApplicationTracer(agentTracerBuilder.build());
|
||||
return tracerFactory.newTracer(agentTracerBuilder.build());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.trace;
|
||||
|
||||
import application.io.opentelemetry.api.trace.TracerBuilder;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracer;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerFactory;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerProvider;
|
||||
|
||||
// this class is used from opentelemetry-api-1.0 via reflection
|
||||
|
|
@ -15,11 +17,20 @@ public class ApplicationTracerProvider14 extends ApplicationTracerProvider {
|
|||
@SuppressWarnings("UnnecessarilyFullyQualified")
|
||||
public ApplicationTracerProvider14(
|
||||
io.opentelemetry.api.trace.TracerProvider agentTracerProvider) {
|
||||
super(agentTracerProvider);
|
||||
this(ApplicationTracer::new, agentTracerProvider);
|
||||
}
|
||||
|
||||
// Our convention for accessing agent package
|
||||
@SuppressWarnings("UnnecessarilyFullyQualified")
|
||||
public ApplicationTracerProvider14(
|
||||
ApplicationTracerFactory tracerFactory,
|
||||
io.opentelemetry.api.trace.TracerProvider agentTracerProvider) {
|
||||
super(tracerFactory, agentTracerProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TracerBuilder tracerBuilder(String instrumentationName) {
|
||||
return new ApplicationTracerBuilder(agentTracerProvider.tracerBuilder(instrumentationName));
|
||||
return new ApplicationTracerBuilder(
|
||||
tracerFactory, agentTracerProvider.tracerBuilder(instrumentationName));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
plugins {
|
||||
id("otel.javaagent-instrumentation")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly(project(":opentelemetry-api-shaded-for-instrumenting", configuration = "v1_40"))
|
||||
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"))
|
||||
}
|
||||
|
||||
configurations.configureEach {
|
||||
if (name.endsWith("testRuntimeClasspath", true) || name.endsWith("testCompileClasspath", true)) {
|
||||
resolutionStrategy {
|
||||
force("io.opentelemetry:opentelemetry-api:1.40.0")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator;
|
||||
|
||||
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
|
||||
import static java.util.Collections.singletonList;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
|
||||
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 OpenTelemetryApiIncubatorInstrumentationModule extends InstrumentationModule
|
||||
implements ExperimentalInstrumentationModule {
|
||||
public OpenTelemetryApiIncubatorInstrumentationModule() {
|
||||
super("opentelemetry-api", "opentelemetry-api-1.40", "opentelemetry-api-incubator-1.40");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
|
||||
return hasClassesNamed(
|
||||
"application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TypeInstrumentation> typeInstrumentations() {
|
||||
return singletonList(new OpenTelemetryIncubatorInstrumentation());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getModuleGroup() {
|
||||
return "opentelemetry-api-bridge";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.none;
|
||||
|
||||
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
|
||||
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.logs.ApplicationLoggerFactory140Incubator;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics.ApplicationMeterFactory140Incubator;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.trace.ApplicationTracerFactory140Incubator;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
import net.bytebuddy.description.type.TypeDescription;
|
||||
import net.bytebuddy.matcher.ElementMatcher;
|
||||
|
||||
public class OpenTelemetryIncubatorInstrumentation implements TypeInstrumentation {
|
||||
|
||||
@Override
|
||||
public ElementMatcher<TypeDescription> typeMatcher() {
|
||||
return named("application.io.opentelemetry.api.GlobalOpenTelemetry");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void transform(TypeTransformer transformer) {
|
||||
transformer.applyAdviceToMethod(
|
||||
none(), OpenTelemetryIncubatorInstrumentation.class.getName() + "$InitAdvice");
|
||||
}
|
||||
|
||||
@SuppressWarnings({"ReturnValueIgnored", "unused"})
|
||||
public static class InitAdvice {
|
||||
@Advice.OnMethodEnter
|
||||
public static void init() {
|
||||
// the sole purpose of this advice is to ensure that these classes are recognized as helper
|
||||
// class and injected into class loader
|
||||
ApplicationLoggerFactory140Incubator.class.getName();
|
||||
ApplicationMeterFactory140Incubator.class.getName();
|
||||
ApplicationTracerFactory140Incubator.class.getName();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.logs;
|
||||
|
||||
import application.io.opentelemetry.api.incubator.logs.ExtendedLogger;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLogger;
|
||||
|
||||
public class ApplicationLogger140Incubator extends ApplicationLogger implements ExtendedLogger {
|
||||
|
||||
private final io.opentelemetry.api.logs.Logger agentLogger;
|
||||
|
||||
protected ApplicationLogger140Incubator(io.opentelemetry.api.logs.Logger agentLogger) {
|
||||
super(agentLogger);
|
||||
this.agentLogger = agentLogger;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return ((io.opentelemetry.api.incubator.logs.ExtendedLogger) agentLogger).isEnabled();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.logs;
|
||||
|
||||
import io.opentelemetry.api.logs.Logger;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLogger;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerFactory;
|
||||
|
||||
// this class is used from opentelemetry-api-1.27.0 via reflection
|
||||
public class ApplicationLoggerFactory140Incubator implements ApplicationLoggerFactory {
|
||||
|
||||
@Override
|
||||
public ApplicationLogger newLogger(Logger agentLogger) {
|
||||
return new ApplicationLogger140Incubator(agentLogger);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounter;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleCounter;
|
||||
|
||||
final class ApplicationDoubleCounter140Incubator extends ApplicationDoubleCounter
|
||||
implements ExtendedDoubleCounter {
|
||||
private final io.opentelemetry.api.metrics.DoubleCounter agentCounter;
|
||||
|
||||
ApplicationDoubleCounter140Incubator(io.opentelemetry.api.metrics.DoubleCounter agentCounter) {
|
||||
super(agentCounter);
|
||||
this.agentCounter = agentCounter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return ((io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounter) agentCounter)
|
||||
.isEnabled();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.metrics.DoubleCounter;
|
||||
import io.opentelemetry.api.metrics.DoubleCounterBuilder;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.ApplicationDoubleCounterBuilder137;
|
||||
|
||||
final class ApplicationDoubleCounterBuilder140Incubator extends ApplicationDoubleCounterBuilder137 {
|
||||
private final io.opentelemetry.api.metrics.DoubleCounterBuilder agentBuilder;
|
||||
|
||||
ApplicationDoubleCounterBuilder140Incubator(DoubleCounterBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleCounter build() {
|
||||
return new ApplicationDoubleCounter140Incubator(agentBuilder.build());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleGauge;
|
||||
import io.opentelemetry.api.metrics.DoubleGauge;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics.ApplicationDoubleGauge138;
|
||||
|
||||
final class ApplicationDoubleGauge140Incubator extends ApplicationDoubleGauge138
|
||||
implements ExtendedDoubleGauge {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleGauge agentDoubleGauge;
|
||||
|
||||
ApplicationDoubleGauge140Incubator(DoubleGauge agentDoubleGauge) {
|
||||
super(agentDoubleGauge);
|
||||
this.agentDoubleGauge = agentDoubleGauge;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return ((io.opentelemetry.api.incubator.metrics.ExtendedDoubleGauge) agentDoubleGauge)
|
||||
.isEnabled();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.metrics.DoubleGauge;
|
||||
import application.io.opentelemetry.api.metrics.LongGaugeBuilder;
|
||||
import io.opentelemetry.api.metrics.DoubleGaugeBuilder;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.metrics.ApplicationDoubleGaugeBuilder138Incubator;
|
||||
|
||||
final class ApplicationDoubleGaugeBuilder140Incubator
|
||||
extends ApplicationDoubleGaugeBuilder138Incubator {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleGaugeBuilder agentBuilder;
|
||||
|
||||
ApplicationDoubleGaugeBuilder140Incubator(DoubleGaugeBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongGaugeBuilder ofLongs() {
|
||||
return new ApplicationLongGaugeBuilder140Incubator(agentBuilder.ofLongs());
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleGauge build() {
|
||||
return new ApplicationDoubleGauge140Incubator(agentBuilder.build());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram;
|
||||
import io.opentelemetry.api.metrics.DoubleHistogram;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleHistogram;
|
||||
|
||||
final class ApplicationDoubleHistogram140Incubator extends ApplicationDoubleHistogram
|
||||
implements ExtendedDoubleHistogram {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleHistogram agentHistogram;
|
||||
|
||||
ApplicationDoubleHistogram140Incubator(DoubleHistogram agentHistogram) {
|
||||
super(agentHistogram);
|
||||
this.agentHistogram = agentHistogram;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return ((io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram) agentHistogram)
|
||||
.isEnabled();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.metrics.DoubleHistogram;
|
||||
import application.io.opentelemetry.api.metrics.LongHistogramBuilder;
|
||||
import io.opentelemetry.api.metrics.DoubleHistogramBuilder;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.ApplicationDoubleHistogramBuilder137;
|
||||
|
||||
final class ApplicationDoubleHistogramBuilder140Incubator
|
||||
extends ApplicationDoubleHistogramBuilder137 {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleHistogramBuilder agentBuilder;
|
||||
|
||||
ApplicationDoubleHistogramBuilder140Incubator(DoubleHistogramBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongHistogramBuilder ofLongs() {
|
||||
return new ApplicationLongHistogramBuilder140Incubator(agentBuilder.ofLongs());
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleHistogram build() {
|
||||
return new ApplicationDoubleHistogram140Incubator(agentBuilder.build());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounter;
|
||||
import io.opentelemetry.api.metrics.DoubleUpDownCounter;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleUpDownCounter;
|
||||
|
||||
final class ApplicationDoubleUpDownCounter140Incubator extends ApplicationDoubleUpDownCounter
|
||||
implements ExtendedDoubleUpDownCounter {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleUpDownCounter agentCounter;
|
||||
|
||||
ApplicationDoubleUpDownCounter140Incubator(DoubleUpDownCounter agentCounter) {
|
||||
super(agentCounter);
|
||||
this.agentCounter = agentCounter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return ((io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounter) agentCounter)
|
||||
.isEnabled();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.metrics.DoubleUpDownCounter;
|
||||
import io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.ApplicationDoubleUpDownCounterBuilder137;
|
||||
|
||||
final class ApplicationDoubleUpDownCounterBuilder140Incubator
|
||||
extends ApplicationDoubleUpDownCounterBuilder137 {
|
||||
|
||||
private final io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder agentBuilder;
|
||||
|
||||
ApplicationDoubleUpDownCounterBuilder140Incubator(DoubleUpDownCounterBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleUpDownCounter build() {
|
||||
return new ApplicationDoubleUpDownCounter140Incubator(agentBuilder.build());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.incubator.metrics.ExtendedLongCounter;
|
||||
import io.opentelemetry.api.metrics.LongCounter;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongCounter;
|
||||
|
||||
final class ApplicationLongCounter140Incubator extends ApplicationLongCounter
|
||||
implements ExtendedLongCounter {
|
||||
private final io.opentelemetry.api.metrics.LongCounter agentCounter;
|
||||
|
||||
ApplicationLongCounter140Incubator(LongCounter agentCounter) {
|
||||
super(agentCounter);
|
||||
this.agentCounter = agentCounter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return ((io.opentelemetry.api.incubator.metrics.ExtendedLongCounter) agentCounter).isEnabled();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.metrics.DoubleCounterBuilder;
|
||||
import application.io.opentelemetry.api.metrics.LongCounter;
|
||||
import io.opentelemetry.api.metrics.LongCounterBuilder;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.ApplicationLongCounterBuilder137;
|
||||
|
||||
final class ApplicationLongCounterBuilder140Incubator extends ApplicationLongCounterBuilder137 {
|
||||
private final io.opentelemetry.api.metrics.LongCounterBuilder agentBuilder;
|
||||
|
||||
ApplicationLongCounterBuilder140Incubator(LongCounterBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleCounterBuilder ofDoubles() {
|
||||
return new ApplicationDoubleCounterBuilder140Incubator(agentBuilder.ofDoubles());
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongCounter build() {
|
||||
return new ApplicationLongCounter140Incubator(agentBuilder.build());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.incubator.metrics.ExtendedLongGauge;
|
||||
import io.opentelemetry.api.metrics.LongGauge;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.metrics.ApplicationLongGauge138;
|
||||
|
||||
final class ApplicationLongGauge140Incubator extends ApplicationLongGauge138
|
||||
implements ExtendedLongGauge {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongGauge agentLongGauge;
|
||||
|
||||
ApplicationLongGauge140Incubator(LongGauge agentLongGauge) {
|
||||
super(agentLongGauge);
|
||||
this.agentLongGauge = agentLongGauge;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return ((io.opentelemetry.api.incubator.metrics.ExtendedLongGauge) agentLongGauge).isEnabled();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.metrics.LongGauge;
|
||||
import io.opentelemetry.api.metrics.LongGaugeBuilder;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.metrics.ApplicationLongGaugeBuilder138Incubator;
|
||||
|
||||
final class ApplicationLongGaugeBuilder140Incubator
|
||||
extends ApplicationLongGaugeBuilder138Incubator {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongGaugeBuilder agentBuilder;
|
||||
|
||||
ApplicationLongGaugeBuilder140Incubator(LongGaugeBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongGauge build() {
|
||||
return new ApplicationLongGauge140Incubator(agentBuilder.build());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.incubator.metrics.ExtendedLongHistogram;
|
||||
import io.opentelemetry.api.metrics.LongHistogram;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongHistogram;
|
||||
|
||||
final class ApplicationLongHistogram140Incubator extends ApplicationLongHistogram
|
||||
implements ExtendedLongHistogram {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongHistogram agentHistogram;
|
||||
|
||||
ApplicationLongHistogram140Incubator(LongHistogram agentHistogram) {
|
||||
super(agentHistogram);
|
||||
this.agentHistogram = agentHistogram;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return ((io.opentelemetry.api.incubator.metrics.ExtendedLongHistogram) agentHistogram)
|
||||
.isEnabled();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.metrics.LongHistogram;
|
||||
import io.opentelemetry.api.metrics.LongHistogramBuilder;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.ApplicationLongHistogramBuilder137;
|
||||
|
||||
final class ApplicationLongHistogramBuilder140Incubator extends ApplicationLongHistogramBuilder137 {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongHistogramBuilder agentBuilder;
|
||||
|
||||
ApplicationLongHistogramBuilder140Incubator(LongHistogramBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongHistogram build() {
|
||||
return new ApplicationLongHistogram140Incubator(agentBuilder.build());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounter;
|
||||
import io.opentelemetry.api.metrics.LongUpDownCounter;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongUpDownCounter;
|
||||
|
||||
final class ApplicationLongUpDownCounter140Incubator extends ApplicationLongUpDownCounter
|
||||
implements ExtendedLongUpDownCounter {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongUpDownCounter agentCounter;
|
||||
|
||||
ApplicationLongUpDownCounter140Incubator(LongUpDownCounter agentCounter) {
|
||||
super(agentCounter);
|
||||
this.agentCounter = agentCounter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return ((io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounter) agentCounter)
|
||||
.isEnabled();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder;
|
||||
import application.io.opentelemetry.api.metrics.LongUpDownCounter;
|
||||
import io.opentelemetry.api.metrics.LongUpDownCounterBuilder;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.ApplicationLongUpDownCounterBuilder137;
|
||||
|
||||
final class ApplicationLongUpDownCounterBuilder140Incubator
|
||||
extends ApplicationLongUpDownCounterBuilder137 {
|
||||
|
||||
private final io.opentelemetry.api.metrics.LongUpDownCounterBuilder agentBuilder;
|
||||
|
||||
ApplicationLongUpDownCounterBuilder140Incubator(LongUpDownCounterBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = agentBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleUpDownCounterBuilder ofDoubles() {
|
||||
return new ApplicationDoubleUpDownCounterBuilder140Incubator(agentBuilder.ofDoubles());
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongUpDownCounter build() {
|
||||
return new ApplicationLongUpDownCounter140Incubator(agentBuilder.build());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import application.io.opentelemetry.api.metrics.DoubleGaugeBuilder;
|
||||
import application.io.opentelemetry.api.metrics.DoubleHistogramBuilder;
|
||||
import application.io.opentelemetry.api.metrics.LongCounterBuilder;
|
||||
import application.io.opentelemetry.api.metrics.LongUpDownCounterBuilder;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics.BaseApplicationMeter137;
|
||||
|
||||
final class ApplicationMeter140Incubator extends BaseApplicationMeter137 {
|
||||
|
||||
private final io.opentelemetry.api.metrics.Meter agentMeter;
|
||||
|
||||
ApplicationMeter140Incubator(io.opentelemetry.api.metrics.Meter agentMeter) {
|
||||
super(agentMeter);
|
||||
this.agentMeter = agentMeter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongCounterBuilder counterBuilder(String name) {
|
||||
return new ApplicationLongCounterBuilder140Incubator(agentMeter.counterBuilder(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongUpDownCounterBuilder upDownCounterBuilder(String name) {
|
||||
return new ApplicationLongUpDownCounterBuilder140Incubator(
|
||||
agentMeter.upDownCounterBuilder(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleHistogramBuilder histogramBuilder(String name) {
|
||||
return new ApplicationDoubleHistogramBuilder140Incubator(agentMeter.histogramBuilder(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleGaugeBuilder gaugeBuilder(String name) {
|
||||
return new ApplicationDoubleGaugeBuilder140Incubator(agentMeter.gaugeBuilder(name));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import io.opentelemetry.api.metrics.Meter;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationMeter;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationMeterFactory;
|
||||
|
||||
// this class is used from opentelemetry-api-1.27 via reflection
|
||||
public final class ApplicationMeterFactory140Incubator implements ApplicationMeterFactory {
|
||||
|
||||
@Override
|
||||
public ApplicationMeter newMeter(Meter agentMeter) {
|
||||
return new ApplicationMeter140Incubator(agentMeter);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,202 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.trace;
|
||||
|
||||
import application.io.opentelemetry.api.common.AttributeKey;
|
||||
import application.io.opentelemetry.api.common.Attributes;
|
||||
import application.io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder;
|
||||
import application.io.opentelemetry.api.incubator.trace.SpanCallable;
|
||||
import application.io.opentelemetry.api.incubator.trace.SpanRunnable;
|
||||
import application.io.opentelemetry.api.trace.Span;
|
||||
import application.io.opentelemetry.api.trace.SpanContext;
|
||||
import application.io.opentelemetry.api.trace.SpanKind;
|
||||
import application.io.opentelemetry.context.Context;
|
||||
import application.io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import application.io.opentelemetry.context.propagation.TextMapGetter;
|
||||
import application.io.opentelemetry.context.propagation.TextMapPropagator;
|
||||
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.context.AgentContextStorage;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationSpan;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationSpanBuilder;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.BiConsumer;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
final class ApplicationSpanBuilder140Incubator extends ApplicationSpanBuilder
|
||||
implements ExtendedSpanBuilder {
|
||||
|
||||
private final io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder agentBuilder;
|
||||
|
||||
ApplicationSpanBuilder140Incubator(io.opentelemetry.api.trace.SpanBuilder agentBuilder) {
|
||||
super(agentBuilder);
|
||||
this.agentBuilder = (io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder) agentBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public ExtendedSpanBuilder setParent(Context applicationContext) {
|
||||
return (ExtendedSpanBuilder) super.setParent(applicationContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public ExtendedSpanBuilder setNoParent() {
|
||||
return (ExtendedSpanBuilder) super.setNoParent();
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public ExtendedSpanBuilder addLink(SpanContext applicationSpanContext) {
|
||||
return (ExtendedSpanBuilder) super.addLink(applicationSpanContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public ExtendedSpanBuilder addLink(
|
||||
SpanContext applicationSpanContext, Attributes applicationAttributes) {
|
||||
return (ExtendedSpanBuilder) super.addLink(applicationSpanContext, applicationAttributes);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public ExtendedSpanBuilder setAttribute(String key, String value) {
|
||||
return (ExtendedSpanBuilder) super.setAttribute(key, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public ExtendedSpanBuilder setAttribute(String key, long value) {
|
||||
return (ExtendedSpanBuilder) super.setAttribute(key, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public ExtendedSpanBuilder setAttribute(String key, double value) {
|
||||
return (ExtendedSpanBuilder) super.setAttribute(key, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public ExtendedSpanBuilder setAttribute(String key, boolean value) {
|
||||
return (ExtendedSpanBuilder) super.setAttribute(key, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public <T> ExtendedSpanBuilder setAttribute(AttributeKey<T> applicationKey, T value) {
|
||||
return (ExtendedSpanBuilder) super.setAttribute(applicationKey, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public ExtendedSpanBuilder setSpanKind(SpanKind applicationSpanKind) {
|
||||
return (ExtendedSpanBuilder) super.setSpanKind(applicationSpanKind);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public ExtendedSpanBuilder setStartTimestamp(long startTimestamp, TimeUnit unit) {
|
||||
return (ExtendedSpanBuilder) super.setStartTimestamp(startTimestamp, unit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtendedSpanBuilder setParentFrom(
|
||||
ContextPropagators contextPropagators, Map<String, String> map) {
|
||||
agentBuilder.setParentFrom(new AgentContextPropagators(contextPropagators), map);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, E extends Throwable> T startAndCall(SpanCallable<T, E> spanCallable) throws E {
|
||||
return agentBuilder.startAndCall(spanCallable::callInSpan);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, E extends Throwable> T startAndCall(
|
||||
SpanCallable<T, E> spanCallable, BiConsumer<Span, Throwable> biConsumer) throws E {
|
||||
return agentBuilder.startAndCall(
|
||||
spanCallable::callInSpan,
|
||||
(span, throwable) -> biConsumer.accept(new ApplicationSpan(span), throwable));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends Throwable> void startAndRun(SpanRunnable<E> spanRunnable) throws E {
|
||||
agentBuilder.startAndRun(spanRunnable::runInSpan);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends Throwable> void startAndRun(
|
||||
SpanRunnable<E> spanRunnable, BiConsumer<Span, Throwable> biConsumer) throws E {
|
||||
agentBuilder.startAndRun(
|
||||
spanRunnable::runInSpan,
|
||||
(span, throwable) -> biConsumer.accept(new ApplicationSpan(span), throwable));
|
||||
}
|
||||
|
||||
private static class AgentContextPropagators
|
||||
implements io.opentelemetry.context.propagation.ContextPropagators {
|
||||
|
||||
private final ContextPropagators applicationContextPropagators;
|
||||
|
||||
AgentContextPropagators(ContextPropagators applicationContextPropagators) {
|
||||
this.applicationContextPropagators = applicationContextPropagators;
|
||||
}
|
||||
|
||||
@Override
|
||||
public io.opentelemetry.context.propagation.TextMapPropagator getTextMapPropagator() {
|
||||
return new AgentTextMapPropagator(applicationContextPropagators.getTextMapPropagator());
|
||||
}
|
||||
}
|
||||
|
||||
private static class AgentTextMapPropagator
|
||||
implements io.opentelemetry.context.propagation.TextMapPropagator {
|
||||
|
||||
private final TextMapPropagator applicationTextMapPropagator;
|
||||
|
||||
AgentTextMapPropagator(TextMapPropagator applicationTextMapPropagator) {
|
||||
this.applicationTextMapPropagator = applicationTextMapPropagator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> fields() {
|
||||
return applicationTextMapPropagator.fields();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <C> void inject(
|
||||
io.opentelemetry.context.Context context,
|
||||
@Nullable C c,
|
||||
io.opentelemetry.context.propagation.TextMapSetter<C> textMapSetter) {
|
||||
applicationTextMapPropagator.inject(
|
||||
AgentContextStorage.toApplicationContext(context), c, textMapSetter::set);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <C> io.opentelemetry.context.Context extract(
|
||||
io.opentelemetry.context.Context context,
|
||||
@Nullable C c,
|
||||
io.opentelemetry.context.propagation.TextMapGetter<C> textMapGetter) {
|
||||
return AgentContextStorage.getAgentContext(
|
||||
applicationTextMapPropagator.extract(
|
||||
AgentContextStorage.toApplicationContext(context),
|
||||
c,
|
||||
new TextMapGetter<C>() {
|
||||
|
||||
@Override
|
||||
public Iterable<String> keys(C c) {
|
||||
return textMapGetter.keys(c);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String get(@Nullable C c, String s) {
|
||||
return textMapGetter.get(c, s);
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.trace;
|
||||
|
||||
import application.io.opentelemetry.api.incubator.trace.ExtendedTracer;
|
||||
import application.io.opentelemetry.api.trace.SpanBuilder;
|
||||
import io.opentelemetry.api.trace.Tracer;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracer;
|
||||
|
||||
final class ApplicationTracer140Incubator extends ApplicationTracer implements ExtendedTracer {
|
||||
|
||||
private final io.opentelemetry.api.trace.Tracer agentTracer;
|
||||
|
||||
ApplicationTracer140Incubator(Tracer agentTracer) {
|
||||
super(agentTracer);
|
||||
this.agentTracer = agentTracer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpanBuilder spanBuilder(String spanName) {
|
||||
return new ApplicationSpanBuilder140Incubator(agentTracer.spanBuilder(spanName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return ((io.opentelemetry.api.incubator.trace.ExtendedTracer) agentTracer).isEnabled();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.trace;
|
||||
|
||||
import io.opentelemetry.api.trace.Tracer;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracer;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.trace.ApplicationTracerFactory;
|
||||
|
||||
// this class is used from opentelemetry-api-1.27.0 via reflection
|
||||
public class ApplicationTracerFactory140Incubator implements ApplicationTracerFactory {
|
||||
|
||||
@Override
|
||||
public ApplicationTracer newTracer(Tracer agentTracer) {
|
||||
return new ApplicationTracer140Incubator(agentTracer);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.logs;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.opentelemetry.api.incubator.logs.ExtendedLogger;
|
||||
import io.opentelemetry.api.logs.Logger;
|
||||
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
class LoggerTest {
|
||||
|
||||
@RegisterExtension
|
||||
static final AgentInstrumentationExtension testing = AgentInstrumentationExtension.create();
|
||||
|
||||
@Test
|
||||
void isEnabled() {
|
||||
Logger disabledLogger = testing.getOpenTelemetry().getLogsBridge().get("disabled-logger");
|
||||
Logger enabledLogger = testing.getOpenTelemetry().getLogsBridge().get("enabled-logger");
|
||||
testEnabled(disabledLogger, false);
|
||||
testEnabled(enabledLogger, true);
|
||||
}
|
||||
|
||||
private static void testEnabled(Logger logger, boolean expected) {
|
||||
assertThat(logger).isInstanceOf(ExtendedLogger.class);
|
||||
assertThat(((ExtendedLogger) logger).isEnabled()).isEqualTo(expected);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.metrics;
|
||||
|
||||
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
|
||||
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleGauge;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongCounter;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongGauge;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongHistogram;
|
||||
import io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounter;
|
||||
import io.opentelemetry.api.metrics.DoubleCounter;
|
||||
import io.opentelemetry.api.metrics.DoubleGauge;
|
||||
import io.opentelemetry.api.metrics.DoubleGaugeBuilder;
|
||||
import io.opentelemetry.api.metrics.DoubleHistogram;
|
||||
import io.opentelemetry.api.metrics.DoubleHistogramBuilder;
|
||||
import io.opentelemetry.api.metrics.DoubleUpDownCounter;
|
||||
import io.opentelemetry.api.metrics.LongCounter;
|
||||
import io.opentelemetry.api.metrics.LongCounterBuilder;
|
||||
import io.opentelemetry.api.metrics.LongGauge;
|
||||
import io.opentelemetry.api.metrics.LongHistogram;
|
||||
import io.opentelemetry.api.metrics.LongUpDownCounter;
|
||||
import io.opentelemetry.api.metrics.LongUpDownCounterBuilder;
|
||||
import io.opentelemetry.api.metrics.Meter;
|
||||
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
class MeterTest {
|
||||
|
||||
@RegisterExtension
|
||||
static final AgentInstrumentationExtension testing = AgentInstrumentationExtension.create();
|
||||
|
||||
@Test
|
||||
void isEnabled() {
|
||||
Meter disabledMeter = testing.getOpenTelemetry().getMeter("disabled-meter");
|
||||
Meter enabledMeter = testing.getOpenTelemetry().getMeter("enabled-meter");
|
||||
testEnabled(disabledMeter, false);
|
||||
testEnabled(enabledMeter, true);
|
||||
}
|
||||
|
||||
private static void testEnabled(Meter meter, boolean expected) {
|
||||
LongCounterBuilder counterBuilder = meter.counterBuilder("test");
|
||||
LongCounter longCounter = counterBuilder.build();
|
||||
assertThat(longCounter).isInstanceOf(ExtendedLongCounter.class);
|
||||
assertThat(((ExtendedLongCounter) longCounter).isEnabled()).isEqualTo(expected);
|
||||
|
||||
DoubleCounter doubleCounter = counterBuilder.ofDoubles().build();
|
||||
assertThat(doubleCounter).isInstanceOf(ExtendedDoubleCounter.class);
|
||||
assertThat(((ExtendedDoubleCounter) doubleCounter).isEnabled()).isEqualTo(expected);
|
||||
|
||||
LongUpDownCounterBuilder upDownCounterBuilder = meter.upDownCounterBuilder("test");
|
||||
LongUpDownCounter longUpDownCounter = upDownCounterBuilder.build();
|
||||
assertThat(longUpDownCounter).isInstanceOf(ExtendedLongUpDownCounter.class);
|
||||
assertThat(((ExtendedLongUpDownCounter) longUpDownCounter).isEnabled()).isEqualTo(expected);
|
||||
|
||||
DoubleUpDownCounter doubleUpDownCounter = upDownCounterBuilder.ofDoubles().build();
|
||||
assertThat(doubleUpDownCounter).isInstanceOf(ExtendedDoubleUpDownCounter.class);
|
||||
assertThat(((ExtendedDoubleUpDownCounter) doubleUpDownCounter).isEnabled()).isEqualTo(expected);
|
||||
|
||||
DoubleGaugeBuilder gaugeBuilder = meter.gaugeBuilder("test");
|
||||
DoubleGauge doubleGauge = gaugeBuilder.build();
|
||||
assertThat(doubleGauge).isInstanceOf(ExtendedDoubleGauge.class);
|
||||
assertThat(((ExtendedDoubleGauge) doubleGauge).isEnabled()).isEqualTo(expected);
|
||||
|
||||
LongGauge longGauge = gaugeBuilder.ofLongs().build();
|
||||
assertThat(longGauge).isInstanceOf(ExtendedLongGauge.class);
|
||||
assertThat(((ExtendedLongGauge) longGauge).isEnabled()).isEqualTo(expected);
|
||||
|
||||
DoubleHistogramBuilder histogramBuilder = meter.histogramBuilder("test");
|
||||
DoubleHistogram doubleHistogram = histogramBuilder.build();
|
||||
assertThat(doubleHistogram).isInstanceOf(ExtendedDoubleHistogram.class);
|
||||
assertThat(((ExtendedDoubleHistogram) doubleHistogram).isEnabled()).isEqualTo(expected);
|
||||
|
||||
LongHistogram longHistogram = histogramBuilder.ofLongs().build();
|
||||
assertThat(longHistogram).isInstanceOf(ExtendedLongHistogram.class);
|
||||
assertThat(((ExtendedLongHistogram) longHistogram).isEnabled()).isEqualTo(expected);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.trace;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
|
||||
import io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder;
|
||||
import io.opentelemetry.api.incubator.trace.ExtendedTracer;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanBuilder;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.SpanId;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
import io.opentelemetry.api.trace.TraceId;
|
||||
import io.opentelemetry.api.trace.TraceState;
|
||||
import io.opentelemetry.api.trace.Tracer;
|
||||
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
class TracerTest {
|
||||
|
||||
@RegisterExtension
|
||||
private static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
|
||||
|
||||
@Test
|
||||
void isEnabled() {
|
||||
Tracer disabledTracer = testing.getOpenTelemetry().getTracer("disabled-tracer");
|
||||
Tracer enabledTracer = testing.getOpenTelemetry().getTracer("enabled-tracer");
|
||||
testEnabled(disabledTracer, false);
|
||||
testEnabled(enabledTracer, true);
|
||||
}
|
||||
|
||||
private static void testEnabled(Tracer tracer, boolean expected) {
|
||||
assertThat(tracer).isInstanceOf(ExtendedTracer.class);
|
||||
assertThat(((ExtendedTracer) tracer).isEnabled()).isEqualTo(expected);
|
||||
}
|
||||
|
||||
@Test
|
||||
void extendedSpanBuilder() {
|
||||
Tracer tracer = testing.getOpenTelemetry().getTracer("test");
|
||||
SpanBuilder spanBuilder = tracer.spanBuilder("test");
|
||||
assertThat(spanBuilder).isInstanceOf(ExtendedSpanBuilder.class);
|
||||
|
||||
ExtendedSpanBuilder builder = (ExtendedSpanBuilder) spanBuilder;
|
||||
{
|
||||
Span span = builder.startAndCall(Span::current);
|
||||
assertThat(span.getSpanContext().getTraceId()).isNotEqualTo(TraceId.getInvalid());
|
||||
}
|
||||
{
|
||||
Span span = builder.startAndCall(Span::current, (s, t) -> {});
|
||||
assertThat(span.getSpanContext().getTraceId()).isNotEqualTo(TraceId.getInvalid());
|
||||
}
|
||||
{
|
||||
AtomicReference<Span> spanRef = new AtomicReference<>();
|
||||
assertThatThrownBy(
|
||||
() ->
|
||||
builder.startAndCall(
|
||||
() -> {
|
||||
throw new IllegalStateException("fail");
|
||||
},
|
||||
(s, t) -> spanRef.set(s)))
|
||||
.isInstanceOf(IllegalStateException.class);
|
||||
assertThat(spanRef.get().getSpanContext().getTraceId()).isNotEqualTo(TraceId.getInvalid());
|
||||
}
|
||||
|
||||
{
|
||||
AtomicReference<Span> spanRef = new AtomicReference<>();
|
||||
builder.startAndRun(() -> spanRef.set(Span.current()));
|
||||
assertThat(spanRef.get().getSpanContext().getTraceId()).isNotEqualTo(TraceId.getInvalid());
|
||||
}
|
||||
{
|
||||
AtomicReference<Span> spanRef = new AtomicReference<>();
|
||||
builder.startAndRun(() -> spanRef.set(Span.current()), (s, t) -> {});
|
||||
assertThat(spanRef.get().getSpanContext().getTraceId()).isNotEqualTo(TraceId.getInvalid());
|
||||
}
|
||||
{
|
||||
AtomicReference<Span> spanRef = new AtomicReference<>();
|
||||
assertThatThrownBy(
|
||||
() ->
|
||||
builder.startAndRun(
|
||||
() -> {
|
||||
throw new IllegalStateException("fail");
|
||||
},
|
||||
(s, t) -> spanRef.set(s)))
|
||||
.isInstanceOf(IllegalStateException.class);
|
||||
assertThat(spanRef.get().getSpanContext().getTraceId()).isNotEqualTo(TraceId.getInvalid());
|
||||
}
|
||||
|
||||
Map<String, String> map = new HashMap<>();
|
||||
Context context =
|
||||
Context.root()
|
||||
.with(
|
||||
Span.wrap(
|
||||
SpanContext.create(
|
||||
TraceId.fromLongs(0, 1),
|
||||
SpanId.fromLong(2),
|
||||
TraceFlags.getDefault(),
|
||||
TraceState.getDefault())));
|
||||
|
||||
W3CTraceContextPropagator.getInstance()
|
||||
.inject(context, map, (m, key, value) -> m.put(key, value));
|
||||
builder.setParentFrom(ContextPropagators.create(W3CTraceContextPropagator.getInstance()), map);
|
||||
Span span = builder.startSpan();
|
||||
assertThat(span.getSpanContext().getTraceId()).isEqualTo(TraceId.fromLongs(0, 1));
|
||||
}
|
||||
}
|
||||
|
|
@ -15,6 +15,7 @@ dependencies {
|
|||
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"))
|
||||
}
|
||||
|
||||
configurations.configureEach {
|
||||
|
|
@ -22,5 +23,26 @@ configurations.configureEach {
|
|||
resolutionStrategy {
|
||||
force("io.opentelemetry:opentelemetry-api:1.42.0")
|
||||
}
|
||||
if (name.startsWith("incubatorTest")) {
|
||||
resolutionStrategy {
|
||||
force("io.opentelemetry:opentelemetry-api-incubator:1.42.0-alpha")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
testing {
|
||||
suites {
|
||||
val incubatorTest by registering(JvmTestSuite::class) {
|
||||
dependencies {
|
||||
implementation("io.opentelemetry:opentelemetry-api-incubator:1.42.0-alpha")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks {
|
||||
check {
|
||||
dependsOn(testing.suites)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,145 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.logs;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.awaitility.Awaitility.await;
|
||||
|
||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.common.KeyValue;
|
||||
import io.opentelemetry.api.common.Value;
|
||||
import io.opentelemetry.api.common.ValueType;
|
||||
import io.opentelemetry.api.incubator.logs.ExtendedLogger;
|
||||
import io.opentelemetry.api.logs.Logger;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
import io.opentelemetry.api.trace.TraceState;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
|
||||
import io.opentelemetry.sdk.trace.IdGenerator;
|
||||
import java.time.Instant;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Stream;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.TestInfo;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
class LoggerTest {
|
||||
|
||||
@RegisterExtension
|
||||
static final AgentInstrumentationExtension testing = AgentInstrumentationExtension.create();
|
||||
|
||||
private String instrumentationName;
|
||||
private Logger logger;
|
||||
|
||||
@BeforeEach
|
||||
void setupLogger(TestInfo test) {
|
||||
instrumentationName = "test-" + test.getDisplayName();
|
||||
logger =
|
||||
GlobalOpenTelemetry.get()
|
||||
.getLogsBridge()
|
||||
.loggerBuilder(instrumentationName)
|
||||
.setInstrumentationVersion("1.2.3")
|
||||
.setSchemaUrl("http://schema.org")
|
||||
.build();
|
||||
}
|
||||
|
||||
@Test
|
||||
void logRecordBuilder() {
|
||||
assertThat(logger).isInstanceOf(ExtendedLogger.class);
|
||||
|
||||
SpanContext spanContext =
|
||||
SpanContext.create(
|
||||
IdGenerator.random().generateTraceId(),
|
||||
IdGenerator.random().generateSpanId(),
|
||||
TraceFlags.getDefault(),
|
||||
TraceState.getDefault());
|
||||
|
||||
logger
|
||||
.logRecordBuilder()
|
||||
.setTimestamp(1, TimeUnit.SECONDS)
|
||||
.setTimestamp(Instant.now())
|
||||
.setContext(Context.current().with(Span.wrap(spanContext)))
|
||||
.setSeverity(Severity.DEBUG)
|
||||
.setSeverityText("debug")
|
||||
.setBody("body")
|
||||
.setAttribute(AttributeKey.stringKey("key"), "value")
|
||||
.setAllAttributes(Attributes.builder().put("key", "value").build())
|
||||
.emit();
|
||||
|
||||
await()
|
||||
.untilAsserted(
|
||||
() ->
|
||||
assertThat(testing.logRecords())
|
||||
.satisfiesExactly(
|
||||
logRecordData -> {
|
||||
assertThat(logRecordData.getInstrumentationScopeInfo().getName())
|
||||
.isEqualTo(instrumentationName);
|
||||
assertThat(logRecordData.getInstrumentationScopeInfo().getVersion())
|
||||
.isEqualTo("1.2.3");
|
||||
assertThat(logRecordData.getTimestampEpochNanos()).isGreaterThan(0);
|
||||
assertThat(logRecordData.getSpanContext()).isEqualTo(spanContext);
|
||||
assertThat(logRecordData.getSeverity()).isEqualTo(Severity.DEBUG);
|
||||
assertThat(logRecordData.getSeverityText()).isEqualTo("debug");
|
||||
assertThat(logRecordData.getBodyValue().getType())
|
||||
.isEqualTo(ValueType.STRING);
|
||||
assertThat(logRecordData.getBodyValue().getValue()).isEqualTo("body");
|
||||
assertThat(logRecordData.getAttributes())
|
||||
.isEqualTo(Attributes.builder().put("key", "value").build());
|
||||
}));
|
||||
}
|
||||
|
||||
private static Stream<Arguments> bodyValues() {
|
||||
return Stream.of(
|
||||
Arguments.of(Value.of("hello")),
|
||||
Arguments.of(Value.of(42)),
|
||||
Arguments.of(Value.of(42.42)),
|
||||
Arguments.of(Value.of(true)),
|
||||
Arguments.of(Value.of(new byte[] {4, 2})),
|
||||
Arguments.of(Value.of(Value.of("hello"), Value.of(42))),
|
||||
Arguments.of(Value.of(KeyValue.of("key", Value.of(42)))));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("bodyValues")
|
||||
void logBodyValue() {
|
||||
Value<?> value = Value.of(42);
|
||||
logger.logRecordBuilder().setBody(value).emit();
|
||||
|
||||
await()
|
||||
.untilAsserted(
|
||||
() ->
|
||||
assertThat(testing.logRecords())
|
||||
.satisfiesExactly(
|
||||
logRecordData -> {
|
||||
assertThat(logRecordData.getBodyValue().getType())
|
||||
.isEqualTo(value.getType());
|
||||
assertThat(logRecordData.getBodyValue().getValue())
|
||||
.isEqualTo(value.getValue());
|
||||
}));
|
||||
}
|
||||
|
||||
@Test
|
||||
void logNullBody() {
|
||||
Value<?> value = null;
|
||||
logger.logRecordBuilder().setBody(value).emit();
|
||||
|
||||
await()
|
||||
.untilAsserted(
|
||||
() ->
|
||||
assertThat(testing.logRecords())
|
||||
.satisfiesExactly(
|
||||
logRecordData -> assertThat(logRecordData.getBodyValue()).isNull()));
|
||||
}
|
||||
}
|
||||
|
|
@ -5,13 +5,16 @@
|
|||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42;
|
||||
|
||||
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
|
||||
import static java.util.Collections.singletonList;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
|
||||
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
|
||||
|
|
@ -20,6 +23,11 @@ public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
|
|||
super("opentelemetry-api", "opentelemetry-api-1.42");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
|
||||
return not(hasClassesNamed("application.io.opentelemetry.api.incubator.logs.ExtendedLogger"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TypeInstrumentation> typeInstrumentations() {
|
||||
return singletonList(new OpenTelemetryInstrumentation());
|
||||
|
|
|
|||
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator;
|
||||
|
||||
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
|
||||
import static java.util.Collections.singletonList;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
|
||||
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 OpenTelemetryApiIncubatorInstrumentationModule extends InstrumentationModule
|
||||
implements ExperimentalInstrumentationModule {
|
||||
public OpenTelemetryApiIncubatorInstrumentationModule() {
|
||||
super("opentelemetry-api", "opentelemetry-api-1.42", "opentelemetry-api-incubator-1.42");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
|
||||
return hasClassesNamed("application.io.opentelemetry.api.incubator.logs.ExtendedLogger");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TypeInstrumentation> typeInstrumentations() {
|
||||
return singletonList(new OpenTelemetryIncubatorInstrumentation());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getModuleGroup() {
|
||||
return "opentelemetry-api-bridge";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.none;
|
||||
|
||||
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
|
||||
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.logs.ApplicationLoggerFactory142Incubator;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
import net.bytebuddy.description.type.TypeDescription;
|
||||
import net.bytebuddy.matcher.ElementMatcher;
|
||||
|
||||
public class OpenTelemetryIncubatorInstrumentation implements TypeInstrumentation {
|
||||
|
||||
@Override
|
||||
public ElementMatcher<TypeDescription> typeMatcher() {
|
||||
return named("application.io.opentelemetry.api.GlobalOpenTelemetry");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void transform(TypeTransformer transformer) {
|
||||
transformer.applyAdviceToMethod(
|
||||
none(), OpenTelemetryIncubatorInstrumentation.class.getName() + "$InitAdvice");
|
||||
}
|
||||
|
||||
@SuppressWarnings({"ReturnValueIgnored", "unused"})
|
||||
public static class InitAdvice {
|
||||
@Advice.OnMethodEnter
|
||||
public static void init() {
|
||||
// the sole purpose of this advice is to ensure that ApplicationLoggerFactory142Incubator is
|
||||
// recognized as helper class and injected into class loader
|
||||
ApplicationLoggerFactory142Incubator.class.getName();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.logs;
|
||||
|
||||
import application.io.opentelemetry.api.common.KeyValue;
|
||||
import application.io.opentelemetry.api.common.Value;
|
||||
import application.io.opentelemetry.api.logs.LogRecordBuilder;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLogRecordBuilder;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
class ApplicationLogRecordBuilder142 extends ApplicationLogRecordBuilder
|
||||
implements LogRecordBuilder {
|
||||
|
||||
private final io.opentelemetry.api.logs.LogRecordBuilder agentLogRecordBuilder;
|
||||
|
||||
ApplicationLogRecordBuilder142(io.opentelemetry.api.logs.LogRecordBuilder agentLogRecordBuilder) {
|
||||
super(agentLogRecordBuilder);
|
||||
this.agentLogRecordBuilder = agentLogRecordBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LogRecordBuilder setBody(Value<?> body) {
|
||||
agentLogRecordBuilder.setBody(convertValue(body));
|
||||
return this;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static io.opentelemetry.api.common.Value<?> convertValue(Value<?> value) {
|
||||
if (value == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (value.getType()) {
|
||||
case STRING:
|
||||
return io.opentelemetry.api.common.Value.of((String) value.getValue());
|
||||
case BOOLEAN:
|
||||
return io.opentelemetry.api.common.Value.of((Boolean) value.getValue());
|
||||
case LONG:
|
||||
return io.opentelemetry.api.common.Value.of((Long) value.getValue());
|
||||
case DOUBLE:
|
||||
return io.opentelemetry.api.common.Value.of((Double) value.getValue());
|
||||
case ARRAY:
|
||||
List<Value<?>> values = (List<Value<?>>) value.getValue();
|
||||
List<io.opentelemetry.api.common.Value<?>> convertedValues = new ArrayList<>();
|
||||
for (Value<?> source : values) {
|
||||
convertedValues.add(convertValue(source));
|
||||
}
|
||||
return io.opentelemetry.api.common.Value.of(convertedValues);
|
||||
case KEY_VALUE_LIST:
|
||||
List<KeyValue> keyValueList = (List<KeyValue>) value.getValue();
|
||||
io.opentelemetry.api.common.KeyValue[] convertedKeyValueList =
|
||||
new io.opentelemetry.api.common.KeyValue[keyValueList.size()];
|
||||
int i = 0;
|
||||
for (KeyValue source : keyValueList) {
|
||||
convertedKeyValueList[i++] =
|
||||
io.opentelemetry.api.common.KeyValue.of(
|
||||
source.getKey(), convertValue(source.getValue()));
|
||||
}
|
||||
return io.opentelemetry.api.common.Value.of(convertedKeyValueList);
|
||||
case BYTES:
|
||||
ByteBuffer byteBuffer = (ByteBuffer) value.getValue();
|
||||
byte[] bytes = new byte[byteBuffer.remaining()];
|
||||
byteBuffer.get(bytes);
|
||||
break;
|
||||
}
|
||||
|
||||
throw new IllegalStateException("Unhandled value type: " + value.getType());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.logs;
|
||||
|
||||
import application.io.opentelemetry.api.logs.LogRecordBuilder;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.logs.ApplicationLogger140Incubator;
|
||||
|
||||
class ApplicationLogger142Incubator extends ApplicationLogger140Incubator {
|
||||
|
||||
private final io.opentelemetry.api.logs.Logger agentLogger;
|
||||
|
||||
ApplicationLogger142Incubator(io.opentelemetry.api.logs.Logger agentLogger) {
|
||||
super(agentLogger);
|
||||
this.agentLogger = agentLogger;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LogRecordBuilder logRecordBuilder() {
|
||||
return new ApplicationLogRecordBuilder142(agentLogger.logRecordBuilder());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.logs;
|
||||
|
||||
import io.opentelemetry.api.logs.Logger;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLogger;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerFactory;
|
||||
|
||||
// this class is used from opentelemetry-api-1.27.0 via reflection
|
||||
public class ApplicationLoggerFactory142Incubator implements ApplicationLoggerFactory {
|
||||
|
||||
@Override
|
||||
public ApplicationLogger newLogger(Logger agentLogger) {
|
||||
return new ApplicationLogger142Incubator(agentLogger);
|
||||
}
|
||||
}
|
||||
|
|
@ -9,6 +9,7 @@ import io.opentelemetry.api.logs.Logger;
|
|||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLogger;
|
||||
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerFactory;
|
||||
|
||||
// this class is used from opentelemetry-api-1.27.0 via reflection
|
||||
public class ApplicationLoggerFactory142 implements ApplicationLoggerFactory {
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42;
|
||||
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.logs;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.awaitility.Awaitility.await;
|
||||
|
|
@ -58,6 +58,13 @@ val v1_38Deps by configurations.creating {
|
|||
exclude("io.opentelemetry", "opentelemetry-bom")
|
||||
exclude("io.opentelemetry", "opentelemetry-bom-alpha")
|
||||
}
|
||||
val v1_40Deps by configurations.creating {
|
||||
isCanBeResolved = true
|
||||
isCanBeConsumed = false
|
||||
// exclude the bom added by dependencyManagement
|
||||
exclude("io.opentelemetry", "opentelemetry-bom")
|
||||
exclude("io.opentelemetry", "opentelemetry-bom-alpha")
|
||||
}
|
||||
val v1_42Deps by configurations.creating {
|
||||
isCanBeResolved = true
|
||||
isCanBeConsumed = false
|
||||
|
|
@ -94,6 +101,10 @@ val v1_38 by configurations.creating {
|
|||
isCanBeConsumed = true
|
||||
isCanBeResolved = false
|
||||
}
|
||||
val v1_40 by configurations.creating {
|
||||
isCanBeConsumed = true
|
||||
isCanBeResolved = false
|
||||
}
|
||||
val v1_42 by configurations.creating {
|
||||
isCanBeConsumed = true
|
||||
isCanBeResolved = false
|
||||
|
|
@ -154,6 +165,11 @@ dependencies {
|
|||
strictly("1.38.0-alpha")
|
||||
}
|
||||
}
|
||||
v1_40Deps("io.opentelemetry:$it") {
|
||||
version {
|
||||
strictly("1.40.0-alpha")
|
||||
}
|
||||
}
|
||||
v1_42Deps("io.opentelemetry:$it") {
|
||||
version {
|
||||
strictly("1.42.0-alpha")
|
||||
|
|
@ -202,6 +218,10 @@ tasks {
|
|||
configurations = listOf(v1_38Deps)
|
||||
archiveClassifier.set("v1_38")
|
||||
}
|
||||
val v1_40Shadow by registering(ShadowJar::class) {
|
||||
configurations = listOf(v1_40Deps)
|
||||
archiveClassifier.set("v1_40")
|
||||
}
|
||||
val v1_42Shadow by registering(ShadowJar::class) {
|
||||
configurations = listOf(v1_42Deps)
|
||||
archiveClassifier.set("v1_42")
|
||||
|
|
@ -215,6 +235,7 @@ tasks {
|
|||
add(v1_32.name, v1_32Shadow)
|
||||
add(v1_37.name, v1_37Shadow)
|
||||
add(v1_38.name, v1_38Shadow)
|
||||
add(v1_40.name, v1_40Shadow)
|
||||
add(v1_42.name, v1_42Shadow)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -457,6 +457,7 @@ include(":instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent")
|
|||
include(":instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent")
|
||||
include(":instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent")
|
||||
include(":instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent")
|
||||
include(":instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent")
|
||||
include(":instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent")
|
||||
include(":instrumentation:opentelemetry-extension-annotations-1.0:javaagent")
|
||||
include(":instrumentation:opentelemetry-extension-kotlin-1.0:javaagent")
|
||||
|
|
|
|||
|
|
@ -5,13 +5,21 @@
|
|||
|
||||
package io.opentelemetry.javaagent.testing.exporter;
|
||||
|
||||
import static io.opentelemetry.sdk.internal.ScopeConfiguratorBuilder.nameEquals;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
|
||||
import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor;
|
||||
import io.opentelemetry.sdk.logs.internal.LoggerConfig;
|
||||
import io.opentelemetry.sdk.logs.internal.SdkLoggerProviderUtil;
|
||||
import io.opentelemetry.sdk.metrics.export.MetricReader;
|
||||
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
|
||||
import io.opentelemetry.sdk.metrics.internal.MeterConfig;
|
||||
import io.opentelemetry.sdk.metrics.internal.SdkMeterProviderUtil;
|
||||
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
|
||||
import io.opentelemetry.sdk.trace.internal.SdkTracerProviderUtil;
|
||||
import io.opentelemetry.sdk.trace.internal.TracerConfig;
|
||||
import java.time.Duration;
|
||||
|
||||
@AutoService(AutoConfigurationCustomizerProvider.class)
|
||||
|
|
@ -36,6 +44,9 @@ public class AgentTestingCustomizer implements AutoConfigurationCustomizerProvid
|
|||
public void customize(AutoConfigurationCustomizer autoConfigurationCustomizer) {
|
||||
autoConfigurationCustomizer.addTracerProviderCustomizer(
|
||||
(tracerProvider, config) -> {
|
||||
SdkTracerProviderUtil.addTracerConfiguratorCondition(
|
||||
tracerProvider, nameEquals("disabled-tracer"), TracerConfig.disabled());
|
||||
|
||||
// span processor is responsible for exporting spans, not adding it disables exporting of
|
||||
// the spans
|
||||
if (config.getBoolean("testing.exporter.enabled", true)) {
|
||||
|
|
@ -46,6 +57,9 @@ public class AgentTestingCustomizer implements AutoConfigurationCustomizerProvid
|
|||
|
||||
autoConfigurationCustomizer.addMeterProviderCustomizer(
|
||||
(meterProvider, config) -> {
|
||||
SdkMeterProviderUtil.addMeterConfiguratorCondition(
|
||||
meterProvider, nameEquals("disabled-meter"), MeterConfig.disabled());
|
||||
|
||||
// metric reader is responsible for exporting metrics, not adding it disables exporting of
|
||||
// the metrics
|
||||
if (config.getBoolean("testing.exporter.enabled", true)) {
|
||||
|
|
@ -56,6 +70,9 @@ public class AgentTestingCustomizer implements AutoConfigurationCustomizerProvid
|
|||
|
||||
autoConfigurationCustomizer.addLoggerProviderCustomizer(
|
||||
(logProvider, config) -> {
|
||||
SdkLoggerProviderUtil.addLoggerConfiguratorCondition(
|
||||
logProvider, nameEquals("disabled-logger"), LoggerConfig.disabled());
|
||||
|
||||
// log record processor is responsible for exporting logs, not adding it disables
|
||||
// exporting of the logs
|
||||
if (config.getBoolean("testing.exporter.enabled", true)) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue