Search in sources :

Example 1 with DoubleUpDownCounter

use of io.opentelemetry.api.metrics.DoubleUpDownCounter in project opentelemetry-java by open-telemetry.

the class SdkDoubleUpDownCounterTest method stressTest_WithDifferentLabelSet.

@Test
void stressTest_WithDifferentLabelSet() {
    String[] keys = { "Key_1", "Key_2", "Key_3", "Key_4" };
    String[] values = { "Value_1", "Value_2", "Value_3", "Value_4" };
    DoubleUpDownCounter doubleUpDownCounter = sdkMeter.upDownCounterBuilder("testUpDownCounter").ofDoubles().build();
    StressTestRunner.Builder stressTestBuilder = StressTestRunner.builder().setInstrument((SdkDoubleUpDownCounter) doubleUpDownCounter).setCollectionIntervalMs(100);
    for (int i = 0; i < 4; i++) {
        stressTestBuilder.addOperation(StressTestRunner.Operation.create(2_000, 1, new OperationUpdaterDirectCall(doubleUpDownCounter, keys[i], values[i])));
        stressTestBuilder.addOperation(StressTestRunner.Operation.create(2_000, 1, new OperationUpdaterWithBinding(((SdkDoubleUpDownCounter) doubleUpDownCounter).bind(Attributes.builder().put(keys[i], values[i]).build()))));
    }
    stressTestBuilder.build().run();
    assertThat(sdkMeterReader.collectAllMetrics()).satisfiesExactly(metric -> assertThat(metric).hasResource(RESOURCE).hasInstrumentationLibrary(INSTRUMENTATION_LIBRARY_INFO).hasName("testUpDownCounter").hasDoubleSum().isCumulative().isNotMonotonic().points().allSatisfy(point -> assertThat(point).hasStartEpochNanos(testClock.now()).hasEpochNanos(testClock.now()).hasValue(40_000)).extracting(PointData::getAttributes).containsExactlyInAnyOrder(Attributes.of(stringKey(keys[0]), values[0]), Attributes.of(stringKey(keys[1]), values[1]), Attributes.of(stringKey(keys[2]), values[2]), Attributes.of(stringKey(keys[3]), values[3])));
}
Also used : DoubleUpDownCounter(io.opentelemetry.api.metrics.DoubleUpDownCounter) Resource(io.opentelemetry.sdk.resources.Resource) Attributes(io.opentelemetry.api.common.Attributes) InstrumentationLibraryInfo(io.opentelemetry.sdk.common.InstrumentationLibraryInfo) OperationUpdater(io.opentelemetry.sdk.metrics.StressTestRunner.OperationUpdater) Test(org.junit.jupiter.api.Test) PointData(io.opentelemetry.sdk.metrics.data.PointData) InMemoryMetricReader(io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader) Assertions.assertThatThrownBy(org.assertj.core.api.Assertions.assertThatThrownBy) AttributeKey.stringKey(io.opentelemetry.api.common.AttributeKey.stringKey) BoundDoubleUpDownCounter(io.opentelemetry.sdk.metrics.internal.instrument.BoundDoubleUpDownCounter) Duration(java.time.Duration) TestClock(io.opentelemetry.sdk.testing.time.TestClock) MetricAssertions.assertThat(io.opentelemetry.sdk.testing.assertj.MetricAssertions.assertThat) Meter(io.opentelemetry.api.metrics.Meter) DoubleUpDownCounter(io.opentelemetry.api.metrics.DoubleUpDownCounter) BoundDoubleUpDownCounter(io.opentelemetry.sdk.metrics.internal.instrument.BoundDoubleUpDownCounter) PointData(io.opentelemetry.sdk.metrics.data.PointData) Test(org.junit.jupiter.api.Test)

Example 2 with DoubleUpDownCounter

use of io.opentelemetry.api.metrics.DoubleUpDownCounter in project opentelemetry-java by open-telemetry.

the class SdkDoubleUpDownCounterTest method collectMetrics_NoRecords.

@Test
void collectMetrics_NoRecords() {
    DoubleUpDownCounter doubleUpDownCounter = sdkMeter.upDownCounterBuilder("testUpDownCounter").ofDoubles().build();
    BoundDoubleUpDownCounter bound = ((SdkDoubleUpDownCounter) doubleUpDownCounter).bind(Attributes.builder().put("foo", "bar").build());
    try {
        assertThat(sdkMeterReader.collectAllMetrics()).isEmpty();
    } finally {
        bound.unbind();
    }
}
Also used : DoubleUpDownCounter(io.opentelemetry.api.metrics.DoubleUpDownCounter) BoundDoubleUpDownCounter(io.opentelemetry.sdk.metrics.internal.instrument.BoundDoubleUpDownCounter) BoundDoubleUpDownCounter(io.opentelemetry.sdk.metrics.internal.instrument.BoundDoubleUpDownCounter) Test(org.junit.jupiter.api.Test)

