Update to otel-java 0.6.0 (#662)

* Working against otel-java 0.6.0-SNAPSHOT

* Muzzle fix

* Better comment

* Now works with otel-java 0.6.0

* Fix muzzle
This commit is contained in:
Nikita Salnikov-Tarnovski 2020-07-11 09:10:28 +03:00 committed by GitHub
parent 8fa37618a0
commit d96a771dd0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
48 changed files with 359 additions and 296 deletions

View File

@ -230,8 +230,11 @@ public abstract class HttpServerTracer<REQUEST, CONNECTION, STORAGE> {
}
private <C> SpanContext extract(final C carrier, final HttpTextFormat.Getter<C> getter) {
// Using Context.ROOT here may be quite unexpected, but the reason is simple.
// We want either span context extracted from the carrier or invalid one.
// We DO NOT want any span context potentially lingering in the current context.
final Context context =
getPropagators().getHttpTextFormat().extract(Context.current(), carrier, getter);
getPropagators().getHttpTextFormat().extract(Context.ROOT, carrier, getter);
final Span span = getSpan(context);
return span.getContext();
}

View File

@ -18,7 +18,7 @@ package io.opentelemetry.auto.tooling;
import io.opentelemetry.auto.config.Config;
public class DefaultExporterConfig implements io.opentelemetry.sdk.contrib.auto.config.Config {
public class DefaultExporterConfig implements io.opentelemetry.sdk.extensions.auto.config.Config {
private final String prefix;
public DefaultExporterConfig(final String prefix) {

View File

@ -69,9 +69,9 @@ public class ExporterClassLoader extends URLClassLoader {
// A small hack to prevent other exporters from being loaded by this classloader if they
// should happen to appear on the classpath.
if (name.equals(
"META-INF/services/io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory")
"META-INF/services/io.opentelemetry.sdk.extensions.auto.config.SpanExporterFactory")
|| name.equals(
"META-INF/services/io.opentelemetry.sdk.contrib.auto.config.MetricExporterFactory")) {
"META-INF/services/io.opentelemetry.sdk.extensions.auto.config.MetricExporterFactory")) {
return findResources(name);
}
return super.getResources(name);

View File

@ -20,8 +20,8 @@ import com.google.common.collect.ImmutableMap;
import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.context.propagation.DefaultContextPropagators;
import io.opentelemetry.context.propagation.HttpTextFormat;
import io.opentelemetry.contrib.trace.propagation.B3Propagator;
import io.opentelemetry.contrib.trace.propagation.JaegerPropagator;
import io.opentelemetry.extensions.trace.propagation.B3Propagator;
import io.opentelemetry.extensions.trace.propagation.JaegerPropagator;
import io.opentelemetry.trace.propagation.HttpTraceContext;
import java.util.List;
import java.util.Map;

View File

@ -19,8 +19,8 @@ package io.opentelemetry.auto.tooling;
import io.opentelemetry.auto.bootstrap.spi.TracerCustomizer;
import io.opentelemetry.auto.config.Config;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.contrib.auto.config.MetricExporterFactory;
import io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory;
import io.opentelemetry.sdk.extensions.auto.config.MetricExporterFactory;
import io.opentelemetry.sdk.extensions.auto.config.SpanExporterFactory;
import io.opentelemetry.sdk.metrics.export.IntervalMetricReader;
import io.opentelemetry.sdk.metrics.export.MetricExporter;
import io.opentelemetry.sdk.trace.TracerSdkProvider;

View File

@ -17,12 +17,12 @@
package io.opentelemetry.auto.typed.base;
import io.opentelemetry.common.AttributeValue;
import io.opentelemetry.common.Attributes;
import io.opentelemetry.trace.EndSpanOptions;
import io.opentelemetry.trace.Event;
import io.opentelemetry.trace.Span;
import io.opentelemetry.trace.SpanContext;
import io.opentelemetry.trace.Status;
import java.util.Map;
// TODO: This should be moved into the API.
public class DelegatingSpan implements Span {
@ -68,13 +68,12 @@ public class DelegatingSpan implements Span {
}
@Override
public void addEvent(final String name, final Map<String, AttributeValue> attributes) {
public void addEvent(final String name, final Attributes attributes) {
delegate.addEvent(name, attributes);
}
@Override
public void addEvent(
final String name, final Map<String, AttributeValue> attributes, final long timestamp) {
public void addEvent(final String name, final Attributes attributes, final long timestamp) {
delegate.addEvent(name, attributes, timestamp);
}

View File

@ -16,10 +16,9 @@
package io.opentelemetry.auto.tooling
import io.opentelemetry.sdk.contrib.auto.config.Config
import io.opentelemetry.sdk.contrib.auto.config.MetricExporterFactory
import io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory
import io.opentelemetry.sdk.extensions.auto.config.Config
import io.opentelemetry.sdk.extensions.auto.config.MetricExporterFactory
import io.opentelemetry.sdk.extensions.auto.config.SpanExporterFactory
import io.opentelemetry.sdk.metrics.export.MetricExporter
import io.opentelemetry.sdk.trace.export.SpanExporter
import java.nio.charset.StandardCharsets

View File

@ -18,8 +18,8 @@ package io.opentelemetry.auto.exporters.jaeger;
import io.grpc.ManagedChannelBuilder;
import io.opentelemetry.exporters.jaeger.JaegerGrpcSpanExporter;
import io.opentelemetry.sdk.contrib.auto.config.Config;
import io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory;
import io.opentelemetry.sdk.extensions.auto.config.Config;
import io.opentelemetry.sdk.extensions.auto.config.SpanExporterFactory;
import io.opentelemetry.sdk.trace.export.SpanExporter;
public class JaegerExporterFactory implements SpanExporterFactory {

View File

@ -17,10 +17,10 @@
package io.opentelemetry.auto.exporters.logging;
import io.opentelemetry.common.AttributeValue;
import io.opentelemetry.common.ReadableKeyValuePairs.KeyValueConsumer;
import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.sdk.trace.export.SpanExporter;
import java.util.Collection;
import java.util.Map;
public class LoggingExporter implements SpanExporter {
private final String prefix;
@ -34,25 +34,29 @@ public class LoggingExporter implements SpanExporter {
for (final SpanData span : list) {
System.out.print(
prefix + " " + span.getName() + " " + span.getSpanId().toLowerBase16() + " ");
for (final Map.Entry<String, AttributeValue> attr : span.getAttributes().entrySet()) {
System.out.print(attr.getKey() + "=");
final AttributeValue value = attr.getValue();
switch (value.getType()) {
case STRING:
System.out.print('"' + value.getStringValue() + '"');
break;
case BOOLEAN:
System.out.print(value.getBooleanValue());
break;
case LONG:
System.out.print(value.getLongValue());
break;
case DOUBLE:
System.out.print(value.getDoubleValue());
break;
}
System.out.print(" ");
}
span.getAttributes()
.forEach(
new KeyValueConsumer<AttributeValue>() {
@Override
public void consume(String key, AttributeValue value) {
System.out.print(key + "=");
switch (value.getType()) {
case STRING:
System.out.print('"' + value.getStringValue() + '"');
break;
case BOOLEAN:
System.out.print(value.getBooleanValue());
break;
case LONG:
System.out.print(value.getLongValue());
break;
case DOUBLE:
System.out.print(value.getDoubleValue());
break;
}
System.out.print(" ");
}
});
}
System.out.println();
return ResultCode.SUCCESS;

View File

@ -16,8 +16,8 @@
package io.opentelemetry.auto.exporters.logging;
import io.opentelemetry.sdk.contrib.auto.config.Config;
import io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory;
import io.opentelemetry.sdk.extensions.auto.config.Config;
import io.opentelemetry.sdk.extensions.auto.config.SpanExporterFactory;
import io.opentelemetry.sdk.trace.export.SpanExporter;
public class LoggingExporterFactory implements SpanExporterFactory {

View File

@ -18,8 +18,8 @@ package io.opentelemetry.auto.exporters.otlp;
import io.grpc.ManagedChannelBuilder;
import io.opentelemetry.exporters.otlp.OtlpGrpcMetricExporter;
import io.opentelemetry.sdk.contrib.auto.config.Config;
import io.opentelemetry.sdk.contrib.auto.config.MetricExporterFactory;
import io.opentelemetry.sdk.extensions.auto.config.Config;
import io.opentelemetry.sdk.extensions.auto.config.MetricExporterFactory;
import io.opentelemetry.sdk.metrics.export.MetricExporter;
public class OtlpMetricExporterFactory implements MetricExporterFactory {

View File

@ -18,8 +18,8 @@ package io.opentelemetry.auto.exporters.otlp;
import io.grpc.ManagedChannelBuilder;
import io.opentelemetry.exporters.otlp.OtlpGrpcSpanExporter;
import io.opentelemetry.sdk.contrib.auto.config.Config;
import io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory;
import io.opentelemetry.sdk.extensions.auto.config.Config;
import io.opentelemetry.sdk.extensions.auto.config.SpanExporterFactory;
import io.opentelemetry.sdk.trace.export.SpanExporter;
public class OtlpSpanExporterFactory implements SpanExporterFactory {

View File

@ -15,7 +15,7 @@
*/
import io.opentelemetry.auto.tooling.ExporterClassLoader
import io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory
import io.opentelemetry.sdk.extensions.auto.config.SpanExporterFactory
import spock.lang.Shared
import spock.lang.Specification

View File

@ -17,8 +17,8 @@
package io.opentelemetry.auto.exporters.zipkin;
import io.opentelemetry.exporters.zipkin.ZipkinSpanExporter;
import io.opentelemetry.sdk.contrib.auto.config.Config;
import io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory;
import io.opentelemetry.sdk.extensions.auto.config.Config;
import io.opentelemetry.sdk.extensions.auto.config.SpanExporterFactory;
import io.opentelemetry.sdk.trace.export.SpanExporter;
import zipkin2.reporter.okhttp3.OkHttpSender;

View File

@ -8,7 +8,7 @@ configurations.all {
ext {
versions = [
opentelemetry: '0.5.0',
opentelemetry: '0.6.0',
slf4j : "1.7.30",
guava : "20.0", // Last version to support Java 7
@ -26,10 +26,10 @@ ext {
deps = [
// OpenTelemetry
opentelemetryApi : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-api', version: versions.opentelemetry),
opentelemetryApiAutoAnnotations: dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-contrib-auto-annotations', version: versions.opentelemetry),
opentelemetryTraceProps : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-contrib-trace-propagators', version: versions.opentelemetry),
opentelemetryApiAutoAnnotations: dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-extension-auto-annotations', version: versions.opentelemetry),
opentelemetryTraceProps : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-extension-trace-propagators', version: versions.opentelemetry),
opentelemetrySdk : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk', version: versions.opentelemetry),
opentelemetrySdkAutoConfig : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk-contrib-auto-config', version: versions.opentelemetry),
opentelemetrySdkAutoConfig : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk-extension-auto-config', version: versions.opentelemetry),
opentelemetryJaeger : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporters-jaeger', version: versions.opentelemetry),
opentelemetryOtlp : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporters-otlp', version: versions.opentelemetry),
opentelemetryZipkin : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporters-zipkin', version: versions.opentelemetry),

View File

@ -3,7 +3,7 @@ apply from: "$rootDir/gradle/instrumentation.gradle"
muzzle {
pass {
group = "io.opentelemetry"
module = "opentelemetry-contrib-auto-annotations"
module = "opentelemetry-extension-auto-annotations"
versions = "(,)"
extraDependency 'io.opentracing.contrib.dropwizard:dropwizard-opentracing:0.2.2'
}

View File

@ -18,7 +18,7 @@ package io.opentelemetry.auto.instrumentation.traceannotation;
import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.auto.bootstrap.instrumentation.decorator.BaseDecorator;
import io.opentelemetry.contrib.auto.annotations.WithSpan;
import io.opentelemetry.extensions.auto.annotations.WithSpan;
import io.opentelemetry.trace.Tracer;
import java.lang.reflect.Method;

View File

@ -27,7 +27,7 @@ import net.bytebuddy.asm.Advice;
/**
* Instrumentation for methods annotated with {@link
* io.opentelemetry.contrib.auto.annotations.WithSpan} annotation.
* io.opentelemetry.extensions.auto.annotations.WithSpan} annotation.
*
* @see WithSpanAnnotationInstrumentation
*/

View File

@ -23,7 +23,7 @@ import static net.bytebuddy.matcher.ElementMatchers.not;
import com.google.auto.service.AutoService;
import io.opentelemetry.auto.tooling.Instrumenter;
import io.opentelemetry.contrib.auto.annotations.WithSpan;
import io.opentelemetry.extensions.auto.annotations.WithSpan;
import java.util.Map;
import net.bytebuddy.description.annotation.AnnotationSource;
import net.bytebuddy.description.method.MethodDescription;
@ -32,7 +32,7 @@ import net.bytebuddy.matcher.ElementMatcher;
/**
* Instrumentation for methods annotated with {@link
* io.opentelemetry.contrib.auto.annotations.WithSpan} annotation. As that is Otel annotation, we
* io.opentelemetry.extensions.auto.annotations.WithSpan} annotation. As that is Otel annotation, we
* provide full support for all its attributes, as opposed to bare minimum functionality of {@link
* TraceAnnotationsInstrumentation} for third party annotations.
*/

View File

@ -17,7 +17,7 @@
package io.opentelemetry.test.annotation;
import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.contrib.auto.annotations.WithSpan;
import io.opentelemetry.extensions.auto.annotations.WithSpan;
import io.opentelemetry.trace.Tracer;
public class TracedWithSpan {

View File

@ -36,11 +36,10 @@ import io.grpc.Status;
import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.auto.instrumentation.grpc.common.GrpcHelper;
import io.opentelemetry.common.AttributeValue;
import io.opentelemetry.common.Attributes;
import io.opentelemetry.context.Scope;
import io.opentelemetry.trace.Span;
import java.net.InetSocketAddress;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
public class TracingClientInterceptor implements ClientInterceptor {
@ -129,9 +128,10 @@ public class TracingClientInterceptor implements ClientInterceptor {
@Override
public void onMessage(final RespT message) {
final Map<String, AttributeValue> attributes = new HashMap<>();
attributes.put("message.type", AttributeValue.stringAttributeValue("SENT"));
attributes.put("message.id", AttributeValue.longAttributeValue(messageId.incrementAndGet()));
Attributes attributes =
Attributes.of(
"message.type", AttributeValue.stringAttributeValue("SENT"),
"message.id", AttributeValue.longAttributeValue(messageId.incrementAndGet()));
span.addEvent("message", attributes);
try (final Scope scope = currentContextWith(span)) {
delegate().onMessage(message);

View File

@ -33,12 +33,11 @@ import io.grpc.ServerInterceptor;
import io.grpc.Status;
import io.opentelemetry.auto.instrumentation.grpc.common.GrpcHelper;
import io.opentelemetry.common.AttributeValue;
import io.opentelemetry.common.Attributes;
import io.opentelemetry.context.Scope;
import io.opentelemetry.trace.Span;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
public class TracingServerInterceptor implements ServerInterceptor {
@ -121,9 +120,10 @@ public class TracingServerInterceptor implements ServerInterceptor {
@Override
public void onMessage(final ReqT message) {
final Map<String, AttributeValue> attributes = new HashMap<>();
attributes.put("message.type", AttributeValue.stringAttributeValue("RECEIVED"));
attributes.put("message.id", AttributeValue.longAttributeValue(messageId.incrementAndGet()));
Attributes attributes =
Attributes.of(
"message.type", AttributeValue.stringAttributeValue("RECEIVED"),
"message.id", AttributeValue.longAttributeValue(messageId.incrementAndGet()));
span.addEvent("message", attributes);
try (final Scope scope = currentContextWith(span)) {
delegate().onMessage(message);

View File

@ -1,7 +1,7 @@
apply from: "$rootDir/gradle/instrumentation.gradle"
dependencies {
// this instrumentation needs to be able to be able to reference both the OpenTelemetry API
// this instrumentation needs to be able to reference both the OpenTelemetry API
// that is shaded in the bootstrap class loader (for sending telemetry to the agent),
// and the OpenTelemetry API that the user brings (in order to capture that telemetry)
//

View File

@ -84,11 +84,14 @@ public abstract class AbstractInstrumentation extends Instrumenter.Default {
packageName + ".metrics.UnshadedMeterProvider",
packageName + ".trace.Bridging",
packageName + ".trace.Bridging$1",
packageName + ".trace.Bridging$2",
packageName + ".trace.TracingContextUtils",
packageName + ".trace.UnshadedSpan",
packageName + ".trace.UnshadedSpan$Builder",
packageName + ".trace.UnshadedTracer",
packageName + ".trace.UnshadedTracerProvider"
packageName + ".trace.UnshadedTracerProvider",
packageName + ".LabelsShader",
packageName + ".LabelsShader$Consumer"
};
}

View File

@ -0,0 +1,50 @@
/*
* Copyright The OpenTelemetry Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.opentelemetry.auto.instrumentation.opentelemetryapi;
import io.opentelemetry.common.Labels;
import io.opentelemetry.common.Labels.Builder;
import unshaded.io.opentelemetry.common.ReadableKeyValuePairs.KeyValueConsumer;
/**
* This class converts between Labels class that user brings and Labels class that agent has.
*
* <p>TODO probably not the most performant solution...
*/
public class LabelsShader {
public static Labels shade(unshaded.io.opentelemetry.common.Labels labels) {
final io.opentelemetry.common.Labels.Builder builder =
io.opentelemetry.common.Labels.newBuilder();
labels.forEach(new Consumer(builder));
return builder.build();
}
static class Consumer implements KeyValueConsumer<String> {
private final Builder builder;
public Consumer(Builder builder) {
this.builder = builder;
}
@Override
public void consume(String key, String value) {
builder.setLabel(key, value);
}
}
}

View File

@ -16,7 +16,8 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
import java.util.Map;
import io.opentelemetry.auto.instrumentation.opentelemetryapi.LabelsShader;
import unshaded.io.opentelemetry.common.Labels;
import unshaded.io.opentelemetry.metrics.DoubleCounter;
class UnshadedDoubleCounter implements DoubleCounter {
@ -32,13 +33,13 @@ class UnshadedDoubleCounter implements DoubleCounter {
}
@Override
public void add(final double delta, final String... labelKeyValuePairs) {
shadedDoubleCounter.add(delta, labelKeyValuePairs);
public void add(final double delta, final Labels labels) {
shadedDoubleCounter.add(delta, LabelsShader.shade(labels));
}
@Override
public BoundDoubleCounter bind(final String... labelKeyValuePairs) {
return new BoundInstrument(shadedDoubleCounter.bind(labelKeyValuePairs));
public BoundDoubleCounter bind(final Labels labels) {
return new BoundInstrument(shadedDoubleCounter.bind(LabelsShader.shade(labels)));
}
static class BoundInstrument implements DoubleCounter.BoundDoubleCounter {
@ -83,8 +84,8 @@ class UnshadedDoubleCounter implements DoubleCounter {
}
@Override
public DoubleCounter.Builder setConstantLabels(final Map<String, String> constantLabels) {
shadedBuilder.setConstantLabels(constantLabels);
public DoubleCounter.Builder setConstantLabels(final Labels constantLabels) {
shadedBuilder.setConstantLabels(LabelsShader.shade(constantLabels));
return this;
}

View File

@ -16,8 +16,9 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
import io.opentelemetry.auto.instrumentation.opentelemetryapi.LabelsShader;
import io.opentelemetry.metrics.AsynchronousInstrument;
import java.util.Map;
import unshaded.io.opentelemetry.common.Labels;
import unshaded.io.opentelemetry.metrics.DoubleSumObserver;
class UnshadedDoubleSumObserver implements DoubleSumObserver {
@ -30,41 +31,40 @@ class UnshadedDoubleSumObserver implements DoubleSumObserver {
}
@Override
public void setCallback(final Callback<ResultDoubleSumObserver> metricUpdater) {
public void setCallback(final Callback<DoubleResult> metricUpdater) {
shadedDoubleSumObserver.setCallback(new ShadedResultDoubleSumObserver(metricUpdater));
}
static class ShadedResultDoubleSumObserver
implements AsynchronousInstrument.Callback<
io.opentelemetry.metrics.DoubleSumObserver.ResultDoubleSumObserver> {
io.opentelemetry.metrics.DoubleSumObserver.DoubleResult> {
private final Callback<ResultDoubleSumObserver> metricUpdater;
private final Callback<DoubleResult> metricUpdater;
protected ShadedResultDoubleSumObserver(final Callback<ResultDoubleSumObserver> metricUpdater) {
protected ShadedResultDoubleSumObserver(final Callback<DoubleResult> metricUpdater) {
this.metricUpdater = metricUpdater;
}
@Override
public void update(
final io.opentelemetry.metrics.DoubleSumObserver.ResultDoubleSumObserver result) {
public void update(final io.opentelemetry.metrics.DoubleSumObserver.DoubleResult result) {
metricUpdater.update(new UnshadedResultDoubleSumObserver(result));
}
}
static class UnshadedResultDoubleSumObserver implements ResultDoubleSumObserver {
static class UnshadedResultDoubleSumObserver implements DoubleResult {
private final io.opentelemetry.metrics.DoubleSumObserver.ResultDoubleSumObserver
private final io.opentelemetry.metrics.DoubleSumObserver.DoubleResult
shadedResultDoubleSumObserver;
public UnshadedResultDoubleSumObserver(
final io.opentelemetry.metrics.DoubleSumObserver.ResultDoubleSumObserver
final io.opentelemetry.metrics.DoubleSumObserver.DoubleResult
shadedResultDoubleSumObserver) {
this.shadedResultDoubleSumObserver = shadedResultDoubleSumObserver;
}
@Override
public void observe(final double value, final String... keyValueLabelPairs) {
shadedResultDoubleSumObserver.observe(value, keyValueLabelPairs);
public void observe(final double value, final Labels labels) {
shadedResultDoubleSumObserver.observe(value, LabelsShader.shade(labels));
}
}
@ -89,8 +89,8 @@ class UnshadedDoubleSumObserver implements DoubleSumObserver {
}
@Override
public DoubleSumObserver.Builder setConstantLabels(final Map<String, String> constantLabels) {
shadedBuilder.setConstantLabels(constantLabels);
public DoubleSumObserver.Builder setConstantLabels(final Labels constantLabels) {
shadedBuilder.setConstantLabels(LabelsShader.shade(constantLabels));
return this;
}

View File

@ -16,7 +16,8 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
import java.util.Map;
import io.opentelemetry.auto.instrumentation.opentelemetryapi.LabelsShader;
import unshaded.io.opentelemetry.common.Labels;
import unshaded.io.opentelemetry.metrics.DoubleUpDownCounter;
class UnshadedDoubleUpDownCounter implements DoubleUpDownCounter {
@ -33,13 +34,13 @@ class UnshadedDoubleUpDownCounter implements DoubleUpDownCounter {
}
@Override
public void add(final double delta, final String... labelKeyValuePairs) {
shadedDoubleUpDownCounter.add(delta, labelKeyValuePairs);
public void add(final double delta, final Labels labels) {
shadedDoubleUpDownCounter.add(delta, LabelsShader.shade(labels));
}
@Override
public BoundDoubleUpDownCounter bind(final String... labelKeyValuePairs) {
return new BoundInstrument(shadedDoubleUpDownCounter.bind(labelKeyValuePairs));
public BoundDoubleUpDownCounter bind(final Labels labels) {
return new BoundInstrument(shadedDoubleUpDownCounter.bind(LabelsShader.shade(labels)));
}
static class BoundInstrument implements BoundDoubleUpDownCounter {
@ -85,8 +86,8 @@ class UnshadedDoubleUpDownCounter implements DoubleUpDownCounter {
}
@Override
public DoubleUpDownCounter.Builder setConstantLabels(final Map<String, String> constantLabels) {
shadedBuilder.setConstantLabels(constantLabels);
public DoubleUpDownCounter.Builder setConstantLabels(final Labels constantLabels) {
shadedBuilder.setConstantLabels(LabelsShader.shade(constantLabels));
return this;
}

View File

@ -16,8 +16,9 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
import io.opentelemetry.auto.instrumentation.opentelemetryapi.LabelsShader;
import io.opentelemetry.metrics.AsynchronousInstrument;
import java.util.Map;
import unshaded.io.opentelemetry.common.Labels;
import unshaded.io.opentelemetry.metrics.DoubleUpDownSumObserver;
class UnshadedDoubleUpDownSumObserver implements DoubleUpDownSumObserver {
@ -30,44 +31,41 @@ class UnshadedDoubleUpDownSumObserver implements DoubleUpDownSumObserver {
}
@Override
public void setCallback(final Callback<ResultDoubleUpDownSumObserver> metricUpdater) {
public void setCallback(final Callback<DoubleResult> metricUpdater) {
shadedDoubleUpDownSumObserver.setCallback(
new ShadedResultDoubleUpDownSumObserver(metricUpdater));
}
static class ShadedResultDoubleUpDownSumObserver
implements AsynchronousInstrument.Callback<
io.opentelemetry.metrics.DoubleUpDownSumObserver.ResultDoubleUpDownSumObserver> {
io.opentelemetry.metrics.DoubleUpDownSumObserver.DoubleResult> {
private final Callback<ResultDoubleUpDownSumObserver> metricUpdater;
private final Callback<DoubleResult> metricUpdater;
protected ShadedResultDoubleUpDownSumObserver(
final Callback<ResultDoubleUpDownSumObserver> metricUpdater) {
protected ShadedResultDoubleUpDownSumObserver(final Callback<DoubleResult> metricUpdater) {
this.metricUpdater = metricUpdater;
}
@Override
public void update(
final io.opentelemetry.metrics.DoubleUpDownSumObserver.ResultDoubleUpDownSumObserver
result) {
public void update(final io.opentelemetry.metrics.DoubleUpDownSumObserver.DoubleResult result) {
metricUpdater.update(new UnshadedResultDoubleUpDownSumObserver(result));
}
}
static class UnshadedResultDoubleUpDownSumObserver implements ResultDoubleUpDownSumObserver {
static class UnshadedResultDoubleUpDownSumObserver implements DoubleResult {
private final io.opentelemetry.metrics.DoubleUpDownSumObserver.ResultDoubleUpDownSumObserver
private final io.opentelemetry.metrics.DoubleUpDownSumObserver.DoubleResult
shadedResultDoubleUpDownSumObserver;
public UnshadedResultDoubleUpDownSumObserver(
final io.opentelemetry.metrics.DoubleUpDownSumObserver.ResultDoubleUpDownSumObserver
final io.opentelemetry.metrics.DoubleUpDownSumObserver.DoubleResult
shadedResultDoubleUpDownSumObserver) {
this.shadedResultDoubleUpDownSumObserver = shadedResultDoubleUpDownSumObserver;
}
@Override
public void observe(final double value, final String... keyValueLabelPairs) {
shadedResultDoubleUpDownSumObserver.observe(value, keyValueLabelPairs);
public void observe(final double value, final Labels labels) {
shadedResultDoubleUpDownSumObserver.observe(value, LabelsShader.shade(labels));
}
}
@ -93,9 +91,8 @@ class UnshadedDoubleUpDownSumObserver implements DoubleUpDownSumObserver {
}
@Override
public DoubleUpDownSumObserver.Builder setConstantLabels(
final Map<String, String> constantLabels) {
shadedBuilder.setConstantLabels(constantLabels);
public DoubleUpDownSumObserver.Builder setConstantLabels(final Labels constantLabels) {
shadedBuilder.setConstantLabels(LabelsShader.shade(constantLabels));
return this;
}

View File

@ -16,8 +16,9 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
import io.opentelemetry.auto.instrumentation.opentelemetryapi.LabelsShader;
import io.opentelemetry.metrics.AsynchronousInstrument;
import java.util.Map;
import unshaded.io.opentelemetry.common.Labels;
import unshaded.io.opentelemetry.metrics.DoubleValueObserver;
class UnshadedDoubleValueObserver implements DoubleValueObserver {
@ -30,42 +31,40 @@ class UnshadedDoubleValueObserver implements DoubleValueObserver {
}
@Override
public void setCallback(final Callback<ResultDoubleValueObserver> metricUpdater) {
public void setCallback(final Callback<DoubleResult> metricUpdater) {
shadedDoubleValueObserver.setCallback(new ShadedResultDoubleValueObserver(metricUpdater));
}
static class ShadedResultDoubleValueObserver
implements AsynchronousInstrument.Callback<
io.opentelemetry.metrics.DoubleValueObserver.ResultDoubleValueObserver> {
io.opentelemetry.metrics.DoubleValueObserver.DoubleResult> {
private final Callback<ResultDoubleValueObserver> metricUpdater;
private final Callback<DoubleResult> metricUpdater;
protected ShadedResultDoubleValueObserver(
final Callback<ResultDoubleValueObserver> metricUpdater) {
protected ShadedResultDoubleValueObserver(final Callback<DoubleResult> metricUpdater) {
this.metricUpdater = metricUpdater;
}
@Override
public void update(
final io.opentelemetry.metrics.DoubleValueObserver.ResultDoubleValueObserver result) {
public void update(final io.opentelemetry.metrics.DoubleValueObserver.DoubleResult result) {
metricUpdater.update(new UnshadedResultDoubleValueObserver(result));
}
}
static class UnshadedResultDoubleValueObserver implements ResultDoubleValueObserver {
static class UnshadedResultDoubleValueObserver implements DoubleResult {
private final io.opentelemetry.metrics.DoubleValueObserver.ResultDoubleValueObserver
private final io.opentelemetry.metrics.DoubleValueObserver.DoubleResult
shadedResultDoubleValueObserver;
public UnshadedResultDoubleValueObserver(
final io.opentelemetry.metrics.DoubleValueObserver.ResultDoubleValueObserver
final io.opentelemetry.metrics.DoubleValueObserver.DoubleResult
shadedResultDoubleValueObserver) {
this.shadedResultDoubleValueObserver = shadedResultDoubleValueObserver;
}
@Override
public void observe(final double value, final String... keyValueLabelPairs) {
shadedResultDoubleValueObserver.observe(value, keyValueLabelPairs);
public void observe(final double value, final Labels labels) {
shadedResultDoubleValueObserver.observe(value, LabelsShader.shade(labels));
}
}
@ -90,8 +89,8 @@ class UnshadedDoubleValueObserver implements DoubleValueObserver {
}
@Override
public DoubleValueObserver.Builder setConstantLabels(final Map<String, String> constantLabels) {
shadedBuilder.setConstantLabels(constantLabels);
public DoubleValueObserver.Builder setConstantLabels(final Labels constantLabels) {
shadedBuilder.setConstantLabels(LabelsShader.shade(constantLabels));
return this;
}

View File

@ -16,7 +16,8 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
import java.util.Map;
import io.opentelemetry.auto.instrumentation.opentelemetryapi.LabelsShader;
import unshaded.io.opentelemetry.common.Labels;
import unshaded.io.opentelemetry.metrics.DoubleValueRecorder;
class UnshadedDoubleValueRecorder implements DoubleValueRecorder {
@ -33,13 +34,13 @@ class UnshadedDoubleValueRecorder implements DoubleValueRecorder {
}
@Override
public void record(final double delta, final String... labelKeyValuePairs) {
shadedDoubleValueRecorder.record(delta, labelKeyValuePairs);
public void record(final double delta, final Labels labels) {
shadedDoubleValueRecorder.record(delta, LabelsShader.shade(labels));
}
@Override
public BoundDoubleValueRecorder bind(final String... labelKeyValuePairs) {
return new BoundInstrument(shadedDoubleValueRecorder.bind(labelKeyValuePairs));
public BoundDoubleValueRecorder bind(final Labels labels) {
return new BoundInstrument(shadedDoubleValueRecorder.bind(LabelsShader.shade(labels)));
}
static class BoundInstrument implements DoubleValueRecorder.BoundDoubleValueRecorder {
@ -85,8 +86,8 @@ class UnshadedDoubleValueRecorder implements DoubleValueRecorder {
}
@Override
public DoubleValueRecorder.Builder setConstantLabels(final Map<String, String> constantLabels) {
shadedBuilder.setConstantLabels(constantLabels);
public DoubleValueRecorder.Builder setConstantLabels(final Labels constantLabels) {
shadedBuilder.setConstantLabels(LabelsShader.shade(constantLabels));
return this;
}

View File

@ -16,7 +16,8 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
import java.util.Map;
import io.opentelemetry.auto.instrumentation.opentelemetryapi.LabelsShader;
import unshaded.io.opentelemetry.common.Labels;
import unshaded.io.opentelemetry.metrics.LongCounter;
class UnshadedLongCounter implements LongCounter {
@ -32,13 +33,13 @@ class UnshadedLongCounter implements LongCounter {
}
@Override
public void add(final long delta, final String... labelKeyValuePairs) {
shadedLongCounter.add(delta, labelKeyValuePairs);
public void add(final long delta, final Labels labels) {
shadedLongCounter.add(delta, LabelsShader.shade(labels));
}
@Override
public BoundLongCounter bind(final String... labelKeyValuePairs) {
return new BoundInstrument(shadedLongCounter.bind(labelKeyValuePairs));
public BoundLongCounter bind(final Labels labels) {
return new BoundInstrument(shadedLongCounter.bind(LabelsShader.shade(labels)));
}
static class BoundInstrument implements LongCounter.BoundLongCounter {
@ -82,8 +83,8 @@ class UnshadedLongCounter implements LongCounter {
}
@Override
public LongCounter.Builder setConstantLabels(final Map<String, String> constantLabels) {
shadedBuilder.setConstantLabels(constantLabels);
public LongCounter.Builder setConstantLabels(final Labels constantLabels) {
shadedBuilder.setConstantLabels(LabelsShader.shade(constantLabels));
return this;
}

View File

@ -16,8 +16,9 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
import io.opentelemetry.auto.instrumentation.opentelemetryapi.LabelsShader;
import io.opentelemetry.metrics.AsynchronousInstrument;
import java.util.Map;
import unshaded.io.opentelemetry.common.Labels;
import unshaded.io.opentelemetry.metrics.LongSumObserver;
class UnshadedLongSumObserver implements LongSumObserver {
@ -30,41 +31,38 @@ class UnshadedLongSumObserver implements LongSumObserver {
}
@Override
public void setCallback(final Callback<ResultLongSumObserver> metricUpdater) {
public void setCallback(final Callback<LongResult> metricUpdater) {
shadedLongSumObserver.setCallback(new ShadedResultLongSumObserver(metricUpdater));
}
static class ShadedResultLongSumObserver
implements AsynchronousInstrument.Callback<
io.opentelemetry.metrics.LongSumObserver.ResultLongSumObserver> {
io.opentelemetry.metrics.LongSumObserver.LongResult> {
private final Callback<ResultLongSumObserver> metricUpdater;
private final Callback<LongResult> metricUpdater;
protected ShadedResultLongSumObserver(final Callback<ResultLongSumObserver> metricUpdater) {
protected ShadedResultLongSumObserver(final Callback<LongResult> metricUpdater) {
this.metricUpdater = metricUpdater;
}
@Override
public void update(
final io.opentelemetry.metrics.LongSumObserver.ResultLongSumObserver result) {
public void update(final io.opentelemetry.metrics.LongSumObserver.LongResult result) {
metricUpdater.update(new UnshadedResultLongSumObserver(result));
}
}
static class UnshadedResultLongSumObserver implements ResultLongSumObserver {
static class UnshadedResultLongSumObserver implements LongResult {
private final io.opentelemetry.metrics.LongSumObserver.ResultLongSumObserver
shadedResultLongSumObserver;
private final io.opentelemetry.metrics.LongSumObserver.LongResult shadedResultLongSumObserver;
public UnshadedResultLongSumObserver(
final io.opentelemetry.metrics.LongSumObserver.ResultLongSumObserver
shadedResultLongSumObserver) {
final io.opentelemetry.metrics.LongSumObserver.LongResult shadedResultLongSumObserver) {
this.shadedResultLongSumObserver = shadedResultLongSumObserver;
}
@Override
public void observe(final long value, final String... keyValueLabelPairs) {
shadedResultLongSumObserver.observe(value, keyValueLabelPairs);
public void observe(final long value, final Labels labels) {
shadedResultLongSumObserver.observe(value, LabelsShader.shade(labels));
}
}
@ -89,8 +87,8 @@ class UnshadedLongSumObserver implements LongSumObserver {
}
@Override
public LongSumObserver.Builder setConstantLabels(final Map<String, String> constantLabels) {
shadedBuilder.setConstantLabels(constantLabels);
public LongSumObserver.Builder setConstantLabels(final Labels constantLabels) {
shadedBuilder.setConstantLabels(LabelsShader.shade(constantLabels));
return this;
}

View File

@ -16,7 +16,8 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
import java.util.Map;
import io.opentelemetry.auto.instrumentation.opentelemetryapi.LabelsShader;
import unshaded.io.opentelemetry.common.Labels;
import unshaded.io.opentelemetry.metrics.LongUpDownCounter;
class UnshadedLongUpDownCounter implements LongUpDownCounter {
@ -33,13 +34,13 @@ class UnshadedLongUpDownCounter implements LongUpDownCounter {
}
@Override
public void add(final long delta, final String... labelKeyValuePairs) {
shadedLongUpDownCounter.add(delta, labelKeyValuePairs);
public void add(final long delta, final Labels labels) {
shadedLongUpDownCounter.add(delta, LabelsShader.shade(labels));
}
@Override
public BoundLongUpDownCounter bind(final String... labelKeyValuePairs) {
return new BoundInstrument(shadedLongUpDownCounter.bind(labelKeyValuePairs));
public BoundLongUpDownCounter bind(final Labels labels) {
return new BoundInstrument(shadedLongUpDownCounter.bind(LabelsShader.shade(labels)));
}
static class BoundInstrument implements BoundLongUpDownCounter {
@ -85,8 +86,8 @@ class UnshadedLongUpDownCounter implements LongUpDownCounter {
}
@Override
public LongUpDownCounter.Builder setConstantLabels(final Map<String, String> constantLabels) {
shadedBuilder.setConstantLabels(constantLabels);
public LongUpDownCounter.Builder setConstantLabels(final Labels constantLabels) {
shadedBuilder.setConstantLabels(LabelsShader.shade(constantLabels));
return this;
}

View File

@ -16,8 +16,9 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
import io.opentelemetry.auto.instrumentation.opentelemetryapi.LabelsShader;
import io.opentelemetry.metrics.AsynchronousInstrument;
import java.util.Map;
import unshaded.io.opentelemetry.common.Labels;
import unshaded.io.opentelemetry.metrics.LongUpDownSumObserver;
class UnshadedLongUpDownSumObserver implements LongUpDownSumObserver {
@ -30,42 +31,40 @@ class UnshadedLongUpDownSumObserver implements LongUpDownSumObserver {
}
@Override
public void setCallback(final Callback<ResultLongUpDownSumObserver> metricUpdater) {
public void setCallback(final Callback<LongResult> metricUpdater) {
shadedLongUpDownSumObserver.setCallback(new ShadedResultLongUpDownSumObserver(metricUpdater));
}
static class ShadedResultLongUpDownSumObserver
implements AsynchronousInstrument.Callback<
io.opentelemetry.metrics.LongUpDownSumObserver.ResultLongUpDownSumObserver> {
io.opentelemetry.metrics.LongUpDownSumObserver.LongResult> {
private final Callback<ResultLongUpDownSumObserver> metricUpdater;
private final Callback<LongResult> metricUpdater;
protected ShadedResultLongUpDownSumObserver(
final Callback<ResultLongUpDownSumObserver> metricUpdater) {
protected ShadedResultLongUpDownSumObserver(final Callback<LongResult> metricUpdater) {
this.metricUpdater = metricUpdater;
}
@Override
public void update(
final io.opentelemetry.metrics.LongUpDownSumObserver.ResultLongUpDownSumObserver result) {
public void update(final io.opentelemetry.metrics.LongUpDownSumObserver.LongResult result) {
metricUpdater.update(new UnshadedResultLongUpDownSumObserver(result));
}
}
static class UnshadedResultLongUpDownSumObserver implements ResultLongUpDownSumObserver {
static class UnshadedResultLongUpDownSumObserver implements LongResult {
private final io.opentelemetry.metrics.LongUpDownSumObserver.ResultLongUpDownSumObserver
private final io.opentelemetry.metrics.LongUpDownSumObserver.LongResult
shadedResultLongUpDownSumObserver;
public UnshadedResultLongUpDownSumObserver(
final io.opentelemetry.metrics.LongUpDownSumObserver.ResultLongUpDownSumObserver
final io.opentelemetry.metrics.LongUpDownSumObserver.LongResult
shadedResultLongUpDownSumObserver) {
this.shadedResultLongUpDownSumObserver = shadedResultLongUpDownSumObserver;
}
@Override
public void observe(final long value, final String... keyValueLabelPairs) {
shadedResultLongUpDownSumObserver.observe(value, keyValueLabelPairs);
public void observe(final long value, final Labels labels) {
shadedResultLongUpDownSumObserver.observe(value, LabelsShader.shade(labels));
}
}
@ -90,9 +89,8 @@ class UnshadedLongUpDownSumObserver implements LongUpDownSumObserver {
}
@Override
public LongUpDownSumObserver.Builder setConstantLabels(
final Map<String, String> constantLabels) {
shadedBuilder.setConstantLabels(constantLabels);
public LongUpDownSumObserver.Builder setConstantLabels(final Labels constantLabels) {
shadedBuilder.setConstantLabels(LabelsShader.shade(constantLabels));
return this;
}

View File

@ -16,7 +16,8 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
import java.util.Map;
import io.opentelemetry.auto.instrumentation.opentelemetryapi.LabelsShader;
import unshaded.io.opentelemetry.common.Labels;
import unshaded.io.opentelemetry.metrics.LongValueObserver;
class UnshadedLongValueObserver implements LongValueObserver {
@ -29,41 +30,39 @@ class UnshadedLongValueObserver implements LongValueObserver {
}
@Override
public void setCallback(final Callback<ResultLongValueObserver> metricUpdater) {
public void setCallback(final Callback<LongResult> metricUpdater) {
shadedLongValueObserver.setCallback(new ShadedResultLongValueObserver(metricUpdater));
}
public static class ShadedResultLongValueObserver
implements io.opentelemetry.metrics.AsynchronousInstrument.Callback<
io.opentelemetry.metrics.LongValueObserver.ResultLongValueObserver> {
io.opentelemetry.metrics.LongValueObserver.LongResult> {
private final Callback<ResultLongValueObserver> metricUpdater;
private final Callback<LongResult> metricUpdater;
public ShadedResultLongValueObserver(final Callback<ResultLongValueObserver> metricUpdater) {
public ShadedResultLongValueObserver(final Callback<LongResult> metricUpdater) {
this.metricUpdater = metricUpdater;
}
@Override
public void update(
final io.opentelemetry.metrics.LongValueObserver.ResultLongValueObserver result) {
public void update(final io.opentelemetry.metrics.LongValueObserver.LongResult result) {
metricUpdater.update(new UnshadedResultLongValueObserver(result));
}
}
public static class UnshadedResultLongValueObserver implements ResultLongValueObserver {
public static class UnshadedResultLongValueObserver implements LongResult {
private final io.opentelemetry.metrics.LongValueObserver.ResultLongValueObserver
private final io.opentelemetry.metrics.LongValueObserver.LongResult
shadedResultLongValueObserver;
public UnshadedResultLongValueObserver(
final io.opentelemetry.metrics.LongValueObserver.ResultLongValueObserver
shadedResultLongValueObserver) {
final io.opentelemetry.metrics.LongValueObserver.LongResult shadedResultLongValueObserver) {
this.shadedResultLongValueObserver = shadedResultLongValueObserver;
}
@Override
public void observe(final long value, final String... keyValueLabelPairs) {
shadedResultLongValueObserver.observe(value, keyValueLabelPairs);
public void observe(final long value, final Labels labels) {
shadedResultLongValueObserver.observe(value, LabelsShader.shade(labels));
}
}
@ -88,8 +87,8 @@ class UnshadedLongValueObserver implements LongValueObserver {
}
@Override
public LongValueObserver.Builder setConstantLabels(final Map<String, String> constantLabels) {
shadedBuilder.setConstantLabels(constantLabels);
public LongValueObserver.Builder setConstantLabels(final Labels constantLabels) {
shadedBuilder.setConstantLabels(LabelsShader.shade(constantLabels));
return this;
}

View File

@ -16,7 +16,8 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
import java.util.Map;
import io.opentelemetry.auto.instrumentation.opentelemetryapi.LabelsShader;
import unshaded.io.opentelemetry.common.Labels;
import unshaded.io.opentelemetry.metrics.LongValueRecorder;
class UnshadedLongValueRecorder implements LongValueRecorder {
@ -33,13 +34,13 @@ class UnshadedLongValueRecorder implements LongValueRecorder {
}
@Override
public void record(final long delta, final String... labelKeyValuePairs) {
shadedLongValueRecorder.record(delta, labelKeyValuePairs);
public void record(final long delta, final Labels labels) {
shadedLongValueRecorder.record(delta, LabelsShader.shade(labels));
}
@Override
public BoundLongValueRecorder bind(final String... labelKeyValuePairs) {
return new BoundInstrument(shadedLongValueRecorder.bind(labelKeyValuePairs));
public BoundLongValueRecorder bind(final Labels labels) {
return new BoundInstrument(shadedLongValueRecorder.bind(LabelsShader.shade(labels)));
}
static class BoundInstrument implements LongValueRecorder.BoundLongValueRecorder {
@ -85,8 +86,8 @@ class UnshadedLongValueRecorder implements LongValueRecorder {
}
@Override
public LongValueRecorder.Builder setConstantLabels(final Map<String, String> constantLabels) {
shadedBuilder.setConstantLabels(constantLabels);
public LongValueRecorder.Builder setConstantLabels(final Labels constantLabels) {
shadedBuilder.setConstantLabels(LabelsShader.shade(constantLabels));
return this;
}

View File

@ -16,10 +16,11 @@
package io.opentelemetry.auto.instrumentation.opentelemetryapi.trace;
import java.util.HashMap;
import java.util.Map;
import io.opentelemetry.common.Attributes.Builder;
import lombok.extern.slf4j.Slf4j;
import unshaded.io.opentelemetry.common.AttributeValue;
import unshaded.io.opentelemetry.common.Attributes;
import unshaded.io.opentelemetry.common.ReadableKeyValuePairs.KeyValueConsumer;
import unshaded.io.opentelemetry.trace.DefaultSpan;
import unshaded.io.opentelemetry.trace.EndSpanOptions;
import unshaded.io.opentelemetry.trace.Span;
@ -101,17 +102,20 @@ public class Bridging {
}
}
public static Map<String, io.opentelemetry.common.AttributeValue> toShaded(
final Map<String, AttributeValue> unshadedAttributes) {
final Map<String, io.opentelemetry.common.AttributeValue> shadedAttributes = new HashMap<>();
for (final Map.Entry<String, AttributeValue> entry : unshadedAttributes.entrySet()) {
final AttributeValue value = entry.getValue();
final io.opentelemetry.common.AttributeValue shadedValue = toShadedOrNull(value);
if (shadedValue != null) {
shadedAttributes.put(entry.getKey(), shadedValue);
}
}
return shadedAttributes;
public static io.opentelemetry.common.Attributes toShaded(final Attributes unshadedAttributes) {
final Builder builder = io.opentelemetry.common.Attributes.newBuilder();
unshadedAttributes.forEach(
new KeyValueConsumer<AttributeValue>() {
@Override
public void consume(String key, AttributeValue attributeValue) {
final io.opentelemetry.common.AttributeValue shadedValue =
toShadedOrNull(attributeValue);
if (shadedValue != null) {
builder.setAttribute(key, shadedValue);
}
}
});
return builder.build();
}
public static io.opentelemetry.common.AttributeValue toShadedOrNull(

View File

@ -19,9 +19,9 @@ package io.opentelemetry.auto.instrumentation.opentelemetryapi.trace;
import static io.opentelemetry.auto.instrumentation.opentelemetryapi.trace.Bridging.toShaded;
import static io.opentelemetry.auto.instrumentation.opentelemetryapi.trace.Bridging.toShadedOrNull;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import unshaded.io.opentelemetry.common.AttributeValue;
import unshaded.io.opentelemetry.common.Attributes;
import unshaded.io.opentelemetry.trace.EndSpanOptions;
import unshaded.io.opentelemetry.trace.Event;
import unshaded.io.opentelemetry.trace.Link;
@ -80,13 +80,12 @@ class UnshadedSpan implements Span {
}
@Override
public void addEvent(final String name, final Map<String, AttributeValue> attributes) {
public void addEvent(final String name, final Attributes attributes) {
shadedSpan.addEvent(name, toShaded(attributes));
}
@Override
public void addEvent(
final String name, final Map<String, AttributeValue> attributes, final long timestamp) {
public void addEvent(final String name, final Attributes attributes, final long timestamp) {
shadedSpan.addEvent(name, toShaded(attributes), timestamp);
}
@ -179,8 +178,7 @@ class UnshadedSpan implements Span {
}
@Override
public Span.Builder addLink(
final SpanContext spanContext, final Map<String, AttributeValue> attributes) {
public Span.Builder addLink(final SpanContext spanContext, final Attributes attributes) {
shadedBuilder.addLink(toShaded(spanContext));
return this;
}

View File

@ -16,14 +16,10 @@
import io.opentelemetry.auto.test.AgentTestRunner
import io.opentelemetry.sdk.OpenTelemetrySdk
import io.opentelemetry.sdk.metrics.data.MetricData
import unshaded.io.opentelemetry.OpenTelemetry
import unshaded.io.opentelemetry.common.Labels
import unshaded.io.opentelemetry.metrics.AsynchronousInstrument
import unshaded.io.opentelemetry.metrics.DoubleSumObserver
import unshaded.io.opentelemetry.metrics.DoubleUpDownSumObserver
import unshaded.io.opentelemetry.metrics.DoubleValueObserver
import unshaded.io.opentelemetry.metrics.LongSumObserver
import unshaded.io.opentelemetry.metrics.LongUpDownSumObserver
import unshaded.io.opentelemetry.metrics.LongValueObserver
import static io.opentelemetry.sdk.metrics.data.MetricData.Descriptor.Type.MONOTONIC_DOUBLE
import static io.opentelemetry.sdk.metrics.data.MetricData.Descriptor.Type.MONOTONIC_LONG
@ -43,34 +39,34 @@ class MeterTest extends AgentTestRunner {
def instrument = meter."$builderMethod"("test")
.setDescription("d")
.setUnit("u")
.setConstantLabels(["m": "n", "o": "p"])
.setConstantLabels(Labels.of("m", "n", "o", "p"))
.build()
if (bind) {
instrument = instrument.bind()
instrument = instrument.bind(Labels.empty())
}
if (bind) {
instrument.add(value1)
instrument.add(value2)
} else {
instrument.add(value1, "q", "r")
instrument.add(value2, "q", "r")
instrument.add(value1, Labels.of("q", "r"))
instrument.add(value2, Labels.of("q", "r"))
}
then:
def metricData = metricData(instrumentationName, "test")
def metricData = findMetric(OpenTelemetrySdk.getMeterProvider().getMetricProducer().getAllMetrics(), instrumentationName, "test")
metricData != null
metricData.descriptor.description == "d"
metricData.descriptor.unit == "u"
metricData.descriptor.type == expectedType
metricData.descriptor.constantLabels == ["m": "n", "o": "p"]
metricData.descriptor.constantLabels == io.opentelemetry.common.Labels.of("m", "n", "o", "p")
metricData.instrumentationLibraryInfo.name == instrumentationName
metricData.instrumentationLibraryInfo.version == "1.2.3"
metricData.points.size() == 1
def point = metricData.points.iterator().next()
if (bind) {
point.labels == ["w": "x", "y": "z"]
point.labels == io.opentelemetry.common.Labels.of("w", "x", "y", "z")
} else {
point.labels == ["q": "r"]
point.labels == io.opentelemetry.common.Labels.of("q", "r")
}
point.value == expectedValue
@ -96,34 +92,34 @@ class MeterTest extends AgentTestRunner {
def instrument = meter."$builderMethod"("test")
.setDescription("d")
.setUnit("u")
.setConstantLabels(["m": "n", "o": "p"])
.setConstantLabels(Labels.of("m", "n", "o", "p"))
.build()
if (bind) {
instrument = instrument.bind()
instrument = instrument.bind(Labels.empty())
}
if (bind) {
instrument.record(value1)
instrument.record(value2)
} else {
instrument.record(value1, "q", "r")
instrument.record(value2, "q", "r")
instrument.record(value1, Labels.of("q", "r"))
instrument.record(value2, Labels.of("q", "r"))
}
then:
def metricData = metricData(instrumentationName, "test")
def metricData = findMetric(OpenTelemetrySdk.getMeterProvider().getMetricProducer().getAllMetrics(), instrumentationName, "test")
metricData != null
metricData.descriptor.description == "d"
metricData.descriptor.unit == "u"
metricData.descriptor.type == SUMMARY
metricData.descriptor.constantLabels == ["m": "n", "o": "p"]
metricData.descriptor.constantLabels == io.opentelemetry.common.Labels.of("m", "n", "o", "p")
metricData.instrumentationLibraryInfo.name == instrumentationName
metricData.instrumentationLibraryInfo.version == "1.2.3"
metricData.points.size() == 1
def point = metricData.points.iterator().next()
if (bind) {
point.labels == ["w": "x", "y": "z"]
point.labels == io.opentelemetry.common.Labels.of("w", "x", "y", "z")
} else {
point.labels == ["q": "r"]
point.labels == io.opentelemetry.common.Labels.of("q", "r")
}
point.count == 2
point.sum == sum
@ -146,64 +142,64 @@ class MeterTest extends AgentTestRunner {
def instrument = meter."$builderMethod"("test")
.setDescription("d")
.setUnit("u")
.setConstantLabels(["m": "n", "o": "p"])
.setConstantLabels(Labels.of("m", "n", "o", "p"))
.build()
if (builderMethod == "longSumObserverBuilder") {
instrument.setCallback(new AsynchronousInstrument.Callback<LongSumObserver.ResultLongSumObserver>() {
instrument.setCallback(new AsynchronousInstrument.Callback<AsynchronousInstrument.LongResult>() {
@Override
void update(LongSumObserver.ResultLongSumObserver resultLongSumObserver) {
resultLongSumObserver.observe(123, "q", "r")
void update(AsynchronousInstrument.LongResult resultLongSumObserver) {
resultLongSumObserver.observe(123, Labels.of("q", "r"))
}
})
} else if (builderMethod == "longUpDownSumObserverBuilder") {
instrument.setCallback(new AsynchronousInstrument.Callback<LongUpDownSumObserver.ResultLongUpDownSumObserver>() {
instrument.setCallback(new AsynchronousInstrument.Callback<AsynchronousInstrument.LongResult>() {
@Override
void update(LongUpDownSumObserver.ResultLongUpDownSumObserver resultLongUpDownSumObserver) {
resultLongUpDownSumObserver.observe(123, "q", "r")
void update(AsynchronousInstrument.LongResult resultLongUpDownSumObserver) {
resultLongUpDownSumObserver.observe(123, Labels.of("q", "r"))
}
})
} else if (builderMethod == "longValueObserverBuilder") {
instrument.setCallback(new AsynchronousInstrument.Callback<LongValueObserver.ResultLongValueObserver>() {
instrument.setCallback(new AsynchronousInstrument.Callback<AsynchronousInstrument.LongResult>() {
@Override
void update(LongValueObserver.ResultLongValueObserver resultLongObserver) {
resultLongObserver.observe(123, "q", "r")
void update(AsynchronousInstrument.LongResult resultLongObserver) {
resultLongObserver.observe(123, Labels.of("q", "r"))
}
})
} else if (builderMethod == "doubleSumObserverBuilder") {
instrument.setCallback(new AsynchronousInstrument.Callback<DoubleSumObserver.ResultDoubleSumObserver>() {
instrument.setCallback(new AsynchronousInstrument.Callback<AsynchronousInstrument.DoubleResult>() {
@Override
void update(DoubleSumObserver.ResultDoubleSumObserver resultDoubleSumObserver) {
resultDoubleSumObserver.observe(1.23, "q", "r")
void update(AsynchronousInstrument.DoubleResult resultDoubleSumObserver) {
resultDoubleSumObserver.observe(1.23, Labels.of("q", "r"))
}
})
} else if (builderMethod == "doubleUpDownSumObserverBuilder") {
instrument.setCallback(new AsynchronousInstrument.Callback<DoubleUpDownSumObserver.ResultDoubleUpDownSumObserver>() {
instrument.setCallback(new AsynchronousInstrument.Callback<AsynchronousInstrument.DoubleResult>() {
@Override
void update(DoubleUpDownSumObserver.ResultDoubleUpDownSumObserver resultDoubleUpDownSumObserver) {
resultDoubleUpDownSumObserver.observe(1.23, "q", "r")
void update(AsynchronousInstrument.DoubleResult resultDoubleUpDownSumObserver) {
resultDoubleUpDownSumObserver.observe(1.23, Labels.of("q", "r"))
}
})
} else if (builderMethod == "doubleValueObserverBuilder") {
instrument.setCallback(new AsynchronousInstrument.Callback<DoubleValueObserver.ResultDoubleValueObserver>() {
instrument.setCallback(new AsynchronousInstrument.Callback<AsynchronousInstrument.DoubleResult>() {
@Override
void update(DoubleValueObserver.ResultDoubleValueObserver resultDoubleObserver) {
resultDoubleObserver.observe(1.23, "q", "r")
void update(AsynchronousInstrument.DoubleResult resultDoubleObserver) {
resultDoubleObserver.observe(1.23, Labels.of("q", "r"))
}
})
}
then:
def metricData = metricData(instrumentationName, "test")
def metricData = findMetric(OpenTelemetrySdk.getMeterProvider().getMetricProducer().getAllMetrics(), instrumentationName, "test")
metricData != null
metricData.descriptor.description == "d"
metricData.descriptor.unit == "u"
metricData.descriptor.type == expectedType
metricData.descriptor.constantLabels == ["m": "n", "o": "p"]
metricData.descriptor.constantLabels == io.opentelemetry.common.Labels.of("m", "n", "o", "p")
metricData.instrumentationLibraryInfo.name == instrumentationName
metricData.instrumentationLibraryInfo.version == "1.2.3"
metricData.points.size() == 1
def point = metricData.points.iterator().next()
point.labels == ["q": "r"]
point.labels == io.opentelemetry.common.Labels.of("q", "r")
if (builderMethod.startsWith("long")) {
point."$valueMethod" == 123
} else {
@ -230,52 +226,54 @@ class MeterTest extends AgentTestRunner {
def longCounter = meter.longCounterBuilder("test")
.setDescription("d")
.setUnit("u")
.setConstantLabels(["m": "n", "o": "p"])
.setConstantLabels(Labels.of("m", "n", "o", "p"))
.build()
def doubleMeasure = meter.doubleValueRecorderBuilder("test2")
.setDescription("d")
.setUnit("u")
.setConstantLabels(["m": "n", "o": "p"])
.setConstantLabels(Labels.of("m", "n", "o", "p"))
.build()
def batchRecorder = meter.newBatchRecorder("q", "r")
batchRecorder.put(longCounter, 5)
batchRecorder.put(longCounter, 6)
batchRecorder.put(doubleMeasure, 5.5)
batchRecorder.put(doubleMeasure, 6.6)
batchRecorder.record()
meter.newBatchRecorder("q", "r")
.put(longCounter, 5)
.put(longCounter, 6)
.put(doubleMeasure, 5.5)
.put(doubleMeasure, 6.6)
.record()
def allMetrics = OpenTelemetrySdk.getMeterProvider().getMetricProducer().getAllMetrics()
then:
def metricData = metricData(instrumentationName, "test")
def metricData = findMetric(allMetrics, instrumentationName, "test")
metricData != null
metricData.descriptor.description == "d"
metricData.descriptor.unit == "u"
metricData.descriptor.type == MONOTONIC_LONG
metricData.descriptor.constantLabels == ["m": "n", "o": "p"]
metricData.descriptor.constantLabels == io.opentelemetry.common.Labels.of("m", "n", "o", "p")
metricData.instrumentationLibraryInfo.name == instrumentationName
metricData.instrumentationLibraryInfo.version == "1.2.3"
metricData.points.size() == 1
def point = metricData.points.iterator().next()
point.labels == ["q": "r"]
point.labels == io.opentelemetry.common.Labels.of("q", "r")
point.value == 11
def metricData2 = this.metricData(instrumentationName, "test2")
def metricData2 = findMetric(allMetrics, instrumentationName, "test2")
metricData2 != null
metricData2.descriptor.description == "d"
metricData2.descriptor.unit == "u"
metricData2.descriptor.type == SUMMARY
metricData2.descriptor.constantLabels == ["m": "n", "o": "p"]
metricData2.descriptor.constantLabels == io.opentelemetry.common.Labels.of("m", "n", "o", "p")
metricData2.instrumentationLibraryInfo.name == instrumentationName
metricData2.instrumentationLibraryInfo.version == "1.2.3"
metricData2.points.size() == 1
def point2 = metricData2.points.iterator().next()
point2.labels == ["q": "r"]
point2.labels == io.opentelemetry.common.Labels.of("q", "r")
point2.count == 2
point2.sum == 12.1
}
def metricData(instrumentationName, metricName) {
for (def metric : OpenTelemetrySdk.getMeterProvider().getMetricProducer().getAllMetrics()) {
def findMetric(Collection<MetricData> allMetrics, instrumentationName, metricName) {
for (def metric : allMetrics) {
if (metric.instrumentationLibraryInfo.name == instrumentationName && metric.descriptor.name == metricName) {
return metric
}

View File

@ -16,7 +16,7 @@
import static io.opentelemetry.auto.test.base.HttpServerTest.ServerEndpoint.SUCCESS;
import io.opentelemetry.contrib.auto.annotations.WithSpan;
import io.opentelemetry.extensions.auto.annotations.WithSpan;
import io.reactivex.Single;
import io.vertx.core.DeploymentOptions;
import io.vertx.core.Handler;

View File

@ -19,18 +19,19 @@ package io.opentelemetry.auto.test.asserts
import groovy.transform.stc.ClosureParams
import groovy.transform.stc.SimpleType
import io.opentelemetry.common.AttributeValue
import io.opentelemetry.common.ReadableAttributes
import io.opentelemetry.common.ReadableKeyValuePairs
import java.util.regex.Pattern
class AttributesAssert {
private final Map<String, AttributeValue> attributes
private final ReadableAttributes attributes
private final Set<String> assertedAttributes = new TreeSet<>()
private AttributesAssert(attributes) {
private AttributesAssert(ReadableAttributes attributes) {
this.attributes = attributes
}
static void assertAttributes(Map<String, AttributeValue> attributes,
static void assertAttributes(ReadableAttributes attributes,
@ClosureParams(value = SimpleType, options = ['io.opentelemetry.auto.test.asserts.AttributesAssert'])
@DelegatesTo(value = AttributesAssert, strategy = Closure.DELEGATE_FIRST) Closure spec) {
def asserter = new AttributesAssert(attributes)
@ -59,7 +60,7 @@ class AttributesAssert {
return
}
assertedAttributes.add(name)
def val = getVal(attributes[name])
def val = getVal(attributes.get(name))
if (value instanceof Pattern) {
assert val =~ value
} else if (value instanceof Class) {
@ -83,12 +84,19 @@ class AttributesAssert {
}
void assertAttributesAllVerified() {
def set = new TreeMap<>(attributes).keySet()
set.removeAll(assertedAttributes)
// The primary goal is to ensure the set is empty.
// attributes and assertedAttributes are included via an "always true" comparison
// so they provide better context in the error message.
assert (attributes.entrySet() != assertedAttributes || assertedAttributes.isEmpty()) && set.isEmpty()
Set<String> allAttributes = new TreeSet<>()
attributes.forEach(new ReadableKeyValuePairs.KeyValueConsumer<AttributeValue>() {
@Override
void consume(String key, AttributeValue value) {
allAttributes.add(key)
}
})
Set<String> unverifiedAttributes = new TreeSet(allAttributes)
unverifiedAttributes.removeAll(assertedAttributes)
// The first and second condition in the assert are exactly the same
// but both are included in order to provide better context in the error message.
// containsAll because tests may assert more attributes than span actually has
assert unverifiedAttributes.isEmpty() && assertedAttributes.containsAll(allAttributes)
}
private static Object getVal(AttributeValue attributeValue) {

View File

@ -3,7 +3,7 @@ apply from: "$rootDir/gradle/java.gradle"
minimumBranchCoverage = 0.5
minimumInstructionCoverage = 0.5
excludedClassesCoverage += [
'io.opentelemetry.auto.test.asserts.*Assert',
'io.opentelemetry.auto.test.asserts.*Assert*',
'io.opentelemetry.auto.test.base.*',
'io.opentelemetry.auto.test.log.*',
'io.opentelemetry.auto.test.AgentTestRunner',