diff --git a/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractCounterBuilder.java b/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractCounterBuilder.java index f2d33fae8e1..cda2d0a2350 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractCounterBuilder.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractCounterBuilder.java @@ -17,13 +17,17 @@ package io.opentelemetry.sdk.metrics; import io.opentelemetry.metrics.Counter; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; abstract class AbstractCounterBuilder, V> extends AbstractInstrumentBuilder implements Counter.Builder { private boolean monotonic = true; - AbstractCounterBuilder(String name, MeterSharedState sharedState) { - super(name, sharedState); + AbstractCounterBuilder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override diff --git a/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractInstrument.java b/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractInstrument.java index e69c88f43d7..c1e8a4ff261 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractInstrument.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractInstrument.java @@ -17,6 +17,9 @@ package io.opentelemetry.sdk.metrics; import io.opentelemetry.metrics.Instrument; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; +import io.opentelemetry.sdk.metrics.common.InstrumentType; +import io.opentelemetry.sdk.metrics.common.InstrumentValueType; import java.util.List; import java.util.Map; @@ -28,6 +31,7 @@ abstract class AbstractInstrument implements Instrument { private final Map constantLabels; private final List labelKeys; private final MeterSharedState meterSharedState; + private final InstrumentationLibraryInfo instrumentationLibraryInfo; // All arguments cannot be null because they are checked in the abstract builder classes. AbstractInstrument( @@ -36,13 +40,17 @@ abstract class AbstractInstrument implements Instrument { String unit, Map constantLabels, List labelKeys, - MeterSharedState meterSharedState) { + InstrumentType instrumentType, + InstrumentValueType instrumentValueType, + MeterSharedState meterSharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { this.name = name; this.description = description; this.unit = unit; this.constantLabels = constantLabels; this.labelKeys = labelKeys; this.meterSharedState = meterSharedState; + this.instrumentationLibraryInfo = instrumentationLibraryInfo; } final String getName() { @@ -69,6 +77,10 @@ final MeterSharedState getMeterSharedState() { return meterSharedState; } + final InstrumentationLibraryInfo getInstrumentationLibraryInfo() { + return instrumentationLibraryInfo; + } + @Override public boolean equals(Object o) { if (this == o) { @@ -96,4 +108,16 @@ public int hashCode() { result = 31 * result + labelKeys.hashCode(); return result; } + + static InstrumentType getCounterInstrumentType(boolean monotonic) { + return monotonic ? InstrumentType.COUNTER_MONOTONIC : InstrumentType.COUNTER_NON_MONOTONIC; + } + + static InstrumentType getMeasureInstrumentType(boolean absolute) { + return absolute ? InstrumentType.MEASURE_ABSOLUTE : InstrumentType.MEASURE_NON_ABSOLUTE; + } + + static InstrumentType getObserverInstrumentType(boolean monotonic) { + return monotonic ? InstrumentType.OBSERVER_MONOTONIC : InstrumentType.OBSERVER_NON_MONOTONIC; + } } diff --git a/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractInstrumentBuilder.java b/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractInstrumentBuilder.java index 103ad8ad789..514cb2fe2ee 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractInstrumentBuilder.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractInstrumentBuilder.java @@ -19,6 +19,7 @@ import io.opentelemetry.internal.StringUtils; import io.opentelemetry.internal.Utils; import io.opentelemetry.metrics.Instrument; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -35,18 +36,23 @@ abstract class AbstractInstrumentBuilder, V> private final String name; private final MeterSharedState meterSharedState; + private final InstrumentationLibraryInfo instrumentationLibraryInfo; private String description = ""; private String unit = "1"; private List labelKeys = Collections.emptyList(); private Map constantLabels = Collections.emptyMap(); - AbstractInstrumentBuilder(String name, MeterSharedState meterSharedState) { + AbstractInstrumentBuilder( + String name, + MeterSharedState meterSharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { Utils.checkNotNull(name, "name"); Utils.checkArgument( StringUtils.isPrintableString(name) && name.length() <= NAME_MAX_LENGTH, ERROR_MESSAGE_INVALID_NAME); this.name = name; this.meterSharedState = meterSharedState; + this.instrumentationLibraryInfo = instrumentationLibraryInfo; } @Override @@ -84,6 +90,10 @@ final MeterSharedState getMeterSharedState() { return meterSharedState; } + final InstrumentationLibraryInfo getInstrumentationLibraryInfo() { + return instrumentationLibraryInfo; + } + final String getDescription() { return description; } diff --git a/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractMeasureBuilder.java b/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractMeasureBuilder.java index 79beb9d661b..203127bf671 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractMeasureBuilder.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractMeasureBuilder.java @@ -17,13 +17,17 @@ package io.opentelemetry.sdk.metrics; import io.opentelemetry.metrics.Measure; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; abstract class AbstractMeasureBuilder, V> extends AbstractInstrumentBuilder implements Measure.Builder { private boolean absolute = true; - AbstractMeasureBuilder(String name, MeterSharedState sharedState) { - super(name, sharedState); + AbstractMeasureBuilder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override diff --git a/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractObserverBuilder.java b/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractObserverBuilder.java index 597bdf0135c..0b22313f391 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractObserverBuilder.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/metrics/AbstractObserverBuilder.java @@ -17,13 +17,17 @@ package io.opentelemetry.sdk.metrics; import io.opentelemetry.metrics.Observer; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; abstract class AbstractObserverBuilder, V> extends AbstractInstrumentBuilder implements Observer.Builder { private boolean monotonic = false; - AbstractObserverBuilder(String name, MeterSharedState sharedState) { - super(name, sharedState); + AbstractObserverBuilder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override diff --git a/sdk/src/main/java/io/opentelemetry/sdk/metrics/DoubleCounterSdk.java b/sdk/src/main/java/io/opentelemetry/sdk/metrics/DoubleCounterSdk.java index ef20144273d..6d8d8276a80 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/metrics/DoubleCounterSdk.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/metrics/DoubleCounterSdk.java @@ -18,6 +18,8 @@ import io.opentelemetry.metrics.DoubleCounter; import io.opentelemetry.metrics.LabelSet; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; +import io.opentelemetry.sdk.metrics.common.InstrumentValueType; import java.util.List; import java.util.Map; @@ -31,9 +33,19 @@ private DoubleCounterSdk( String unit, Map constantLabels, List labelKeys, + boolean monotonic, MeterSharedState sharedState, - boolean monotonic) { - super(name, description, unit, constantLabels, labelKeys, sharedState); + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super( + name, + description, + unit, + constantLabels, + labelKeys, + getCounterInstrumentType(monotonic), + InstrumentValueType.DOUBLE, + sharedState, + instrumentationLibraryInfo); this.monotonic = monotonic; } @@ -91,16 +103,22 @@ public void add(double delta) { } } - static DoubleCounter.Builder builder(String name, MeterSharedState sharedState) { - return new Builder(name, sharedState); + static DoubleCounter.Builder builder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + return new Builder(name, sharedState, instrumentationLibraryInfo); } private static final class Builder extends AbstractCounterBuilder implements DoubleCounter.Builder { - private Builder(String name, MeterSharedState sharedState) { - super(name, sharedState); + private Builder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override @@ -116,8 +134,9 @@ public DoubleCounter build() { getUnit(), getConstantLabels(), getLabelKeys(), + isMonotonic(), getMeterSharedState(), - isMonotonic()); + getInstrumentationLibraryInfo()); } } } diff --git a/sdk/src/main/java/io/opentelemetry/sdk/metrics/DoubleMeasureSdk.java b/sdk/src/main/java/io/opentelemetry/sdk/metrics/DoubleMeasureSdk.java index 98c4f398978..1a801797d70 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/metrics/DoubleMeasureSdk.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/metrics/DoubleMeasureSdk.java @@ -18,6 +18,8 @@ import io.opentelemetry.metrics.DoubleMeasure; import io.opentelemetry.metrics.LabelSet; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; +import io.opentelemetry.sdk.metrics.common.InstrumentValueType; import java.util.List; import java.util.Map; @@ -32,8 +34,18 @@ private DoubleMeasureSdk( Map constantLabels, List labelKeys, MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo, boolean absolute) { - super(name, description, unit, constantLabels, labelKeys, sharedState); + super( + name, + description, + unit, + constantLabels, + labelKeys, + getMeasureInstrumentType(absolute), + InstrumentValueType.DOUBLE, + sharedState, + instrumentationLibraryInfo); this.absolute = absolute; } @@ -91,16 +103,22 @@ public void record(double value) { } } - static DoubleMeasure.Builder builder(String name, MeterSharedState sharedState) { - return new Builder(name, sharedState); + static DoubleMeasure.Builder builder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + return new Builder(name, sharedState, instrumentationLibraryInfo); } private static final class Builder extends AbstractMeasureBuilder implements DoubleMeasure.Builder { - private Builder(String name, MeterSharedState sharedState) { - super(name, sharedState); + private Builder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override @@ -117,6 +135,7 @@ public DoubleMeasure build() { getConstantLabels(), getLabelKeys(), getMeterSharedState(), + getInstrumentationLibraryInfo(), isAbsolute()); } } diff --git a/sdk/src/main/java/io/opentelemetry/sdk/metrics/DoubleObserverSdk.java b/sdk/src/main/java/io/opentelemetry/sdk/metrics/DoubleObserverSdk.java index 7138184dfba..8f64c4d94ca 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/metrics/DoubleObserverSdk.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/metrics/DoubleObserverSdk.java @@ -17,6 +17,8 @@ package io.opentelemetry.sdk.metrics; import io.opentelemetry.metrics.DoubleObserver; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; +import io.opentelemetry.sdk.metrics.common.InstrumentValueType; import java.util.List; import java.util.Map; @@ -30,8 +32,18 @@ final class DoubleObserverSdk extends AbstractInstrument implements DoubleObserv Map constantLabels, List labelKeys, MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo, boolean monotonic) { - super(name, description, unit, constantLabels, labelKeys, sharedState); + super( + name, + description, + unit, + constantLabels, + labelKeys, + getObserverInstrumentType(monotonic), + InstrumentValueType.LONG, + sharedState, + instrumentationLibraryInfo); this.monotonic = monotonic; } @@ -64,16 +76,22 @@ public int hashCode() { return result; } - static DoubleObserver.Builder builder(String name, MeterSharedState sharedState) { - return new Builder(name, sharedState); + static DoubleObserver.Builder builder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + return new Builder(name, sharedState, instrumentationLibraryInfo); } private static final class Builder extends AbstractObserverBuilder implements DoubleObserver.Builder { - private Builder(String name, MeterSharedState sharedState) { - super(name, sharedState); + private Builder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override @@ -90,6 +108,7 @@ public DoubleObserver build() { getConstantLabels(), getLabelKeys(), getMeterSharedState(), + getInstrumentationLibraryInfo(), isMonotonic()); } } diff --git a/sdk/src/main/java/io/opentelemetry/sdk/metrics/LongCounterSdk.java b/sdk/src/main/java/io/opentelemetry/sdk/metrics/LongCounterSdk.java index 43932e9f347..6668e5da354 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/metrics/LongCounterSdk.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/metrics/LongCounterSdk.java @@ -18,6 +18,8 @@ import io.opentelemetry.metrics.LabelSet; import io.opentelemetry.metrics.LongCounter; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; +import io.opentelemetry.sdk.metrics.common.InstrumentValueType; import java.util.List; import java.util.Map; @@ -32,8 +34,18 @@ private LongCounterSdk( Map constantLabels, List labelKeys, MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo, boolean monotonic) { - super(name, description, unit, constantLabels, labelKeys, sharedState); + super( + name, + description, + unit, + constantLabels, + labelKeys, + getCounterInstrumentType(monotonic), + InstrumentValueType.LONG, + sharedState, + instrumentationLibraryInfo); this.monotonic = monotonic; } @@ -91,16 +103,22 @@ public void add(long delta) { } } - static LongCounter.Builder builder(String name, MeterSharedState sharedState) { - return new Builder(name, sharedState); + static LongCounter.Builder builder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + return new Builder(name, sharedState, instrumentationLibraryInfo); } private static final class Builder extends AbstractCounterBuilder implements LongCounter.Builder { - private Builder(String name, MeterSharedState sharedState) { - super(name, sharedState); + private Builder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override @@ -117,6 +135,7 @@ public LongCounter build() { getConstantLabels(), getLabelKeys(), getMeterSharedState(), + getInstrumentationLibraryInfo(), isMonotonic()); } } diff --git a/sdk/src/main/java/io/opentelemetry/sdk/metrics/LongMeasureSdk.java b/sdk/src/main/java/io/opentelemetry/sdk/metrics/LongMeasureSdk.java index b3eec83146b..7a47b104bee 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/metrics/LongMeasureSdk.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/metrics/LongMeasureSdk.java @@ -18,6 +18,8 @@ import io.opentelemetry.metrics.LabelSet; import io.opentelemetry.metrics.LongMeasure; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; +import io.opentelemetry.sdk.metrics.common.InstrumentValueType; import java.util.List; import java.util.Map; @@ -32,8 +34,18 @@ private LongMeasureSdk( Map constantLabels, List labelKeys, MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo, boolean absolute) { - super(name, description, unit, constantLabels, labelKeys, sharedState); + super( + name, + description, + unit, + constantLabels, + labelKeys, + getMeasureInstrumentType(absolute), + InstrumentValueType.LONG, + sharedState, + instrumentationLibraryInfo); this.absolute = absolute; } @@ -91,16 +103,22 @@ public void record(long value) { } } - static LongMeasure.Builder builder(String name, MeterSharedState sharedState) { - return new Builder(name, sharedState); + static LongMeasure.Builder builder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + return new Builder(name, sharedState, instrumentationLibraryInfo); } private static final class Builder extends AbstractMeasureBuilder implements LongMeasure.Builder { - private Builder(String name, MeterSharedState sharedState) { - super(name, sharedState); + private Builder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override @@ -117,6 +135,7 @@ public LongMeasure build() { getConstantLabels(), getLabelKeys(), getMeterSharedState(), + getInstrumentationLibraryInfo(), isAbsolute()); } } diff --git a/sdk/src/main/java/io/opentelemetry/sdk/metrics/LongObserverSdk.java b/sdk/src/main/java/io/opentelemetry/sdk/metrics/LongObserverSdk.java index 8de288fd382..3c273697470 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/metrics/LongObserverSdk.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/metrics/LongObserverSdk.java @@ -17,6 +17,8 @@ package io.opentelemetry.sdk.metrics; import io.opentelemetry.metrics.LongObserver; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; +import io.opentelemetry.sdk.metrics.common.InstrumentValueType; import java.util.List; import java.util.Map; @@ -30,8 +32,18 @@ final class LongObserverSdk extends AbstractInstrument implements LongObserver { Map constantLabels, List labelKeys, MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo, boolean monotonic) { - super(name, description, unit, constantLabels, labelKeys, sharedState); + super( + name, + description, + unit, + constantLabels, + labelKeys, + getObserverInstrumentType(monotonic), + InstrumentValueType.LONG, + sharedState, + instrumentationLibraryInfo); this.monotonic = monotonic; } @@ -64,16 +76,22 @@ public int hashCode() { return result; } - static LongObserver.Builder builder(String name, MeterSharedState sharedState) { - return new Builder(name, sharedState); + static LongObserver.Builder builder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + return new Builder(name, sharedState, instrumentationLibraryInfo); } private static final class Builder extends AbstractObserverBuilder implements LongObserver.Builder { - private Builder(String name, MeterSharedState sharedState) { - super(name, sharedState); + private Builder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override @@ -90,6 +108,7 @@ public LongObserver build() { getConstantLabels(), getLabelKeys(), getMeterSharedState(), + getInstrumentationLibraryInfo(), isMonotonic()); } } diff --git a/sdk/src/main/java/io/opentelemetry/sdk/metrics/MeterSdk.java b/sdk/src/main/java/io/opentelemetry/sdk/metrics/MeterSdk.java index e99fafaf676..89f92a77b8a 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/metrics/MeterSdk.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/metrics/MeterSdk.java @@ -44,32 +44,32 @@ InstrumentationLibraryInfo getInstrumentationLibraryInfo() { @Override public DoubleCounter.Builder doubleCounterBuilder(String name) { - return DoubleCounterSdk.builder(name, sharedState); + return DoubleCounterSdk.builder(name, sharedState, instrumentationLibraryInfo); } @Override public LongCounter.Builder longCounterBuilder(String name) { - return LongCounterSdk.builder(name, sharedState); + return LongCounterSdk.builder(name, sharedState, instrumentationLibraryInfo); } @Override public DoubleMeasure.Builder doubleMeasureBuilder(String name) { - return DoubleMeasureSdk.builder(name, sharedState); + return DoubleMeasureSdk.builder(name, sharedState, instrumentationLibraryInfo); } @Override public LongMeasure.Builder longMeasureBuilder(String name) { - return LongMeasureSdk.builder(name, sharedState); + return LongMeasureSdk.builder(name, sharedState, instrumentationLibraryInfo); } @Override public DoubleObserver.Builder doubleObserverBuilder(String name) { - return DoubleObserverSdk.builder(name, sharedState); + return DoubleObserverSdk.builder(name, sharedState, instrumentationLibraryInfo); } @Override public LongObserver.Builder longObserverBuilder(String name) { - return LongObserverSdk.builder(name, sharedState); + return LongObserverSdk.builder(name, sharedState, instrumentationLibraryInfo); } @Override diff --git a/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractCounterBuilderTest.java b/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractCounterBuilderTest.java index 160d15b036d..3b17c274a1c 100644 --- a/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractCounterBuilderTest.java +++ b/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractCounterBuilderTest.java @@ -21,6 +21,7 @@ import io.opentelemetry.metrics.Counter; import io.opentelemetry.metrics.InstrumentWithBinding.BoundInstrument; import io.opentelemetry.metrics.LabelSet; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; import io.opentelemetry.sdk.internal.TestClock; import io.opentelemetry.sdk.resources.Resource; import org.junit.Rule; @@ -37,23 +38,30 @@ public class AbstractCounterBuilderTest { private static final String NAME = "name"; private static final MeterSharedState METER_SHARED_STATE = MeterSharedState.create(TestClock.create(), Resource.getEmpty()); + private static final InstrumentationLibraryInfo INSTRUMENTATION_LIBRARY_INFO = + InstrumentationLibraryInfo.EMPTY; @Test public void defaultValue() { - TestInstrumentBuilder testMetricBuilder = new TestInstrumentBuilder(NAME, METER_SHARED_STATE); + TestInstrumentBuilder testMetricBuilder = + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO); assertThat(testMetricBuilder.getName()).isEqualTo(NAME); assertThat(testMetricBuilder.getDescription()).isEmpty(); assertThat(testMetricBuilder.getUnit()).isEqualTo("1"); assertThat(testMetricBuilder.getLabelKeys()).isEmpty(); assertThat(testMetricBuilder.getConstantLabels()).isEmpty(); assertThat(testMetricBuilder.isMonotonic()).isTrue(); + assertThat(testMetricBuilder.getMeterSharedState()).isEqualTo(METER_SHARED_STATE); + assertThat(testMetricBuilder.getInstrumentationLibraryInfo()) + .isEqualTo(INSTRUMENTATION_LIBRARY_INFO); assertThat(testMetricBuilder.build()).isInstanceOf(TestInstrument.class); } @Test public void setAndGetValues() { TestInstrumentBuilder testMetricBuilder = - new TestInstrumentBuilder(NAME, METER_SHARED_STATE).setMonotonic(false); + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO) + .setMonotonic(false); assertThat(testMetricBuilder.getName()).isEqualTo(NAME); assertThat(testMetricBuilder.isMonotonic()).isFalse(); assertThat(testMetricBuilder.build()).isInstanceOf(TestInstrument.class); @@ -61,8 +69,11 @@ public void setAndGetValues() { private static final class TestInstrumentBuilder extends AbstractCounterBuilder { - TestInstrumentBuilder(String name, MeterSharedState sharedState) { - super(name, sharedState); + TestInstrumentBuilder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override diff --git a/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractInstrumentBuilderTest.java b/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractInstrumentBuilderTest.java index 5dbf890497a..37a12c6fa72 100644 --- a/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractInstrumentBuilderTest.java +++ b/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractInstrumentBuilderTest.java @@ -19,6 +19,7 @@ import static com.google.common.truth.Truth.assertThat; import io.opentelemetry.metrics.Instrument; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; import io.opentelemetry.sdk.internal.TestClock; import io.opentelemetry.sdk.resources.Resource; import java.util.Arrays; @@ -44,18 +45,20 @@ public class AbstractInstrumentBuilderTest { Collections.singletonMap("key_2", "value_2"); private static final MeterSharedState METER_SHARED_STATE = MeterSharedState.create(TestClock.create(), Resource.getEmpty()); + private static final InstrumentationLibraryInfo INSTRUMENTATION_LIBRARY_INFO = + InstrumentationLibraryInfo.EMPTY; @Test public void preventNull_Name() { thrown.expect(NullPointerException.class); thrown.expectMessage("name"); - new TestInstrumentBuilder(null, METER_SHARED_STATE); + new TestInstrumentBuilder(null, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO); } @Test public void preventNonPrintableName() { thrown.expect(IllegalArgumentException.class); - new TestInstrumentBuilder("\2", METER_SHARED_STATE); + new TestInstrumentBuilder("\2", METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO); } @Test @@ -65,35 +68,37 @@ public void preventTooLongName() { String longName = String.valueOf(chars); thrown.expect(IllegalArgumentException.class); thrown.expectMessage(AbstractInstrumentBuilder.ERROR_MESSAGE_INVALID_NAME); - new TestInstrumentBuilder(longName, METER_SHARED_STATE); + new TestInstrumentBuilder(longName, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO); } @Test public void preventNull_Description() { thrown.expect(NullPointerException.class); thrown.expectMessage("description"); - new TestInstrumentBuilder(NAME, METER_SHARED_STATE).setDescription(null); + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO) + .setDescription(null); } @Test public void preventNull_Unit() { thrown.expect(NullPointerException.class); thrown.expectMessage("unit"); - new TestInstrumentBuilder(NAME, METER_SHARED_STATE).setUnit(null); + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO).setUnit(null); } @Test public void preventNull_LabelKeys() { thrown.expect(NullPointerException.class); thrown.expectMessage("labelKeys"); - new TestInstrumentBuilder(NAME, METER_SHARED_STATE).setLabelKeys(null); + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO) + .setLabelKeys(null); } @Test public void preventNull_LabelKey() { thrown.expect(NullPointerException.class); thrown.expectMessage("labelKey"); - new TestInstrumentBuilder(NAME, METER_SHARED_STATE) + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO) .setLabelKeys(Collections.singletonList(null)); } @@ -101,13 +106,14 @@ public void preventNull_LabelKey() { public void preventNull_ConstantLabels() { thrown.expect(NullPointerException.class); thrown.expectMessage("constantLabels"); - new TestInstrumentBuilder(NAME, METER_SHARED_STATE).setConstantLabels(null); + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO) + .setConstantLabels(null); } @Test public void defaultValue() { TestInstrumentBuilder testInstrumentBuilder = - new TestInstrumentBuilder(NAME, METER_SHARED_STATE); + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO); assertThat(testInstrumentBuilder.getName()).isEqualTo(NAME); assertThat(testInstrumentBuilder.getDescription()).isEmpty(); assertThat(testInstrumentBuilder.getUnit()).isEqualTo("1"); @@ -119,7 +125,7 @@ public void defaultValue() { @Test public void setAndGetValues() { TestInstrumentBuilder testInstrumentBuilder = - new TestInstrumentBuilder(NAME, METER_SHARED_STATE) + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO) .setDescription(DESCRIPTION) .setUnit(UNIT) .setLabelKeys(LABEL_KEY) @@ -129,13 +135,19 @@ public void setAndGetValues() { assertThat(testInstrumentBuilder.getUnit()).isEqualTo(UNIT); assertThat(testInstrumentBuilder.getLabelKeys()).isEqualTo(LABEL_KEY); assertThat(testInstrumentBuilder.getConstantLabels()).isEqualTo(CONSTANT_LABELS); + assertThat(testInstrumentBuilder.getMeterSharedState()).isEqualTo(METER_SHARED_STATE); + assertThat(testInstrumentBuilder.getInstrumentationLibraryInfo()) + .isEqualTo(INSTRUMENTATION_LIBRARY_INFO); assertThat(testInstrumentBuilder.build()).isInstanceOf(TestInstrument.class); } private static final class TestInstrumentBuilder extends AbstractInstrumentBuilder { - TestInstrumentBuilder(String name, MeterSharedState sharedState) { - super(name, sharedState); + TestInstrumentBuilder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override diff --git a/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractInstrumentTest.java b/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractInstrumentTest.java index 7fe1b522873..b0b9f1284af 100644 --- a/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractInstrumentTest.java +++ b/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractInstrumentTest.java @@ -18,7 +18,10 @@ import static com.google.common.truth.Truth.assertThat; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; import io.opentelemetry.sdk.internal.TestClock; +import io.opentelemetry.sdk.metrics.common.InstrumentType; +import io.opentelemetry.sdk.metrics.common.InstrumentValueType; import io.opentelemetry.sdk.resources.Resource; import java.util.Collections; import java.util.List; @@ -38,17 +41,28 @@ public class AbstractInstrumentTest { private static final List LABEL_KEY = Collections.singletonList("key"); private static final MeterSharedState METER_SHARED_STATE = MeterSharedState.create(TestClock.create(), Resource.getEmpty()); + private static final InstrumentationLibraryInfo INSTRUMENTATION_LIBRARY_INFO = + InstrumentationLibraryInfo.create("test_abstract_instrument", ""); @Test public void getValues() { TestInstrument testInstrument = - new TestInstrument(NAME, DESCRIPTION, UNIT, CONSTANT_LABELS, LABEL_KEY, METER_SHARED_STATE); + new TestInstrument( + NAME, + DESCRIPTION, + UNIT, + CONSTANT_LABELS, + LABEL_KEY, + METER_SHARED_STATE, + INSTRUMENTATION_LIBRARY_INFO); assertThat(testInstrument.getName()).isEqualTo(NAME); assertThat(testInstrument.getDescription()).isEqualTo(DESCRIPTION); assertThat(testInstrument.getUnit()).isEqualTo(UNIT); assertThat(testInstrument.getConstantLabels()).isEqualTo(CONSTANT_LABELS); assertThat(testInstrument.getLabelKeys()).isEqualTo(LABEL_KEY); assertThat(testInstrument.getMeterSharedState()).isEqualTo(METER_SHARED_STATE); + assertThat(testInstrument.getInstrumentationLibraryInfo()) + .isEqualTo(INSTRUMENTATION_LIBRARY_INFO); } private static final class TestInstrument extends AbstractInstrument { @@ -58,8 +72,18 @@ private static final class TestInstrument extends AbstractInstrument { String unit, Map constantLabels, List labelKeys, - MeterSharedState meterSharedState) { - super(name, description, unit, constantLabels, labelKeys, meterSharedState); + MeterSharedState meterSharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super( + name, + description, + unit, + constantLabels, + labelKeys, + InstrumentType.COUNTER_MONOTONIC, + InstrumentValueType.LONG, + meterSharedState, + instrumentationLibraryInfo); } } } diff --git a/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractMeasureBuilderTest.java b/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractMeasureBuilderTest.java index e50f91d9aa4..98de9f1103b 100644 --- a/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractMeasureBuilderTest.java +++ b/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractMeasureBuilderTest.java @@ -21,6 +21,7 @@ import io.opentelemetry.metrics.InstrumentWithBinding.BoundInstrument; import io.opentelemetry.metrics.LabelSet; import io.opentelemetry.metrics.Measure; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; import io.opentelemetry.sdk.internal.TestClock; import io.opentelemetry.sdk.resources.Resource; import org.junit.Rule; @@ -37,23 +38,30 @@ public class AbstractMeasureBuilderTest { private static final String NAME = "name"; private static final MeterSharedState METER_SHARED_STATE = MeterSharedState.create(TestClock.create(), Resource.getEmpty()); + private static final InstrumentationLibraryInfo INSTRUMENTATION_LIBRARY_INFO = + InstrumentationLibraryInfo.EMPTY; @Test public void defaultValue() { - TestInstrumentBuilder testMetricBuilder = new TestInstrumentBuilder(NAME, METER_SHARED_STATE); + TestInstrumentBuilder testMetricBuilder = + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO); assertThat(testMetricBuilder.getName()).isEqualTo(NAME); assertThat(testMetricBuilder.getDescription()).isEmpty(); assertThat(testMetricBuilder.getUnit()).isEqualTo("1"); assertThat(testMetricBuilder.getLabelKeys()).isEmpty(); assertThat(testMetricBuilder.getConstantLabels()).isEmpty(); assertThat(testMetricBuilder.isAbsolute()).isTrue(); + assertThat(testMetricBuilder.getMeterSharedState()).isEqualTo(METER_SHARED_STATE); + assertThat(testMetricBuilder.getInstrumentationLibraryInfo()) + .isEqualTo(INSTRUMENTATION_LIBRARY_INFO); assertThat(testMetricBuilder.build()).isInstanceOf(TestInstrument.class); } @Test public void setAndGetValues() { TestInstrumentBuilder testMetricBuilder = - new TestInstrumentBuilder(NAME, METER_SHARED_STATE).setAbsolute(false); + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO) + .setAbsolute(false); assertThat(testMetricBuilder.getName()).isEqualTo(NAME); assertThat(testMetricBuilder.isAbsolute()).isFalse(); assertThat(testMetricBuilder.build()).isInstanceOf(TestInstrument.class); @@ -61,8 +69,11 @@ public void setAndGetValues() { private static final class TestInstrumentBuilder extends AbstractMeasureBuilder { - TestInstrumentBuilder(String name, MeterSharedState sharedState) { - super(name, sharedState); + TestInstrumentBuilder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override diff --git a/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractObserverBuilderTest.java b/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractObserverBuilderTest.java index 534ae63a2f7..858a435ce9a 100644 --- a/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractObserverBuilderTest.java +++ b/sdk/src/test/java/io/opentelemetry/sdk/metrics/AbstractObserverBuilderTest.java @@ -19,6 +19,7 @@ import static com.google.common.truth.Truth.assertThat; import io.opentelemetry.metrics.Observer; +import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; import io.opentelemetry.sdk.internal.TestClock; import io.opentelemetry.sdk.resources.Resource; import org.junit.Rule; @@ -35,23 +36,30 @@ public class AbstractObserverBuilderTest { private static final String NAME = "name"; private static final MeterSharedState METER_SHARED_STATE = MeterSharedState.create(TestClock.create(), Resource.getEmpty()); + private static final InstrumentationLibraryInfo INSTRUMENTATION_LIBRARY_INFO = + InstrumentationLibraryInfo.EMPTY; @Test public void defaultValue() { - TestInstrumentBuilder testMetricBuilder = new TestInstrumentBuilder(NAME, METER_SHARED_STATE); + TestInstrumentBuilder testMetricBuilder = + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO); assertThat(testMetricBuilder.getName()).isEqualTo(NAME); assertThat(testMetricBuilder.getDescription()).isEmpty(); assertThat(testMetricBuilder.getUnit()).isEqualTo("1"); assertThat(testMetricBuilder.getLabelKeys()).isEmpty(); assertThat(testMetricBuilder.getConstantLabels()).isEmpty(); assertThat(testMetricBuilder.isMonotonic()).isFalse(); + assertThat(testMetricBuilder.getMeterSharedState()).isEqualTo(METER_SHARED_STATE); + assertThat(testMetricBuilder.getInstrumentationLibraryInfo()) + .isEqualTo(INSTRUMENTATION_LIBRARY_INFO); assertThat(testMetricBuilder.build()).isInstanceOf(TestInstrument.class); } @Test public void setAndGetValues() { TestInstrumentBuilder testMetricBuilder = - new TestInstrumentBuilder(NAME, METER_SHARED_STATE).setMonotonic(true); + new TestInstrumentBuilder(NAME, METER_SHARED_STATE, INSTRUMENTATION_LIBRARY_INFO) + .setMonotonic(true); assertThat(testMetricBuilder.getName()).isEqualTo(NAME); assertThat(testMetricBuilder.isMonotonic()).isTrue(); assertThat(testMetricBuilder.build()).isInstanceOf(TestInstrument.class); @@ -59,8 +67,11 @@ public void setAndGetValues() { private static final class TestInstrumentBuilder extends AbstractObserverBuilder { - TestInstrumentBuilder(String name, MeterSharedState sharedState) { - super(name, sharedState); + TestInstrumentBuilder( + String name, + MeterSharedState sharedState, + InstrumentationLibraryInfo instrumentationLibraryInfo) { + super(name, sharedState, instrumentationLibraryInfo); } @Override