From d956d7d47024b4d14147e2c3b64d6bf17b1308af Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 17 Sep 2025 08:03:40 +0200 Subject: [PATCH 1/2] test that the meter provider is wired through to the tracer and logger providers --- ...OpenTelemetryConfigurationFactoryTest.java | 48 ++++++++++++++++--- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java index bd48b5a11fe..817e3a1930c 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java @@ -5,11 +5,6 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; -import static io.opentelemetry.sdk.trace.samplers.Sampler.alwaysOn; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator; import io.opentelemetry.api.incubator.config.DeclarativeConfigException; import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; @@ -24,7 +19,6 @@ import io.opentelemetry.internal.testing.CleanupExtension; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; -import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AlwaysOnSamplerModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AttributeNameValueModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.BatchLogRecordProcessorModel; @@ -60,18 +54,32 @@ import io.opentelemetry.sdk.metrics.View; import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.SpanLimits; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + import java.io.Closeable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.stream.Stream; + +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; +import static io.opentelemetry.sdk.trace.samplers.Sampler.alwaysOn; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; +import java.lang.reflect.Field; + class OpenTelemetryConfigurationFactoryTest { @RegisterExtension CleanupExtension cleanup = new CleanupExtension(); @@ -166,7 +174,7 @@ void create_Disabled() { } @Test - void create_Configured() { + void create_Configured() throws NoSuchFieldException, IllegalAccessException { List closeables = new ArrayList<>(); io.opentelemetry.sdk.resources.Resource expectedResource = io.opentelemetry.sdk.resources.Resource.getDefault().toBuilder() @@ -320,5 +328,31 @@ void create_Configured() { cleanup.addCloseables(closeables); assertThat(sdk).hasToString(expectedSdk.toString()); + + // test that the meter provider is wired through to the tracer and logger providers + Field field = SdkMeterProvider.class.getDeclaredField("sharedState"); + field.setAccessible(true); + Object sharedState = field.get(sdk.getSdkMeterProvider()); + assertThat(sdk) + .extracting("loggerProvider") + .extracting("delegate") + .extracting("sharedState") + .extracting("logRecordProcessor") + .extracting("worker") + .extracting("processedLogsCounter") + .extracting("sdkMeter") + .extracting("meterProviderSharedState") + .isEqualTo(sharedState); + + assertThat(sdk) + .extracting("tracerProvider") + .extracting("delegate") + .extracting("sharedState") + .extracting("activeSpanProcessor") + .extracting("worker") + .extracting("processedSpansCounter") + .extracting("sdkMeter") + .extracting("meterProviderSharedState") + .isEqualTo(sharedState); } } From c42bd53ff4beeb116beb69eda2cf5077d02df04d Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 17 Sep 2025 08:04:02 +0200 Subject: [PATCH 2/2] test that the meter provider is wired through to the tracer and logger providers --- ...OpenTelemetryConfigurationFactoryTest.java | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java index 817e3a1930c..d06e9164356 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java @@ -5,6 +5,11 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; +import static io.opentelemetry.sdk.trace.samplers.Sampler.alwaysOn; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator; import io.opentelemetry.api.incubator.config.DeclarativeConfigException; import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; @@ -19,6 +24,7 @@ import io.opentelemetry.internal.testing.CleanupExtension; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AlwaysOnSamplerModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AttributeNameValueModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.BatchLogRecordProcessorModel; @@ -54,32 +60,19 @@ import io.opentelemetry.sdk.metrics.View; import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.SpanLimits; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - import java.io.Closeable; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.stream.Stream; - -import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; -import static io.opentelemetry.sdk.trace.samplers.Sampler.alwaysOn; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.lang.reflect.Field; - class OpenTelemetryConfigurationFactoryTest { @RegisterExtension CleanupExtension cleanup = new CleanupExtension();