Example 3 with DoubleUpDownCounter

use of io.opentelemetry.api.metrics.DoubleUpDownCounter in project opentelemetry-java by open-telemetry.

the class SdkMeterTest method testDoubleUpDownCounter.

@Test
void testDoubleUpDownCounter() {
    DoubleUpDownCounter doubleUpDownCounter = sdkMeter.upDownCounterBuilder("testDoubleUpDownCounter").ofDoubles().setDescription("My very own counter").setUnit("metric tonnes").build();
    assertThat(doubleUpDownCounter).isNotNull();
    // Note: We no longer get the same instrument instance as these instances are lightweight
    // objects backed by storage now.  Here we just make sure it doesn't log an error.
    sdkMeter.upDownCounterBuilder("testDoubleUpDownCounter").ofDoubles().setDescription("My very own counter").setUnit("metric tonnes").build();
    assertThat(logs.getEvents()).isEmpty();
    sdkMeter.upDownCounterBuilder("testDoubleUpDownCounter").ofDoubles().build();
    assertThat(logs.assertContains(loggingEvent -> loggingEvent.getLevel().equals(WARN), "Failed to register metric.").getThrowable()).hasMessageContaining("Metric with same name and different descriptor already created.");
}
Also used : LongCounter(io.opentelemetry.api.metrics.LongCounter) DoubleUpDownCounter(io.opentelemetry.api.metrics.DoubleUpDownCounter) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) DoubleHistogram(io.opentelemetry.api.metrics.DoubleHistogram) Test(org.junit.jupiter.api.Test) InMemoryMetricReader(io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader) LogCapturer(io.github.netmikey.logunit.api.LogCapturer) MeterSharedState(io.opentelemetry.sdk.metrics.internal.state.MeterSharedState) SuppressLogger(io.opentelemetry.internal.testing.slf4j.SuppressLogger) RegisterExtension(org.junit.jupiter.api.extension.RegisterExtension) DoubleCounter(io.opentelemetry.api.metrics.DoubleCounter) LongHistogram(io.opentelemetry.api.metrics.LongHistogram) Meter(io.opentelemetry.api.metrics.Meter) WARN(org.slf4j.event.Level.WARN) LongUpDownCounter(io.opentelemetry.api.metrics.LongUpDownCounter) DoubleUpDownCounter(io.opentelemetry.api.metrics.DoubleUpDownCounter) Test(org.junit.jupiter.api.Test)

Example 4 with DoubleUpDownCounter

use of io.opentelemetry.api.metrics.DoubleUpDownCounter in project opentelemetry-java-instrumentation by open-telemetry.

the class MeterTest method doubleUpDownCounter.

@Test
void doubleUpDownCounter() {
    DoubleUpDownCounter instrument = meter.upDownCounterBuilder("test").ofDoubles().setDescription("d").setUnit("u").build();
    instrument.add(5.5, Attributes.of(AttributeKey.stringKey("q"), "r"));
    instrument.add(6.6, Attributes.of(AttributeKey.stringKey("q"), "r"));
    testing.waitAndAssertMetrics(instrumentationName, "test", metrics -> metrics.anySatisfy(metric -> assertThat(metric).hasDescription("d").hasUnit("u").hasInstrumentationLibrary(InstrumentationLibraryInfo.create(instrumentationName, "1.2.3")).hasDoubleSum().isNotMonotonic().points().satisfiesExactly(point -> assertThat(point).hasValue(12.1).attributes().containsOnly(attributeEntry("q", "r")))));
}
Also used : OpenTelemetryAssertions.attributeEntry(io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.attributeEntry) LongCounter(io.opentelemetry.api.metrics.LongCounter) AgentInstrumentationExtension(io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension) BeforeEach(org.junit.jupiter.api.BeforeEach) DoubleUpDownCounter(io.opentelemetry.api.metrics.DoubleUpDownCounter) DoubleHistogram(io.opentelemetry.api.metrics.DoubleHistogram) Attributes(io.opentelemetry.api.common.Attributes) TestInfo(org.junit.jupiter.api.TestInfo) InstrumentationLibraryInfo(io.opentelemetry.sdk.common.InstrumentationLibraryInfo) Test(org.junit.jupiter.api.Test) RegisterExtension(org.junit.jupiter.api.extension.RegisterExtension) DoubleCounter(io.opentelemetry.api.metrics.DoubleCounter) AttributeKey(io.opentelemetry.api.common.AttributeKey) LongHistogram(io.opentelemetry.api.metrics.LongHistogram) Assertions(org.assertj.core.api.Assertions) MetricAssertions.assertThat(io.opentelemetry.sdk.testing.assertj.MetricAssertions.assertThat) Meter(io.opentelemetry.api.metrics.Meter) LongUpDownCounter(io.opentelemetry.api.metrics.LongUpDownCounter) DoubleUpDownCounter(io.opentelemetry.api.metrics.DoubleUpDownCounter) Test(org.junit.jupiter.api.Test)

