11package io.sentry.spring.boot.jakarta
22
3+ import io.sentry.opentelemetry.SentryAutoConfigurationCustomizerProvider
34import io.sentry.spring.jakarta.kafka.SentryKafkaConsumerBeanPostProcessor
45import io.sentry.spring.jakarta.kafka.SentryKafkaProducerBeanPostProcessor
56import kotlin.test.Test
67import org.assertj.core.api.Assertions.assertThat
78import org.springframework.boot.autoconfigure.AutoConfigurations
9+ import org.springframework.boot.test.context.FilteredClassLoader
810import org.springframework.boot.test.context.runner.ApplicationContextRunner
911
1012class SentryKafkaAutoConfigurationTest {
@@ -24,25 +26,43 @@ class SentryKafkaAutoConfigurationTest {
2426 " sentry.debug=false" ,
2527 )
2628
29+ /* * Hide the OTel customizer so conditions evaluate as "no OTel present". */
30+ private val noOtelClassLoader =
31+ FilteredClassLoader (SentryAutoConfigurationCustomizerProvider ::class .java)
32+
2733 @Test
2834 fun `registers Kafka BPPs when queue tracing is enabled` () {
29- contextRunner.withPropertyValues(" sentry.enable-queue-tracing=true" ).run { context ->
30- assertThat(context).hasSingleBean(SentryKafkaProducerBeanPostProcessor ::class .java)
31- assertThat(context).hasSingleBean(SentryKafkaConsumerBeanPostProcessor ::class .java)
32- }
35+ contextRunner
36+ .withClassLoader(noOtelClassLoader)
37+ .withPropertyValues(" sentry.enable-queue-tracing=true" )
38+ .run { context ->
39+ assertThat(context).hasSingleBean(SentryKafkaProducerBeanPostProcessor ::class .java)
40+ assertThat(context).hasSingleBean(SentryKafkaConsumerBeanPostProcessor ::class .java)
41+ }
3342 }
3443
3544 @Test
3645 fun `does not register Kafka BPPs when queue tracing is disabled` () {
37- contextRunner.run { context ->
46+ contextRunner.withClassLoader(noOtelClassLoader). run { context ->
3847 assertThat(context).doesNotHaveBean(SentryKafkaProducerBeanPostProcessor ::class .java)
3948 assertThat(context).doesNotHaveBean(SentryKafkaConsumerBeanPostProcessor ::class .java)
4049 }
4150 }
4251
4352 @Test
4453 fun `does not register Kafka BPPs when queue tracing is explicitly false` () {
45- contextRunner.withPropertyValues(" sentry.enable-queue-tracing=false" ).run { context ->
54+ contextRunner
55+ .withClassLoader(noOtelClassLoader)
56+ .withPropertyValues(" sentry.enable-queue-tracing=false" )
57+ .run { context ->
58+ assertThat(context).doesNotHaveBean(SentryKafkaProducerBeanPostProcessor ::class .java)
59+ assertThat(context).doesNotHaveBean(SentryKafkaConsumerBeanPostProcessor ::class .java)
60+ }
61+ }
62+
63+ @Test
64+ fun `does not register Kafka BPPs when OpenTelemetry integration is present` () {
65+ contextRunner.withPropertyValues(" sentry.enable-queue-tracing=true" ).run { context ->
4666 assertThat(context).doesNotHaveBean(SentryKafkaProducerBeanPostProcessor ::class .java)
4767 assertThat(context).doesNotHaveBean(SentryKafkaConsumerBeanPostProcessor ::class .java)
4868 }
0 commit comments