From a9da20f831d215f6653c567946d405d2e0f90971 Mon Sep 17 00:00:00 2001 From: jack-berg <34418638+jack-berg@users.noreply.github.com> Date: Fri, 13 Oct 2023 10:50:12 -0500 Subject: [PATCH] Cleanup opencensus shim (#5858) --- .../{internal/metrics => }/MetricAdapter.java | 13 +- .../OpenCensusMetricProducer.java | 3 +- .../OpenTelemetryContextManager.java | 1 + .../opencensusshim/OpenTelemetryCtx.java | 2 +- .../OpenTelemetryMetricsExporter.java | 83 --------- .../OpenTelemetryNoRecordEventsSpanImpl.java | 3 +- ...OpenTelemetryPropagationComponentImpl.java | 2 +- .../OpenTelemetrySpanBuilderImpl.java | 48 ++--- .../OpenTelemetryTextFormatImpl.java | 2 +- .../OpenTelemetryTraceComponentImpl.java | 4 +- .../OpenTelemetryTracerImpl.java | 4 +- .../ThreadLocalRandomHandler.java | 4 +- .../metrics => }/MetricAdapterTest.java | 2 +- .../OpenCensusMetricProducerTest.java | 3 +- .../{metrics => }/OpenCensusMetricsTest.java | 3 +- .../OpenTelemetryMetricExporterTest.java | 174 ------------------ 16 files changed, 44 insertions(+), 307 deletions(-) rename opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/{internal/metrics => }/MetricAdapter.java (97%) delete mode 100644 opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryMetricsExporter.java rename opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/{internal/metrics => }/MetricAdapterTest.java (99%) rename opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/{metrics => }/OpenCensusMetricProducerTest.java (97%) rename opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/{metrics => }/OpenCensusMetricsTest.java (94%) delete mode 100644 opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/OpenTelemetryMetricExporterTest.java diff --git a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/internal/metrics/MetricAdapter.java b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/MetricAdapter.java similarity index 97% rename from opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/internal/metrics/MetricAdapter.java rename to opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/MetricAdapter.java index 7ea80936d74..366f6786a4d 100644 --- a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/internal/metrics/MetricAdapter.java +++ b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/MetricAdapter.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.opencensusshim.internal.metrics; +package io.opentelemetry.opencensusshim; import io.opencensus.common.Timestamp; import io.opencensus.metrics.LabelKey; @@ -55,13 +55,8 @@ import java.util.regex.Pattern; import javax.annotation.Nullable; -/** - * Adapts an OpenCensus metric into the OpenTelemetry metric data API. - * - *

This class is internal and is hence not for public use. Its APIs are unstable and can change - * at any time. - */ -public final class MetricAdapter { +/** Adapts an OpenCensus metric into the OpenTelemetry metric data API. */ +final class MetricAdapter { private MetricAdapter() {} // All OpenCensus metrics come from this shim. @@ -81,7 +76,7 @@ private MetricAdapter() {} * @param otelResource The resource associated with the opentelemetry SDK. * @param censusMetric The OpenCensus metric to convert. */ - public static MetricData convert(Resource otelResource, Metric censusMetric) { + static MetricData convert(Resource otelResource, Metric censusMetric) { // Note: we can't just adapt interfaces, we need to do full copy because OTel data API uses // auto-value vs. pure interfaces. switch (censusMetric.getMetricDescriptor().getType()) { diff --git a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenCensusMetricProducer.java b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenCensusMetricProducer.java index 9a2e29a2bc2..121c61360f1 100644 --- a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenCensusMetricProducer.java +++ b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenCensusMetricProducer.java @@ -7,7 +7,6 @@ import io.opencensus.metrics.Metrics; import io.opencensus.metrics.export.MetricProducerManager; -import io.opentelemetry.opencensusshim.internal.metrics.MetricAdapter; import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder; import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.metrics.export.MetricProducer; @@ -26,7 +25,7 @@ public final class OpenCensusMetricProducer implements MetricProducer { private final MetricProducerManager openCensusMetricStorage; - OpenCensusMetricProducer(MetricProducerManager openCensusMetricStorage) { + private OpenCensusMetricProducer(MetricProducerManager openCensusMetricStorage) { this.openCensusMetricStorage = openCensusMetricStorage; } diff --git a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryContextManager.java b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryContextManager.java index d73e41ab5dd..24d9818645c 100644 --- a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryContextManager.java +++ b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryContextManager.java @@ -22,6 +22,7 @@ public final class OpenTelemetryContextManager implements ContextManager { private static final Logger LOGGER = Logger.getLogger(OpenTelemetryContextManager.class.getName()); + @SuppressWarnings("unused") // Loaded via reflection public OpenTelemetryContextManager() {} @Override diff --git a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryCtx.java b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryCtx.java index ae94f630713..a551597186f 100644 --- a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryCtx.java +++ b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryCtx.java @@ -10,7 +10,7 @@ import io.opentelemetry.context.Scope; import javax.annotation.Nullable; -class OpenTelemetryCtx implements ContextHandle { +final class OpenTelemetryCtx implements ContextHandle { private final Context context; diff --git a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryMetricsExporter.java b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryMetricsExporter.java deleted file mode 100644 index 32783892204..00000000000 --- a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryMetricsExporter.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.opencensusshim; - -import com.google.common.base.Joiner; -import io.opencensus.common.Duration; -import io.opencensus.exporter.metrics.util.IntervalMetricReader; -import io.opencensus.exporter.metrics.util.MetricExporter; -import io.opencensus.exporter.metrics.util.MetricReader; -import io.opencensus.metrics.Metrics; -import io.opencensus.metrics.export.Metric; -import io.opencensus.metrics.export.MetricDescriptor; -import io.opentelemetry.opencensusshim.internal.metrics.MetricAdapter; -import io.opentelemetry.sdk.metrics.data.MetricData; -import io.opentelemetry.sdk.resources.Resource; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.logging.Logger; - -@Deprecated -public final class OpenTelemetryMetricsExporter extends MetricExporter { - private static final Logger LOGGER = - Logger.getLogger(OpenTelemetryMetricsExporter.class.getName()); - - private static final String EXPORTER_NAME = "OpenTelemetryMetricExporter"; - - private final IntervalMetricReader intervalMetricReader; - private final io.opentelemetry.sdk.metrics.export.MetricExporter otelExporter; - // TODO - find this from OTel SDK. - private final Resource resource = Resource.getDefault(); - - public static OpenTelemetryMetricsExporter createAndRegister( - io.opentelemetry.sdk.metrics.export.MetricExporter otelExporter) { - return new OpenTelemetryMetricsExporter(otelExporter, Duration.create(60, 0)); - } - - public static OpenTelemetryMetricsExporter createAndRegister( - io.opentelemetry.sdk.metrics.export.MetricExporter otelExporter, Duration exportInterval) { - return new OpenTelemetryMetricsExporter(otelExporter, exportInterval); - } - - private OpenTelemetryMetricsExporter( - io.opentelemetry.sdk.metrics.export.MetricExporter otelExporter, Duration exportInterval) { - this.otelExporter = otelExporter; - IntervalMetricReader.Options.Builder options = IntervalMetricReader.Options.builder(); - MetricReader reader = - MetricReader.create( - MetricReader.Options.builder() - .setMetricProducerManager(Metrics.getExportComponent().getMetricProducerManager()) - .setSpanName(EXPORTER_NAME) - .build()); - intervalMetricReader = - IntervalMetricReader.create( - this, reader, options.setExportInterval(exportInterval).build()); - } - - @Override - public void export(Collection metrics) { - List metricData = new ArrayList<>(); - Set unsupportedTypes = new HashSet<>(); - for (Metric metric : metrics) { - metricData.add(MetricAdapter.convert(resource, metric)); - } - if (!unsupportedTypes.isEmpty()) { - LOGGER.warning( - Joiner.on(",").join(unsupportedTypes) - + " not supported by OpenCensus to OpenTelemetry migrator."); - } - if (!metricData.isEmpty()) { - otelExporter.export(metricData); - } - } - - public void stop() { - intervalMetricReader.stop(); - } -} diff --git a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryNoRecordEventsSpanImpl.java b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryNoRecordEventsSpanImpl.java index b6f3e8eec11..1e18beb8ce4 100644 --- a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryNoRecordEventsSpanImpl.java +++ b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryNoRecordEventsSpanImpl.java @@ -39,7 +39,8 @@ import java.util.concurrent.TimeUnit; import javax.annotation.Nonnull; -class OpenTelemetryNoRecordEventsSpanImpl extends Span implements io.opentelemetry.api.trace.Span { +final class OpenTelemetryNoRecordEventsSpanImpl extends Span + implements io.opentelemetry.api.trace.Span { private static final EnumSet NOT_RECORD_EVENTS_SPAN_OPTIONS = EnumSet.noneOf(Options.class); diff --git a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryPropagationComponentImpl.java b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryPropagationComponentImpl.java index 6898345ebd0..a4d77541675 100644 --- a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryPropagationComponentImpl.java +++ b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryPropagationComponentImpl.java @@ -10,7 +10,7 @@ import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; import io.opentelemetry.extension.trace.propagation.B3Propagator; -class OpenTelemetryPropagationComponentImpl extends PropagationComponentImpl { +final class OpenTelemetryPropagationComponentImpl extends PropagationComponentImpl { private final TextFormat b3Format = new OpenTelemetryTextFormatImpl(B3Propagator.injectingMultiHeaders()); diff --git a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetrySpanBuilderImpl.java b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetrySpanBuilderImpl.java index bd09e9b66f1..ede66642e06 100644 --- a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetrySpanBuilderImpl.java +++ b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetrySpanBuilderImpl.java @@ -48,7 +48,7 @@ import java.util.Random; import javax.annotation.Nullable; -class OpenTelemetrySpanBuilderImpl extends SpanBuilder { +final class OpenTelemetrySpanBuilderImpl extends SpanBuilder { private static final Tracer OTEL_TRACER = GlobalOpenTelemetry.getTracer("io.opentelemetry.opencensusshim", OtelVersion.VERSION); @@ -68,6 +68,29 @@ class OpenTelemetrySpanBuilderImpl extends SpanBuilder { @Nullable private Sampler ocSampler; @Nullable private SpanKind otelKind; + private OpenTelemetrySpanBuilderImpl( + String name, + @Nullable SpanContext ocRemoteParentSpanContext, + @Nullable Span ocParent, + OpenTelemetrySpanBuilderImpl.Options options) { + this.name = checkNotNull(name, "name"); + this.ocParent = ocParent; + this.ocRemoteParentSpanContext = ocRemoteParentSpanContext; + this.options = options; + } + + static OpenTelemetrySpanBuilderImpl createWithParent( + String spanName, @Nullable Span parent, OpenTelemetrySpanBuilderImpl.Options options) { + return new OpenTelemetrySpanBuilderImpl(spanName, null, parent, options); + } + + static OpenTelemetrySpanBuilderImpl createWithRemoteParent( + String spanName, + @Nullable SpanContext remoteParentSpanContext, + OpenTelemetrySpanBuilderImpl.Options options) { + return new OpenTelemetrySpanBuilderImpl(spanName, remoteParentSpanContext, null, options); + } + @Override public SpanBuilder setSampler(Sampler sampler) { this.ocSampler = checkNotNull(sampler, "sampler"); @@ -155,29 +178,6 @@ public Span startSpan() { return new OpenTelemetrySpanImpl(otSpan); } - private OpenTelemetrySpanBuilderImpl( - String name, - @Nullable SpanContext ocRemoteParentSpanContext, - @Nullable Span ocParent, - OpenTelemetrySpanBuilderImpl.Options options) { - this.name = checkNotNull(name, "name"); - this.ocParent = ocParent; - this.ocRemoteParentSpanContext = ocRemoteParentSpanContext; - this.options = options; - } - - static OpenTelemetrySpanBuilderImpl createWithParent( - String spanName, @Nullable Span parent, OpenTelemetrySpanBuilderImpl.Options options) { - return new OpenTelemetrySpanBuilderImpl(spanName, null, parent, options); - } - - static OpenTelemetrySpanBuilderImpl createWithRemoteParent( - String spanName, - @Nullable SpanContext remoteParentSpanContext, - OpenTelemetrySpanBuilderImpl.Options options) { - return new OpenTelemetrySpanBuilderImpl(spanName, remoteParentSpanContext, null, options); - } - private static boolean makeSamplingDecision( @Nullable SpanContext parent, @Nullable Boolean hasRemoteParent, diff --git a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryTextFormatImpl.java b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryTextFormatImpl.java index c8c2c3d4009..ac4d76f429d 100644 --- a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryTextFormatImpl.java +++ b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryTextFormatImpl.java @@ -18,7 +18,7 @@ import java.util.List; import javax.annotation.Nullable; -class OpenTelemetryTextFormatImpl extends TextFormat { +final class OpenTelemetryTextFormatImpl extends TextFormat { private final TextMapPropagator propagator; diff --git a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryTraceComponentImpl.java b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryTraceComponentImpl.java index 4859dd9ca1f..503220353b4 100644 --- a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryTraceComponentImpl.java +++ b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryTraceComponentImpl.java @@ -30,7 +30,7 @@ public final class OpenTelemetryTraceComponentImpl extends TraceComponent { private final TraceConfig traceConfig = makeTraceConfig(); private final Tracer tracer; - /** Public constructor to be used with reflection loading. */ + @SuppressWarnings("unused") // Loaded via reflection public OpenTelemetryTraceComponentImpl() { clock = MillisClock.getInstance(); RandomHandler randomHandler = new ThreadLocalRandomHandler(); @@ -48,7 +48,7 @@ public PropagationComponent getPropagationComponent() { } @Override - public final Clock getClock() { + public Clock getClock() { return clock; } diff --git a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryTracerImpl.java b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryTracerImpl.java index c3ba98b67fd..4bffa46fc26 100644 --- a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryTracerImpl.java +++ b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/OpenTelemetryTracerImpl.java @@ -30,10 +30,10 @@ import io.opencensus.trace.config.TraceConfig; import javax.annotation.Nullable; -class OpenTelemetryTracerImpl extends Tracer { +final class OpenTelemetryTracerImpl extends Tracer { private final OpenTelemetrySpanBuilderImpl.Options spanBuilderOptions; - public OpenTelemetryTracerImpl(RandomHandler randomHandler, TraceConfig traceConfig) { + OpenTelemetryTracerImpl(RandomHandler randomHandler, TraceConfig traceConfig) { spanBuilderOptions = new OpenTelemetrySpanBuilderImpl.Options(randomHandler, traceConfig); } diff --git a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/ThreadLocalRandomHandler.java b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/ThreadLocalRandomHandler.java index 76b1567d2bf..942a06c8856 100644 --- a/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/ThreadLocalRandomHandler.java +++ b/opencensus-shim/src/main/java/io/opentelemetry/opencensusshim/ThreadLocalRandomHandler.java @@ -15,10 +15,10 @@ * implementation in opencensus-impl, however we do not want to depend on opencensus-impl here. */ @ThreadSafe -public final class ThreadLocalRandomHandler extends RandomHandler { +final class ThreadLocalRandomHandler extends RandomHandler { /** Constructs a new {@code ThreadLocalRandomHandler}. */ - public ThreadLocalRandomHandler() {} + ThreadLocalRandomHandler() {} @Override public Random current() { diff --git a/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/internal/metrics/MetricAdapterTest.java b/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/MetricAdapterTest.java similarity index 99% rename from opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/internal/metrics/MetricAdapterTest.java rename to opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/MetricAdapterTest.java index 9d1a582aa44..7022477dce6 100644 --- a/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/internal/metrics/MetricAdapterTest.java +++ b/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/MetricAdapterTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.opencensusshim.internal.metrics; +package io.opentelemetry.opencensusshim; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.attributeEntry; diff --git a/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/metrics/OpenCensusMetricProducerTest.java b/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/OpenCensusMetricProducerTest.java similarity index 97% rename from opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/metrics/OpenCensusMetricProducerTest.java rename to opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/OpenCensusMetricProducerTest.java index c2465522296..67996be5e06 100644 --- a/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/metrics/OpenCensusMetricProducerTest.java +++ b/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/OpenCensusMetricProducerTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.opencensusshim.metrics; +package io.opentelemetry.opencensusshim; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; @@ -21,7 +21,6 @@ import io.opencensus.trace.TraceOptions; import io.opencensus.trace.Tracestate; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.opencensusshim.OpenCensusMetricProducer; import io.opentelemetry.sdk.metrics.export.MetricProducer; import io.opentelemetry.sdk.resources.Resource; import java.time.Duration; diff --git a/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/metrics/OpenCensusMetricsTest.java b/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/OpenCensusMetricsTest.java similarity index 94% rename from opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/metrics/OpenCensusMetricsTest.java rename to opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/OpenCensusMetricsTest.java index 368e08ccb2f..4539045c435 100644 --- a/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/metrics/OpenCensusMetricsTest.java +++ b/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/OpenCensusMetricsTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.opencensusshim.metrics; +package io.opentelemetry.opencensusshim; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; @@ -12,7 +12,6 @@ import io.opencensus.stats.Stats; import io.opencensus.stats.StatsRecorder; import io.opencensus.stats.View; -import io.opentelemetry.opencensusshim.OpenCensusMetricProducer; import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader; import java.time.Duration; diff --git a/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/OpenTelemetryMetricExporterTest.java b/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/OpenTelemetryMetricExporterTest.java deleted file mode 100644 index c0bce937a18..00000000000 --- a/opencensus-shim/src/test/java/io/opentelemetry/opencensusshim/OpenTelemetryMetricExporterTest.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.opencensusshim; - -import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; -import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.attributeEntry; -import static java.util.stream.Collectors.groupingBy; - -import com.google.common.collect.ImmutableList; -import io.opencensus.common.Duration; -import io.opencensus.stats.Aggregation; -import io.opencensus.stats.Measure; -import io.opencensus.stats.Stats; -import io.opencensus.stats.StatsRecorder; -import io.opencensus.stats.View; -import io.opencensus.stats.ViewManager; -import io.opencensus.tags.TagContext; -import io.opencensus.tags.TagKey; -import io.opencensus.tags.TagMetadata; -import io.opencensus.tags.TagValue; -import io.opencensus.tags.Tagger; -import io.opencensus.tags.Tags; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.sdk.metrics.data.MetricData; -import io.opentelemetry.sdk.testing.exporter.InMemoryMetricExporter; -import java.util.HashSet; -import java.util.Set; -import java.util.stream.Collectors; -import org.awaitility.Awaitility; -import org.junit.jupiter.api.Test; - -class OpenTelemetryMetricExporterTest { - - @Test - @SuppressWarnings({"deprecation"}) // Summary is deprecated in census - void testSupportedMetricsExportedCorrectly() { - Tagger tagger = Tags.getTagger(); - Measure.MeasureLong latency = - Measure.MeasureLong.create("task_latency", "The task latency in milliseconds", "ms"); - Measure.MeasureDouble latency2 = - Measure.MeasureDouble.create("task_latency_2", "The task latency in milliseconds 2", "ms"); - StatsRecorder statsRecorder = Stats.getStatsRecorder(); - TagKey tagKey = TagKey.create("tagKey"); - TagValue tagValue = TagValue.create("tagValue"); - View longSumView = - View.create( - View.Name.create("long_sum"), - "long sum", - latency, - Aggregation.Sum.create(), - ImmutableList.of(tagKey)); - View longGaugeView = - View.create( - View.Name.create("long_gauge"), - "long gauge", - latency, - Aggregation.LastValue.create(), - ImmutableList.of(tagKey)); - View doubleSumView = - View.create( - View.Name.create("double_sum"), - "double sum", - latency2, - Aggregation.Sum.create(), - ImmutableList.of()); - View doubleGaugeView = - View.create( - View.Name.create("double_gauge"), - "double gauge", - latency2, - Aggregation.LastValue.create(), - ImmutableList.of()); - ViewManager viewManager = Stats.getViewManager(); - viewManager.registerView(longSumView); - viewManager.registerView(longGaugeView); - viewManager.registerView(doubleSumView); - viewManager.registerView(doubleGaugeView); - // Create OpenCensus -> OpenTelemetry Exporter bridge - InMemoryMetricExporter exporter = InMemoryMetricExporter.create(); - OpenTelemetryMetricsExporter otelExporter = - OpenTelemetryMetricsExporter.createAndRegister(exporter, Duration.create(1, 0)); - try { - TagContext tagContext = - tagger - .emptyBuilder() - .put(tagKey, tagValue, TagMetadata.create(TagMetadata.TagTtl.UNLIMITED_PROPAGATION)) - .build(); - try (io.opencensus.common.Scope ss = tagger.withTagContext(tagContext)) { - statsRecorder.newMeasureMap().put(latency, 50).record(); - statsRecorder.newMeasureMap().put(latency2, 60).record(); - } - Set allowedMetrics = new HashSet<>(); - allowedMetrics.add("double_gauge"); - allowedMetrics.add("double_sum"); - allowedMetrics.add("long_gauge"); - allowedMetrics.add("long_sum"); - // Slow down for OpenCensus to catch up. - Awaitility.await() - .atMost(java.time.Duration.ofSeconds(10)) - .untilAsserted( - () -> - assertThat( - // Filter for metrics with name in allowedMetrics, and dedupe to only one - // metric per unique metric name - exporter.getFinishedMetricItems().stream() - .filter(metric -> allowedMetrics.contains(metric.getName())) - .collect(groupingBy(MetricData::getName)) - .values() - .stream() - .map(metricData -> metricData.get(0)) - .collect(Collectors.toList())) - .satisfiesExactlyInAnyOrder( - metric -> - assertThat(metric) - .hasName("double_gauge") - .hasDescription("double gauge") - .hasUnit("ms") - .hasDoubleGaugeSatisfying( - gauge -> - gauge.hasPointsSatisfying( - point -> - point - .hasValue(60) - .hasAttributes(Attributes.empty()))), - metric -> - assertThat(metric) - .hasName("double_sum") - .hasDescription("double sum") - .hasUnit("ms") - .hasDoubleSumSatisfying( - sum -> - sum.hasPointsSatisfying( - point -> - point - .hasValue(60) - .hasAttributes(Attributes.empty()))), - metric -> - assertThat(metric) - .hasName("long_gauge") - .hasDescription("long gauge") - .hasUnit("ms") - .hasLongGaugeSatisfying( - gauge -> - gauge.hasPointsSatisfying( - point -> - point - .hasValue(50) - .hasAttributes( - attributeEntry( - tagKey.getName(), - tagValue.asString())))), - metric -> - assertThat(metric) - .hasName("long_sum") - .hasDescription("long sum") - .hasUnit("ms") - .hasLongSumSatisfying( - sum -> - sum.hasPointsSatisfying( - point -> - point - .hasValue(50) - .hasAttributes( - attributeEntry( - tagKey.getName(), - tagValue.asString())))))); - } finally { - otelExporter.stop(); - } - } -}