Example 5 with DoubleUpDownCounter

use of io.opentelemetry.api.metrics.DoubleUpDownCounter in project opentelemetry-java by open-telemetry.

the class SdkMeterProviderTest method collectAllSyncInstruments_DeltaHistogram.

@Test
void collectAllSyncInstruments_DeltaHistogram() {
    registerViewForAllTypes(sdkMeterProviderBuilder, Aggregation.explicitBucketHistogram(Collections.emptyList()));
    InMemoryMetricReader sdkMeterReader = InMemoryMetricReader.createDelta();
    SdkMeterProvider sdkMeterProvider = sdkMeterProviderBuilder.registerMetricReader(sdkMeterReader).build();
    Meter sdkMeter = sdkMeterProvider.get(SdkMeterProviderTest.class.getName());
    LongCounter longCounter = sdkMeter.counterBuilder("testLongCounter").build();
    longCounter.add(10, Attributes.empty());
    LongUpDownCounter longUpDownCounter = sdkMeter.upDownCounterBuilder("testLongUpDownCounter").build();
    longUpDownCounter.add(10, Attributes.empty());
    LongHistogram longValueRecorder = sdkMeter.histogramBuilder("testLongValueRecorder").ofLongs().build();
    longValueRecorder.record(10, Attributes.empty());
    DoubleCounter doubleCounter = sdkMeter.counterBuilder("testDoubleCounter").ofDoubles().build();
    doubleCounter.add(10, Attributes.empty());
    DoubleUpDownCounter doubleUpDownCounter = sdkMeter.upDownCounterBuilder("testDoubleUpDownCounter").ofDoubles().build();
    doubleUpDownCounter.add(10, Attributes.empty());
    DoubleHistogram doubleValueRecorder = sdkMeter.histogramBuilder("testDoubleValueRecorder").build();
    doubleValueRecorder.record(10, Attributes.empty());
    testClock.advance(Duration.ofSeconds(1));
    assertThat(sdkMeterReader.collectAllMetrics()).allSatisfy(metric -> assertThat(metric).hasResource(RESOURCE).hasInstrumentationLibrary(INSTRUMENTATION_LIBRARY_INFO).hasDescription("").hasUnit("1").hasDoubleHistogram().isDelta().points().satisfiesExactlyInAnyOrder(point -> assertThat(point).hasStartEpochNanos(testClock.now() - 1000000000).hasEpochNanos(testClock.now()).hasAttributes(Attributes.empty()).hasBucketCounts(1))).extracting(MetricData::getName).containsExactlyInAnyOrder("testLongCounter", "testDoubleCounter", "testLongUpDownCounter", "testDoubleUpDownCounter", "testLongValueRecorder", "testDoubleValueRecorder");
    testClock.advance(Duration.ofSeconds(1));
    longCounter.add(10, Attributes.empty());
    longUpDownCounter.add(10, Attributes.empty());
    longValueRecorder.record(10, Attributes.empty());
    doubleCounter.add(10, Attributes.empty());
    doubleUpDownCounter.add(10, Attributes.empty());
    doubleValueRecorder.record(10, Attributes.empty());
    assertThat(sdkMeterReader.collectAllMetrics()).allSatisfy(metric -> assertThat(metric).hasResource(RESOURCE).hasInstrumentationLibrary(INSTRUMENTATION_LIBRARY_INFO).hasDescription("").hasUnit("1").hasDoubleHistogram().isDelta().points().satisfiesExactlyInAnyOrder(point -> assertThat(point).hasStartEpochNanos(testClock.now() - 1000000000).hasEpochNanos(testClock.now()).hasAttributes(Attributes.empty()).hasBucketCounts(1))).extracting(MetricData::getName).containsExactlyInAnyOrder("testLongCounter", "testDoubleCounter", "testLongUpDownCounter", "testDoubleUpDownCounter", "testLongValueRecorder", "testDoubleValueRecorder");
}
Also used : LongPointData(io.opentelemetry.sdk.metrics.data.LongPointData) Resource(io.opentelemetry.sdk.resources.Resource) Mock(org.mockito.Mock) Attributes(io.opentelemetry.api.common.Attributes) Aggregation(io.opentelemetry.sdk.metrics.view.Aggregation) InstrumentationLibraryInfo(io.opentelemetry.sdk.common.InstrumentationLibraryInfo) ViewBuilderImpl(io.opentelemetry.sdk.metrics.internal.view.ViewBuilderImpl) MetricReader(io.opentelemetry.sdk.metrics.export.MetricReader) View(io.opentelemetry.sdk.metrics.view.View) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) Duration(java.time.Duration) LongHistogram(io.opentelemetry.api.metrics.LongHistogram) TestClock(io.opentelemetry.sdk.testing.time.TestClock) MetricAssertions.assertThat(io.opentelemetry.sdk.testing.assertj.MetricAssertions.assertThat) Meter(io.opentelemetry.api.metrics.Meter) LongUpDownCounter(io.opentelemetry.api.metrics.LongUpDownCounter) ObservableLongCounter(io.opentelemetry.api.metrics.ObservableLongCounter) LongCounter(io.opentelemetry.api.metrics.LongCounter) Context(io.opentelemetry.context.Context) DoubleUpDownCounter(io.opentelemetry.api.metrics.DoubleUpDownCounter) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) Scope(io.opentelemetry.context.Scope) DoubleHistogram(io.opentelemetry.api.metrics.DoubleHistogram) Mockito.when(org.mockito.Mockito.when) InstrumentType(io.opentelemetry.sdk.metrics.common.InstrumentType) InstrumentSelector(io.opentelemetry.sdk.metrics.view.InstrumentSelector) Assertions.entry(org.assertj.core.api.Assertions.entry) TimeUnit(java.util.concurrent.TimeUnit) Consumer(java.util.function.Consumer) Test(org.junit.jupiter.api.Test) InMemoryMetricReader(io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader) Baggage(io.opentelemetry.api.baggage.Baggage) DoubleCounter(io.opentelemetry.api.metrics.DoubleCounter) AttributeKey(io.opentelemetry.api.common.AttributeKey) MetricData(io.opentelemetry.sdk.metrics.data.MetricData) MeterProvider(io.opentelemetry.api.metrics.MeterProvider) Collections(java.util.Collections) CompletableResultCode(io.opentelemetry.sdk.common.CompletableResultCode) LongUpDownCounter(io.opentelemetry.api.metrics.LongUpDownCounter) DoubleUpDownCounter(io.opentelemetry.api.metrics.DoubleUpDownCounter) DoubleHistogram(io.opentelemetry.api.metrics.DoubleHistogram) InMemoryMetricReader(io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader) Meter(io.opentelemetry.api.metrics.Meter) DoubleCounter(io.opentelemetry.api.metrics.DoubleCounter) LongHistogram(io.opentelemetry.api.metrics.LongHistogram) ObservableLongCounter(io.opentelemetry.api.metrics.ObservableLongCounter) LongCounter(io.opentelemetry.api.metrics.LongCounter) Test(org.junit.jupiter.api.Test)

