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
Empty file added There
Empty file.
4 changes: 4 additions & 0 deletions all/src/test/java/io/opentelemetry/all/SdkDesignTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.tngtech.archunit.core.domain.JavaClass;
import com.tngtech.archunit.core.domain.JavaClasses;
import com.tngtech.archunit.core.domain.JavaMethod;
import com.tngtech.archunit.core.domain.JavaModifier;
import com.tngtech.archunit.core.domain.PackageMatcher;
import com.tngtech.archunit.core.importer.ClassFileImporter;
import com.tngtech.archunit.lang.syntax.ArchRuleDefinition;
Expand Down Expand Up @@ -60,6 +61,9 @@ static DescribedPredicate<? super JavaMethod> implementOrOverride() {
return new DescribedPredicate<JavaMethod>("implement or override a method") {
@Override
public boolean test(JavaMethod input) {
if (input.getModifiers().contains(JavaModifier.STATIC)) {
return false;
}
List<JavaClass> params = input.getRawParameterTypes();
Class<?>[] paramsType = new Class<?>[params.size()];
for (int i = 0, n = params.size(); i < n; i++) {
Expand Down
3 changes: 3 additions & 0 deletions docs/apidiffs/current_vs_latest/opentelemetry-sdk-trace.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@ Comparing source compatibility of opentelemetry-sdk-trace-1.66.0-SNAPSHOT.jar ag
+++ NEW INTERFACE: java.lang.AutoCloseable
+++ NEW METHOD: PUBLIC(+) void close()
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.common.CompletableResultCode shutdown()
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.trace.SdkTracerProvider (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.sdk.trace.SdkTracerProvider noop()
Original file line number Diff line number Diff line change
Expand Up @@ -172,19 +172,24 @@ void create_Defaults() {
List<Closeable> closeables = new ArrayList<>();
OpenTelemetryConfigurationModel model =
new OpenTelemetryConfigurationModel().withFileFormat("1.1");
OpenTelemetrySdk expectedSdk =
OpenTelemetrySdkBuilderUtil.setConfigProvider(
OpenTelemetrySdk.builder(),
SdkConfigProvider.create(DeclarativeConfiguration.toConfigProperties(model)))
.build();
cleanup.addCloseable(expectedSdk);

ExtendedOpenTelemetrySdk sdk =
OpenTelemetryConfigurationFactory.getInstance().create(model, context).getSdk();
cleanup.addCloseable(sdk);
cleanup.addCloseables(closeables);

assertThat(sdk).hasToString(expectedSdk.toString());
// Verify SDK and all components are initialized
assertThat(sdk).isNotNull();
assertThat(sdk.getSdkTracerProvider()).isNotNull();
assertThat(sdk.getSdkMeterProvider()).isNotNull();
assertThat(sdk.getSdkLoggerProvider()).isNotNull();

// Verify the SDK is properly configured (not disabled, has default resource)
assertThat(sdk.toString())
.contains("tracerProvider=")
.contains("meterProvider=")
.contains("loggerProvider=")
.contains("propagators=");
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ public OpenTelemetrySdk buildAndRegisterGlobal() {
public OpenTelemetrySdk build() {
SdkTracerProvider tracerProvider = this.tracerProvider;
if (tracerProvider == null) {
tracerProvider = SdkTracerProvider.builder().build();
tracerProvider = SdkTracerProvider.noop();
}

SdkMeterProvider meterProvider = this.meterProvider;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.context.propagation.TextMapPropagator;
import io.opentelemetry.sdk.common.Clock;
Expand Down Expand Up @@ -108,6 +109,11 @@ void builderDefaults() {
obfuscatedTracerProvider ->
assertThat(obfuscatedTracerProvider.unobfuscate())
.isInstanceOf(SdkTracerProvider.class));

Span span = openTelemetry.getTracer("test").spanBuilder("test-span").startSpan();

assertThat(span.isRecording()).isFalse();

assertThat(openTelemetry.getMeterProvider())
.isInstanceOfSatisfying(
OpenTelemetrySdk.ObfuscatedMeterProvider.class,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ public static SdkTracerProviderBuilder builder() {
return new SdkTracerProviderBuilder();
}

public static SdkTracerProvider noop() {
return builder().setDefaultTracerConfig(TracerConfig.disabled()).build();
}

@SuppressWarnings("NonApiType")
SdkTracerProvider(
Clock clock,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,12 @@ SdkTracerProviderBuilder addTracerConfiguratorCondition(
return this;
}

SdkTracerProviderBuilder setDefaultTracerConfig(TracerConfig tracerConfig) {
this.tracerConfiguratorBuilder =
TracerConfig.configuratorBuilder().addCondition(scope -> true, tracerConfig);
return this;
}

/**
* Sets the exception attribute resolver, which resolves {@code exception.*} attributes when
* {@link Span#recordException(Throwable)} is called.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.sdk.trace.internal.TracerConfig;
import org.assertj.core.api.InstanceOfAssertFactories;
import org.junit.jupiter.api.Test;

Expand All @@ -31,6 +32,26 @@ void addResource() {
.hasFieldOrPropertyWithValue("resource", Resource.getDefault().merge(customResource));
}

@Test
void setDefaultTracerConfig_disabled() {
SdkTracerProvider sdkTracerProvider =
SdkTracerProvider.builder().setDefaultTracerConfig(TracerConfig.disabled()).build();

SdkTracer tracer = (SdkTracer) sdkTracerProvider.get("test");

assertThat(tracer.isEnabled()).isFalse();
}

@Test
void setDefaultTracerConfig_enabled() {
SdkTracerProvider sdkTracerProvider =
SdkTracerProvider.builder().setDefaultTracerConfig(TracerConfig.enabled()).build();

SdkTracer tracer = (SdkTracer) sdkTracerProvider.get("test");

assertThat(tracer.isEnabled()).isTrue();
}

@Test
void addSpanProcessorFirst() {
SpanProcessor firstProcessor = mock(SpanProcessor.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,16 @@ void defaultGet() {
assertThat(tracerProvider.get("test")).isInstanceOf(SdkTracer.class);
}

@Test
void noop() {
SdkTracerProvider tracerProvider = SdkTracerProvider.noop();

SdkTracer tracer = (SdkTracer) tracerProvider.get("test");

assertThat(tracer.isEnabled()).isFalse();
assertThat(tracer.spanBuilder("test").startSpan().isRecording()).isFalse();
}

@Test
void getSameInstanceForSameName_WithoutVersion() {
assertThat(tracerProvider.get("test")).isSameAs(tracerProvider.get("test"));
Expand Down
Loading