Skip to content

Commit

Permalink
Adds test
Browse files Browse the repository at this point in the history
Signed-off-by: Gagan Juneja <gjjuneja@amazon.com>
  • Loading branch information
Gagan Juneja committed Jan 31, 2024
1 parent d5239fe commit 5494e7b
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,15 @@ public void testUpDownCounter() {
assertSame(mockCounter, counter);
}

public void testHistogram() {
Histogram mockHistogram = mock(Histogram.class);
when(defaultMeterRegistry.createHistogram(any(String.class), any(String.class), any(String.class))).thenReturn(mockHistogram);
Histogram histogram = defaultMeterRegistry.createHistogram(
"org.opensearch.telemetry.metrics.DefaultMeterRegistryTests.testHistogram",
"test up-down counter",
"ms"
);
assertSame(mockHistogram, histogram);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.opensearch.telemetry.OTelTelemetrySettings;
import org.opensearch.telemetry.TelemetrySettings;
import org.opensearch.telemetry.metrics.noop.NoopCounter;
import org.opensearch.telemetry.metrics.noop.NoopHistogram;
import org.opensearch.telemetry.metrics.noop.NoopMetricsRegistry;
import org.opensearch.test.OpenSearchIntegTestCase;

Expand Down Expand Up @@ -53,10 +54,13 @@ public void testSanityChecksWhenMetricsDisabled() throws Exception {
Counter counter = metricsRegistry.createCounter("test-counter", "test", "1");
counter.add(1.0);

Histogram histogram = metricsRegistry.createHistogram("test-histogram", "test", "1");

Thread.sleep(2000);

assertTrue(metricsRegistry instanceof NoopMetricsRegistry);
assertTrue(counter instanceof NoopCounter);
assertTrue(histogram instanceof NoopHistogram);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import java.util.stream.Collectors;

import io.opentelemetry.sdk.metrics.data.DoublePointData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableHistogramPointData;

@OpenSearchIntegTestCase.ClusterScope(scope = OpenSearchIntegTestCase.Scope.SUITE, minNumDataNodes = 1)
public class TelemetryMetricsEnabledSanityIT extends OpenSearchIntegTestCase {
Expand Down Expand Up @@ -92,6 +93,30 @@ public void testUpDownCounter() throws Exception {
assertEquals(-1.0, value, 0.0);
}

public void testHistogram() throws Exception {
MetricsRegistry metricsRegistry = internalCluster().getInstance(MetricsRegistry.class);
InMemorySingletonMetricsExporter.INSTANCE.reset();

Histogram histogram = metricsRegistry.createHistogram("test-histogram", "test", "ms");
histogram.record(2.0);
histogram.record(1.0);
histogram.record(3.0);
// Sleep for about 2s to wait for metrics to be published.
Thread.sleep(2000);

InMemorySingletonMetricsExporter exporter = InMemorySingletonMetricsExporter.INSTANCE;
ImmutableHistogramPointData histogramPointData = ((ImmutableHistogramPointData) ((ArrayList) exporter.getFinishedMetricItems()
.stream()
.filter(a -> a.getName().equals("test-histogram"))
.collect(Collectors.toList())
.get(0)
.getHistogramData()
.getPoints()).get(0));
assertEquals(1.0, histogramPointData.getSum(), 6.0);
assertEquals(1.0, histogramPointData.getMax(), 3.0);
assertEquals(1.0, histogramPointData.getMin(), 1.0);
}

@After
public void reset() {
InMemorySingletonMetricsExporter.INSTANCE.reset();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.metrics.DoubleCounter;
import io.opentelemetry.api.metrics.DoubleCounterBuilder;
import io.opentelemetry.api.metrics.DoubleHistogram;
import io.opentelemetry.api.metrics.DoubleHistogramBuilder;
import io.opentelemetry.api.metrics.DoubleUpDownCounter;
import io.opentelemetry.api.metrics.DoubleUpDownCounterBuilder;
import io.opentelemetry.api.metrics.LongCounterBuilder;
Expand Down Expand Up @@ -118,4 +120,32 @@ public void testUpDownCounter() {
counter.add(-2.0, tags);
verify(mockOTelUpDownDoubleCounter).add((-2.0), OTelAttributesConverter.convert(tags));
}

@SuppressWarnings({ "rawtypes", "unchecked" })
public void testHistogram() {
String histogramName = "test-histogram";
String description = "test";
String unit = "1";
Meter mockMeter = mock(Meter.class);
OpenTelemetry mockOpenTelemetry = mock(OpenTelemetry.class);
DoubleHistogram mockOTelDoubleHistogram = mock(DoubleHistogram.class);
DoubleHistogramBuilder mockOTelDoubleHistogramBuilder = mock(DoubleHistogramBuilder.class);
MeterProvider meterProvider = mock(MeterProvider.class);
when(meterProvider.get(OTelTelemetryPlugin.INSTRUMENTATION_SCOPE_NAME)).thenReturn(mockMeter);
MetricsTelemetry metricsTelemetry = new OTelMetricsTelemetry(
new RefCountedReleasable("telemetry", mockOpenTelemetry, () -> {}),
meterProvider
);
when(mockMeter.histogramBuilder(histogramName)).thenReturn(mockOTelDoubleHistogramBuilder);
when(mockOTelDoubleHistogramBuilder.setDescription(description)).thenReturn(mockOTelDoubleHistogramBuilder);
when(mockOTelDoubleHistogramBuilder.setUnit(unit)).thenReturn(mockOTelDoubleHistogramBuilder);
when(mockOTelDoubleHistogramBuilder.build()).thenReturn(mockOTelDoubleHistogram);

Histogram histogram = metricsTelemetry.createHistogram(histogramName, description, unit);
histogram.record(1.0);
verify(mockOTelDoubleHistogram).record(1.0);
Tags tags = Tags.create().addTag("test", "test");
histogram.record(2.0, tags);
verify(mockOTelDoubleHistogram).record(2.0, OTelAttributesConverter.convert(tags));
}
}

0 comments on commit 5494e7b

Please sign in to comment.