Aggregations

DoubleUpDownCounter (io.opentelemetry.api.metrics.DoubleUpDownCounter)9 Test (org.junit.jupiter.api.Test)9 Meter (io.opentelemetry.api.metrics.Meter)8 Attributes (io.opentelemetry.api.common.Attributes)7 InstrumentationLibraryInfo (io.opentelemetry.sdk.common.InstrumentationLibraryInfo)7 MetricAssertions.assertThat (io.opentelemetry.sdk.testing.assertj.MetricAssertions.assertThat)7 InMemoryMetricReader (io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader)7 Resource (io.opentelemetry.sdk.resources.Resource)6 TestClock (io.opentelemetry.sdk.testing.time.TestClock)6 Duration (java.time.Duration)6 BoundDoubleUpDownCounter (io.opentelemetry.sdk.metrics.internal.instrument.BoundDoubleUpDownCounter)5 AttributeKey.stringKey (io.opentelemetry.api.common.AttributeKey.stringKey)4 DoubleCounter (io.opentelemetry.api.metrics.DoubleCounter)4 DoubleHistogram (io.opentelemetry.api.metrics.DoubleHistogram)4 LongCounter (io.opentelemetry.api.metrics.LongCounter)4 LongHistogram (io.opentelemetry.api.metrics.LongHistogram)4 LongUpDownCounter (io.opentelemetry.api.metrics.LongUpDownCounter)4 OperationUpdater (io.opentelemetry.sdk.metrics.StressTestRunner.OperationUpdater)4 PointData (io.opentelemetry.sdk.metrics.data.PointData)4 Assertions.assertThatThrownBy (org.assertj.core.api.Assertions.assertThatThrownBy)4