Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,6 @@
*/
public final class BatchLogRecordProcessor implements LogRecordProcessor {

private static final ComponentId COMPONENT_ID =
ComponentId.generateLazy("batching_log_processor");

private static final String WORKER_THREAD_NAME =
BatchLogRecordProcessor.class.getSimpleName() + "_WorkerThread";

Expand Down Expand Up @@ -176,7 +173,8 @@ private Worker(
this.queue = queue;
this.signal = new ArrayBlockingQueue<>(1);
logProcessorInstrumentation =
LogRecordProcessorInstrumentation.get(telemetryVersion, COMPONENT_ID, meterProvider);
LogRecordProcessorInstrumentation.get(
telemetryVersion, ComponentId.generateLazy("batching_log_processor"), meterProvider);
this.maxQueueSize = maxQueueSize;

this.batch = new ArrayList<>(this.maxExportBatchSize);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@
*/
public final class SimpleLogRecordProcessor implements LogRecordProcessor {

private static final ComponentId COMPONENT_ID = ComponentId.generateLazy("simple_log_processor");

private static final Logger logger = Logger.getLogger(SimpleLogRecordProcessor.class.getName());

private final LogRecordExporter logRecordExporter;
Expand Down Expand Up @@ -81,7 +79,9 @@ public static SimpleLogRecordProcessorBuilder builder(LogRecordExporter exporter
this.logRecordExporter = requireNonNull(logRecordExporter, "logRecordExporter");
logProcessorInstrumentation =
LogRecordProcessorInstrumentation.get(
InternalTelemetryVersion.LATEST, COMPONENT_ID, meterProvider);
InternalTelemetryVersion.LATEST,
ComponentId.generateLazy("simple_log_processor"),
meterProvider);
}

@Override
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,7 @@ public final class PeriodicMetricReader implements MetricReader {

private static final Clock CLOCK = Clock.getDefault();

private static final ComponentId COMPONENT_ID =
ComponentId.generateLazy("periodic_metric_reader");
private final ComponentId componentId = ComponentId.generateLazy("periodic_metric_reader");

private final MetricExporter exporter;
private final long intervalNanos;
Expand All @@ -71,7 +70,7 @@ public final class PeriodicMetricReader implements MetricReader {
@Nullable private volatile ScheduledFuture<?> scheduledFuture;

private volatile MetricReaderInstrumentation instrumentation =
new MetricReaderInstrumentation(COMPONENT_ID, MeterProvider.noop());
new MetricReaderInstrumentation(componentId, MeterProvider.noop());

/**
* Returns a new {@link PeriodicMetricReader} which exports to the {@code exporter} once every
Expand Down Expand Up @@ -205,7 +204,7 @@ public void register(CollectionRegistration collectionRegistration) {
@SuppressWarnings("UnusedMethod")
private void setMeterProvider(MeterProvider meterProvider) {
if (internalTelemetryVersion != InternalTelemetryVersion.LEGACY) {
instrumentation = new MetricReaderInstrumentation(COMPONENT_ID, meterProvider);
instrumentation = new MetricReaderInstrumentation(componentId, meterProvider);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,60 @@

import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;

import io.opentelemetry.api.metrics.LongCounter;
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
import io.opentelemetry.sdk.common.internal.SemConvConstants;
import io.opentelemetry.sdk.metrics.data.HistogramPointData;
import io.opentelemetry.sdk.metrics.data.MetricData;
import io.opentelemetry.sdk.metrics.export.MetricProducer;
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
import io.opentelemetry.sdk.testing.exporter.InMemoryMetricExporter;
import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import org.junit.jupiter.api.Test;

class SdkMeterProviderMetricsTest {
@Test
void componentNamesAreUniqueAndStable() {
InMemoryMetricReader observer = InMemoryMetricReader.create();
try (SdkMeterProvider provider =
SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.create(InMemoryMetricExporter.create()))
.registerMetricReader(PeriodicMetricReader.create(InMemoryMetricExporter.create()))
.registerMetricReader(observer)
.build()) {
List<String> previousNames = null;
for (int count = 1; count <= 2; count++) {
assertThat(provider.forceFlush().join(10, TimeUnit.SECONDS).isSuccess()).isTrue();
MetricData metric =
observer.collectAllMetrics().stream()
.filter(m -> m.getName().equals("otel.sdk.metric_reader.collection.duration"))
.findFirst()
.get();
assertThat(metric.getHistogramData().getPoints()).hasSize(2);
List<String> names =
metric.getHistogramData().getPoints().stream()
.map(point -> point.getAttributes().get(SemConvConstants.OTEL_COMPONENT_NAME))
.collect(Collectors.toList());
assertThat(names).doesNotHaveDuplicates().doesNotContainNull();
if (previousNames != null) {
assertThat(names).containsExactlyInAnyOrderElementsOf(previousNames);
}
previousNames = names;
for (HistogramPointData point : metric.getHistogramData().getPoints()) {
assertThat(point.getCount()).isEqualTo(count);
}
}
}
}

@Test
void simple() {
InMemoryMetricExporter metricExporter = InMemoryMetricExporter.create();
Expand Down Expand Up @@ -53,13 +91,15 @@ void simple() {
h.hasPointsSatisfying(
p ->
p.hasCount(1)
.hasAttributesSatisfying(
.hasAttributesSatisfyingExactly(
equalTo(
SemConvConstants.OTEL_COMPONENT_TYPE,
"periodic_metric_reader"),
equalTo(
satisfies(
SemConvConstants.OTEL_COMPONENT_NAME,
"periodic_metric_reader/0"))));
name ->
name.matches(
"periodic_metric_reader/[0-9]+")))));
});
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,6 @@
*/
public final class BatchSpanProcessor implements SpanProcessor {

private static final ComponentId COMPONENT_ID =
ComponentId.generateLazy("batching_span_processor");

private static final Logger logger = Logger.getLogger(BatchSpanProcessor.class.getName());

private static final String WORKER_THREAD_NAME =
Expand Down Expand Up @@ -219,7 +216,8 @@ private Worker(
this.signal = new ArrayBlockingQueue<>(1);

spanProcessorInstrumentation =
SpanProcessorInstrumentation.get(telemetryVersion, COMPONENT_ID, meterProvider);
SpanProcessorInstrumentation.get(
telemetryVersion, ComponentId.generateLazy("batching_span_processor"), meterProvider);
this.maxQueueSize = maxQueueSize;

this.batch = new ArrayList<>(this.maxExportBatchSize);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@
*/
public final class SimpleSpanProcessor implements SpanProcessor {

private static final ComponentId COMPONENT_ID = ComponentId.generateLazy("simple_span_processor");

private static final Logger logger = Logger.getLogger(SimpleSpanProcessor.class.getName());

private final SpanExporter spanExporter;
Expand Down Expand Up @@ -84,7 +82,9 @@ public static SimpleSpanProcessorBuilder builder(SpanExporter exporter) {
this.exportUnsampledSpans = exportUnsampledSpans;
spanProcessorInstrumentation =
SpanProcessorInstrumentation.get(
InternalTelemetryVersion.LATEST, COMPONENT_ID, meterProvider);
InternalTelemetryVersion.LATEST,
ComponentId.generateLazy("simple_span_processor"),
meterProvider);
}

@Override
Expand Down
Loading
Loading