Skip to content

Commit

Permalink
Support otel.sdk.disabled in the spring boot starter (#8602)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mateusz Rzeszutek authored Jun 1, 2023
1 parent ae1b0eb commit 2c06c00
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import java.util.List;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand All @@ -48,7 +49,8 @@ public OpenTelemetryAutoConfiguration() {}

@Configuration
@ConditionalOnMissingBean(OpenTelemetry.class)
public static class OpenTelemetryBeanConfig {
@ConditionalOnProperty(name = "otel.sdk.disabled", havingValue = "false", matchIfMissing = true)
public static class OpenTelemetrySdkConfig {

@Bean
@ConditionalOnMissingBean
Expand Down Expand Up @@ -122,4 +124,15 @@ public OpenTelemetry openTelemetry(
.build();
}
}

@Configuration
@ConditionalOnMissingBean(OpenTelemetry.class)
@ConditionalOnProperty(name = "otel.sdk.disabled", havingValue = "true")
public static class DisabledOpenTelemetrySdkConfig {

@Bean
public OpenTelemetry openTelemetry() {
return OpenTelemetry.noop();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.instrumentation.spring.autoconfigure.resources.OtelResourceAutoConfiguration;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
Expand Down Expand Up @@ -156,4 +157,33 @@ void shouldInitializeAttributes() {
.isEqualTo("id-example");
});
}

@Test
void shouldInitializeSdkWhenNotDisabled() {
this.contextRunner
.withConfiguration(AutoConfigurations.of(OpenTelemetryAutoConfiguration.class))
.withPropertyValues("otel.sdk.disabled=false")
.run(
context -> {
assertThat(context).getBean("openTelemetry").isInstanceOf(OpenTelemetrySdk.class);
assertThat(context)
.hasBean("openTelemetry")
.hasBean("sdkTracerProvider")
.hasBean("sdkMeterProvider");
});
}

@Test
void shouldInitializeNoopOpenTelemetryWhenSdkIsDisabled() {
this.contextRunner
.withConfiguration(AutoConfigurations.of(OpenTelemetryAutoConfiguration.class))
.withPropertyValues("otel.sdk.disabled=true")
.run(
context -> {
assertThat(context).getBean("openTelemetry").isEqualTo(OpenTelemetry.noop());
assertThat(context)
.doesNotHaveBean("sdkTracerProvider")
.doesNotHaveBean("sdkMeterProvider");
});
}
}

0 comments on commit 2c06c00

Please sign in to comment.