Update to OTel 1.7 (#109)

This commit is contained in:
Anuraag Agrawal 2021-10-11 19:52:34 +09:00 committed by GitHub
parent 858dbae93b
commit 8fc136b587
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 55 additions and 56 deletions

View File

@ -18,8 +18,8 @@ val DEPENDENCY_BOMS = listOf(
"org.junit:junit-bom:5.7.2",
"com.linecorp.armeria:armeria-bom:1.9.1",
"io.grpc:grpc-bom:1.39.0",
"io.opentelemetry:opentelemetry-bom:1.6.0",
"io.opentelemetry:opentelemetry-bom-alpha:1.6.0-alpha",
"io.opentelemetry:opentelemetry-bom:1.7.0",
"io.opentelemetry:opentelemetry-bom-alpha:1.7.0-alpha",
"org.testcontainers:testcontainers-bom:1.16.0"
)
@ -52,7 +52,7 @@ val DEPENDENCY_SETS = listOf(
)
val DEPENDENCIES = listOf(
"org.assertj:assertj-core:3.20.2",
"org.assertj:assertj-core:3.21.0",
"org.awaitility:awaitility:4.1.0",
"org.checkerframework:checker-qual:3.15.0",
"org.junit-pioneer:junit-pioneer:1.4.2",

View File

@ -22,12 +22,9 @@ import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.common.InstrumentDescriptor;
import io.opentelemetry.sdk.metrics.common.InstrumentType;
import io.opentelemetry.sdk.metrics.common.InstrumentValueType;
import io.opentelemetry.sdk.metrics.data.MetricData;
import io.opentelemetry.sdk.metrics.export.MetricExporter;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricExporter;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import javax.annotation.Nullable;
@ -37,9 +34,6 @@ public class GroovyMetricEnvironment {
private final SdkMeterProvider meterProvider;
private final Meter meter;
// will only be `inmemory` since otel-java autoconfigure sdk extension manages other exporters
private MetricExporter exporter;
// Observer updaters can only be specified in the builder as of v0.13.0, so to work with our model
// of running groovy scripts on an interval a reference to the desired updater should be held and
// updated w/ each instrument creation call. Otherwise no observed changes in MBean availability
@ -84,7 +78,6 @@ public class GroovyMetricEnvironment {
break;
default: // inmemory fallback
meterProvider = SdkMeterProvider.builder().buildAndRegisterGlobal();
exporter = InMemoryMetricExporter.create();
}
meter = meterProvider.get(instrumentationName, instrumentationVersion, null);
@ -109,11 +102,8 @@ public class GroovyMetricEnvironment {
}
/** Will collect all metrics from OpenTelemetrySdk and export via configured exporter. */
public void exportMetrics() {
if (exporter != null) {
Collection<MetricData> md = meterProvider.collectAllMetrics();
exporter.export(md);
}
public void flush() {
meterProvider.forceFlush().join(10, TimeUnit.SECONDS);
}
protected static Attributes mapToAttributes(@Nullable final Map<String, String> labelMap) {

View File

@ -139,7 +139,7 @@ public class GroovyRunner {
}
public void flush() {
groovyMetricEnvironment.exportMetrics();
groovyMetricEnvironment.flush();
}
public void shutdown() {

View File

@ -44,7 +44,7 @@ class GroovyRunnerTest {
stub,
new GroovyMetricEnvironment(config) {
@Override
public void exportMetrics() {
public void flush() {
exportCalled.set(true);
}
});

View File

@ -14,6 +14,7 @@ import groovy.util.Eval;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.data.DoublePointData;
import io.opentelemetry.sdk.metrics.data.LongPointData;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@ -50,6 +51,7 @@ class InstrumenterHelperTest {
// Will eventually be replaced with Jupiter extension in sdk-testing
private SdkMeterProvider meterProvider;
private InMemoryMetricReader metricReader;
private OtelHelper otel;
@ -76,7 +78,8 @@ class InstrumenterHelperTest {
@BeforeEach
void setupOtel() {
meterProvider = SdkMeterProvider.builder().build();
metricReader = new InMemoryMetricReader();
meterProvider = SdkMeterProvider.builder().registerMetricReader(metricReader).build();
otel = new OtelHelper(jmxClient, new GroovyMetricEnvironment(meterProvider, "otel.test"));
}
@ -109,7 +112,7 @@ class InstrumenterHelperTest {
updateWithHelper(mBeanHelper, instrumentMethod, instrumentName, description, "Double");
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactly(
metric ->
assertThat(metric)
@ -138,7 +141,7 @@ class InstrumenterHelperTest {
updateWithHelper(mBeanHelper, instrumentMethod, instrumentName, description, "Long");
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactly(
metric ->
assertThat(metric)
@ -161,7 +164,7 @@ class InstrumenterHelperTest {
updateWithHelper(mBeanHelper, instrumentMethod, instrumentName, description, "Long");
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactly(
metric ->
assertThat(metric)
@ -192,7 +195,7 @@ class InstrumenterHelperTest {
updateWithHelper(mBeanHelper, instrumentMethod, instrumentName, description, "Double");
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactly(
metric ->
assertThat(metric)
@ -215,7 +218,7 @@ class InstrumenterHelperTest {
updateWithHelper(mBeanHelper, instrumentMethod, instrumentName, description, "Long");
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactly(
metric ->
assertThat(metric)
@ -264,7 +267,7 @@ class InstrumenterHelperTest {
updateWithHelper(mBeanHelper, instrumentMethod, instrumentName, description, "Double");
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactly(
metric ->
assertThat(metric)
@ -293,7 +296,7 @@ class InstrumenterHelperTest {
updateWithHelper(mBeanHelper, instrumentMethod, instrumentName, description, "Long");
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactly(
metric ->
assertThat(metric)
@ -316,7 +319,7 @@ class InstrumenterHelperTest {
updateWithHelper(mBeanHelper, instrumentMethod, instrumentName, description, "Long");
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactly(
metric ->
assertThat(metric)
@ -371,7 +374,7 @@ class InstrumenterHelperTest {
updateWithHelper(mBeanHelper, instrumentMethod, instrumentName, description, "Double");
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactly(
metric ->
assertThat(metric)
@ -394,7 +397,7 @@ class InstrumenterHelperTest {
updateWithHelper(mBeanHelper, instrumentMethod, instrumentName, description, "Long");
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactly(
metric ->
assertThat(metric)
@ -488,7 +491,7 @@ class InstrumenterHelperTest {
updateWithHelper(mBeanHelper, instrumentMethod, instrumentName, description, "Missing");
assertThat(meterProvider.collectAllMetrics()).isEmpty();
assertThat(metricReader.collectAllMetrics()).isEmpty();
}
@ParameterizedTest

View File

@ -11,6 +11,7 @@ import static io.opentelemetry.sdk.testing.assertj.metrics.MetricAssertions.asse
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.data.MetricData;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
import java.util.Collection;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@ -19,12 +20,14 @@ class OtelHelperAsynchronousMetricTest {
// Will eventually be replaced with Jupiter extension in sdk-testing
private SdkMeterProvider meterProvider;
private InMemoryMetricReader metricReader;
private OtelHelper otel;
@BeforeEach
void setUp() {
meterProvider = SdkMeterProvider.builder().build();
metricReader = new InMemoryMetricReader();
meterProvider = SdkMeterProvider.builder().registerMetricReader(metricReader).build();
otel = new OtelHelper(null, new GroovyMetricEnvironment(meterProvider, "otel.test"));
}
@ -55,7 +58,7 @@ class OtelHelperAsynchronousMetricTest {
result.observe(
456.789, Attributes.builder().put("yetAnotherKey", "yetAnotherValue").build()));
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactlyInAnyOrder(
metric ->
assertThat(metric)
@ -121,7 +124,7 @@ class OtelHelperAsynchronousMetricTest {
"dc",
"double",
result -> result.observe(20.2, Attributes.builder().put("key2", "value2").build()));
Collection<MetricData> firstMetrics = meterProvider.collectAllMetrics();
Collection<MetricData> firstMetrics = metricReader.collectAllMetrics();
otel.doubleCounterCallback(
"dc",
@ -131,7 +134,7 @@ class OtelHelperAsynchronousMetricTest {
"dc",
"double",
result -> result.observe(40.4, Attributes.builder().put("key4", "value4").build()));
Collection<MetricData> secondMetrics = meterProvider.collectAllMetrics();
Collection<MetricData> secondMetrics = metricReader.collectAllMetrics();
assertThat(firstMetrics)
.satisfiesExactly(
@ -192,7 +195,7 @@ class OtelHelperAsynchronousMetricTest {
result.observe(
456, Attributes.builder().put("yetAnotherKey", "yetAnotherValue").build()));
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactlyInAnyOrder(
metric ->
assertThat(metric)
@ -258,7 +261,7 @@ class OtelHelperAsynchronousMetricTest {
"dc",
"long",
result -> result.observe(20, Attributes.builder().put("key2", "value2").build()));
Collection<MetricData> firstMetrics = meterProvider.collectAllMetrics();
Collection<MetricData> firstMetrics = metricReader.collectAllMetrics();
otel.longCounterCallback(
"dc",
@ -268,7 +271,7 @@ class OtelHelperAsynchronousMetricTest {
"dc",
"long",
result -> result.observe(40, Attributes.builder().put("key4", "value4").build()));
Collection<MetricData> secondMetrics = meterProvider.collectAllMetrics();
Collection<MetricData> secondMetrics = metricReader.collectAllMetrics();
assertThat(firstMetrics)
.satisfiesExactly(
@ -330,7 +333,7 @@ class OtelHelperAsynchronousMetricTest {
result.observe(
456.789, Attributes.builder().put("yetAnotherKey", "yetAnotherValue").build()));
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactlyInAnyOrder(
metric ->
assertThat(metric)
@ -396,7 +399,7 @@ class OtelHelperAsynchronousMetricTest {
"dc",
"double",
result -> result.observe(-20.2, Attributes.builder().put("key2", "value2").build()));
Collection<MetricData> firstMetrics = meterProvider.collectAllMetrics();
Collection<MetricData> firstMetrics = metricReader.collectAllMetrics();
otel.doubleUpDownCounterCallback(
"dc",
@ -406,7 +409,7 @@ class OtelHelperAsynchronousMetricTest {
"dc",
"double",
result -> result.observe(40.4, Attributes.builder().put("key4", "value4").build()));
Collection<MetricData> secondMetrics = meterProvider.collectAllMetrics();
Collection<MetricData> secondMetrics = metricReader.collectAllMetrics();
assertThat(firstMetrics)
.satisfiesExactly(
@ -467,7 +470,7 @@ class OtelHelperAsynchronousMetricTest {
result.observe(
456, Attributes.builder().put("yetAnotherKey", "yetAnotherValue").build()));
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactlyInAnyOrder(
metric ->
assertThat(metric)
@ -533,7 +536,7 @@ class OtelHelperAsynchronousMetricTest {
"dc",
"long",
result -> result.observe(-20, Attributes.builder().put("key2", "value2").build()));
Collection<MetricData> firstMetrics = meterProvider.collectAllMetrics();
Collection<MetricData> firstMetrics = metricReader.collectAllMetrics();
otel.longUpDownCounterCallback(
"dc",
@ -543,7 +546,7 @@ class OtelHelperAsynchronousMetricTest {
"dc",
"long",
result -> result.observe(40, Attributes.builder().put("key4", "value4").build()));
Collection<MetricData> secondMetrics = meterProvider.collectAllMetrics();
Collection<MetricData> secondMetrics = metricReader.collectAllMetrics();
assertThat(firstMetrics)
.satisfiesExactly(
@ -605,7 +608,7 @@ class OtelHelperAsynchronousMetricTest {
result.observe(
456.789, Attributes.builder().put("yetAnotherKey", "yetAnotherValue").build()));
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactlyInAnyOrder(
metric ->
assertThat(metric)
@ -671,7 +674,7 @@ class OtelHelperAsynchronousMetricTest {
"dc",
"double",
result -> result.observe(20.2, Attributes.builder().put("key2", "value2").build()));
Collection<MetricData> firstMetrics = meterProvider.collectAllMetrics();
Collection<MetricData> firstMetrics = metricReader.collectAllMetrics();
otel.doubleValueCallback(
"dc",
@ -684,7 +687,7 @@ class OtelHelperAsynchronousMetricTest {
result.observe(40.4, Attributes.builder().put("key4", "value4").build());
result.observe(50.5, Attributes.builder().put("key2", "value2").build());
});
Collection<MetricData> secondMetrics = meterProvider.collectAllMetrics();
Collection<MetricData> secondMetrics = metricReader.collectAllMetrics();
assertThat(firstMetrics)
.satisfiesExactly(
@ -750,7 +753,7 @@ class OtelHelperAsynchronousMetricTest {
result.observe(
456, Attributes.builder().put("yetAnotherKey", "yetAnotherValue").build()));
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactlyInAnyOrder(
metric ->
assertThat(metric)
@ -816,7 +819,7 @@ class OtelHelperAsynchronousMetricTest {
"dc",
"long",
result -> result.observe(20, Attributes.builder().put("key2", "value2").build()));
Collection<MetricData> firstMetrics = meterProvider.collectAllMetrics();
Collection<MetricData> firstMetrics = metricReader.collectAllMetrics();
otel.longValueCallback(
"dc",
@ -826,7 +829,7 @@ class OtelHelperAsynchronousMetricTest {
"dc",
"long",
result -> result.observe(40, Attributes.builder().put("key4", "value4").build()));
Collection<MetricData> secondMetrics = meterProvider.collectAllMetrics();
Collection<MetricData> secondMetrics = metricReader.collectAllMetrics();
assertThat(firstMetrics)
.satisfiesExactly(

View File

@ -16,6 +16,7 @@ import io.opentelemetry.api.metrics.LongCounter;
import io.opentelemetry.api.metrics.LongHistogram;
import io.opentelemetry.api.metrics.LongUpDownCounter;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@ -23,12 +24,14 @@ class OtelHelperSynchronousMetricTest {
// Will eventually be replaced with Jupiter extension in sdk-testing
private SdkMeterProvider meterProvider;
private InMemoryMetricReader metricReader;
private OtelHelper otel;
@BeforeEach
void setUp() {
meterProvider = SdkMeterProvider.builder().build();
metricReader = new InMemoryMetricReader();
meterProvider = SdkMeterProvider.builder().registerMetricReader(metricReader).build();
otel = new OtelHelper(null, new GroovyMetricEnvironment(meterProvider, "otel.test"));
}
@ -46,7 +49,7 @@ class OtelHelperSynchronousMetricTest {
dc = otel.doubleCounter("yet-another-double-counter");
dc.add(456.789, Attributes.builder().put("yetAnotherKey", "yetAnotherValue").build());
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactlyInAnyOrder(
metric ->
assertThat(metric)
@ -116,7 +119,7 @@ class OtelHelperSynchronousMetricTest {
lc = otel.longCounter("yet-another-long-counter");
lc.add(456, Attributes.builder().put("yetAnotherKey", "yetAnotherValue").build());
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactlyInAnyOrder(
metric ->
assertThat(metric)
@ -189,7 +192,7 @@ class OtelHelperSynchronousMetricTest {
dudc = otel.doubleUpDownCounter("yet-another-double-up-down-counter");
dudc.add(456.789, Attributes.builder().put("yetAnotherKey", "yetAnotherValue").build());
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactlyInAnyOrder(
metric ->
assertThat(metric)
@ -260,7 +263,7 @@ class OtelHelperSynchronousMetricTest {
ludc = otel.longUpDownCounter("yet-another-long-up-down-counter");
ludc.add(456, Attributes.builder().put("yetAnotherKey", "yetAnotherValue").build());
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactlyInAnyOrder(
metric ->
assertThat(metric)
@ -330,7 +333,7 @@ class OtelHelperSynchronousMetricTest {
dh = otel.doubleHistogram("yet-another-double-histogram");
dh.record(456.789, Attributes.builder().put("yetAnotherKey", "yetAnotherValue").build());
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactlyInAnyOrder(
metric ->
assertThat(metric)
@ -404,7 +407,7 @@ class OtelHelperSynchronousMetricTest {
lh = otel.longHistogram("yet-another-long-histogram");
lh.record(456, Attributes.builder().put("yetAnotherKey", "yetAnotherValue").build());
assertThat(meterProvider.collectAllMetrics())
assertThat(metricReader.collectAllMetrics())
.satisfiesExactlyInAnyOrder(
metric ->
assertThat(metric)