diff --git a/instrumentation/spring/spring-boot-autoconfigure-3/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/web/RestClientInstrumentationAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure-3/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/web/RestClientInstrumentationAutoConfiguration.java index cb1a7c18ac..90c1bd0fbf 100644 --- a/instrumentation/spring/spring-boot-autoconfigure-3/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/web/RestClientInstrumentationAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure-3/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/web/RestClientInstrumentationAutoConfiguration.java @@ -34,7 +34,7 @@ import org.springframework.web.client.RestClient; public class RestClientInstrumentationAutoConfiguration { @Bean - RestClientBeanPostProcessor otelRestClientBeanPostProcessor( + static RestClientBeanPostProcessor otelRestClientBeanPostProcessor( ObjectProvider openTelemetryProvider) { return new RestClientBeanPostProcessor(openTelemetryProvider); } diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/kafka/KafkaInstrumentationAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/kafka/KafkaInstrumentationAutoConfiguration.java index 92e9140ec7..8260b0a299 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/kafka/KafkaInstrumentationAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/kafka/KafkaInstrumentationAutoConfiguration.java @@ -33,6 +33,7 @@ public class KafkaInstrumentationAutoConfiguration { return producerFactory -> producerFactory.addPostProcessor(kafkaTelemetry::wrap); } + // static to avoid "is not eligible for getting processed by all BeanPostProcessors" warning @Bean static ConcurrentKafkaListenerContainerFactoryPostProcessor otelKafkaListenerContainerFactoryBeanPostProcessor( diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/web/SpringWebInstrumentationAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/web/SpringWebInstrumentationAutoConfiguration.java index 9e9e2e2189..b1eb08a0a8 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/web/SpringWebInstrumentationAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/web/SpringWebInstrumentationAutoConfiguration.java @@ -31,6 +31,7 @@ public class SpringWebInstrumentationAutoConfiguration { public SpringWebInstrumentationAutoConfiguration() {} + // static to avoid "is not eligible for getting processed by all BeanPostProcessors" warning @Bean static RestTemplateBeanPostProcessor otelRestTemplateBeanPostProcessor( ObjectProvider openTelemetryProvider) { @@ -38,7 +39,7 @@ public class SpringWebInstrumentationAutoConfiguration { } @Bean - static RestTemplateCustomizer otelRestTemplateCustomizer( + RestTemplateCustomizer otelRestTemplateCustomizer( ObjectProvider openTelemetryProvider) { return restTemplate -> RestTemplateInstrumentation.addIfNotPresent( diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/webflux/SpringWebfluxInstrumentationAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/webflux/SpringWebfluxInstrumentationAutoConfiguration.java index 1a950ead91..ac006b2d63 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/webflux/SpringWebfluxInstrumentationAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/instrumentation/webflux/SpringWebfluxInstrumentationAutoConfiguration.java @@ -30,6 +30,7 @@ public class SpringWebfluxInstrumentationAutoConfiguration { public SpringWebfluxInstrumentationAutoConfiguration() {} + // static to avoid "is not eligible for getting processed by all BeanPostProcessors" warning @Bean static WebClientBeanPostProcessor otelWebClientBeanPostProcessor( ObjectProvider openTelemetryProvider) { diff --git a/smoke-tests-otel-starter/build.gradle.kts b/smoke-tests-otel-starter/build.gradle.kts index 27a7f72fd6..c3fabb2dd9 100644 --- a/smoke-tests-otel-starter/build.gradle.kts +++ b/smoke-tests-otel-starter/build.gradle.kts @@ -16,6 +16,8 @@ dependencies { implementation("com.h2database:h2") implementation("org.apache.commons:commons-dbcp2") implementation(project(":instrumentation:jdbc:library")) + implementation("org.springframework.kafka:spring-kafka") // not tested here, just make sure there are no warnings when it's included + implementation("org.springframework.boot:spring-boot-starter-webflux") // not tested here, just make sure there are no warnings when it's included implementation("io.opentelemetry:opentelemetry-extension-trace-propagators") implementation(project(":instrumentation:spring:starters:spring-boot-starter")) implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)) @@ -25,6 +27,10 @@ dependencies { } tasks { + test { + // suppress warning about byte-buddy-agent being loaded dynamically + jvmArgs("-XX:+EnableDynamicAgentLoading") + } compileAotJava { with(options) { compilerArgs.add("-Xlint:-deprecation,-unchecked,none") diff --git a/smoke-tests-otel-starter/src/test/java/io/opentelemetry/smoketest/OtelSpringStarterSmokeTest.java b/smoke-tests-otel-starter/src/test/java/io/opentelemetry/smoketest/OtelSpringStarterSmokeTest.java index 816c2c2e4b..45f6f0a9a0 100644 --- a/smoke-tests-otel-starter/src/test/java/io/opentelemetry/smoketest/OtelSpringStarterSmokeTest.java +++ b/smoke-tests-otel-starter/src/test/java/io/opentelemetry/smoketest/OtelSpringStarterSmokeTest.java @@ -48,19 +48,24 @@ import org.assertj.core.api.AbstractCharSequenceAssert; import org.awaitility.core.ConditionEvaluationLogger; import org.awaitility.core.EvaluatedCondition; import org.awaitility.core.TimeoutEvent; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.api.extension.ExtendWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.system.CapturedOutput; +import org.springframework.boot.test.system.OutputCaptureExtension; import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; import org.springframework.core.env.Environment; +@ExtendWith(OutputCaptureExtension.class) @SpringBootTest( classes = { OtelSpringStarterSmokeTestApplication.class, @@ -176,6 +181,11 @@ class OtelSpringStarterSmokeTest { LOG_RECORD_EXPORTER.reset(); } + @AfterEach + void tearDown(CapturedOutput output) { + assertThat(output).doesNotContain("WARN").doesNotContain("ERROR"); + } + @Test @org.junit.jupiter.api.Order(10) void propertyConversion() {