Skip to content

Commit 8baa7f2

Browse files
committed
don't init kafka in other tests
1 parent 94626ff commit 8baa7f2

File tree

4 files changed

+43
-36
lines changed

4 files changed

+43
-36
lines changed

smoke-tests-otel-starter/spring-boot-3/build.gradle.kts

+1-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ dependencies {
1616
runtimeOnly("com.h2database:h2")
1717
implementation("org.apache.commons:commons-dbcp2")
1818
implementation(project(":instrumentation:jdbc:library"))
19-
implementation("org.springframework.kafka:spring-kafka") // not tested here, just make sure there are no warnings when it's included
20-
implementation("org.springframework.kafka:spring-kafka:2.9.0")
19+
implementation("org.springframework.kafka:spring-kafka")
2120
implementation("io.opentelemetry:opentelemetry-extension-trace-propagators")
2221
implementation(project(":instrumentation:spring:starters:spring-boot-starter"))
2322
implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))

smoke-tests-otel-starter/spring-boot-3/src/main/java/io/opentelemetry/spring/smoketest/KafkaConfig.java

-14
This file was deleted.

smoke-tests-otel-starter/spring-boot-3/src/main/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTestController.java

-11
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,9 @@
88
import io.opentelemetry.api.OpenTelemetry;
99
import io.opentelemetry.api.metrics.LongHistogram;
1010
import io.opentelemetry.api.metrics.Meter;
11-
import io.opentelemetry.api.trace.SpanKind;
1211
import java.util.Optional;
13-
import org.apache.kafka.clients.consumer.ConsumerRecord;
1412
import org.springframework.boot.web.client.RestTemplateBuilder;
1513
import org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext;
16-
import org.springframework.kafka.annotation.KafkaListener;
1714
import org.springframework.web.bind.annotation.GetMapping;
1815
import org.springframework.web.bind.annotation.RestController;
1916
import org.springframework.web.client.RestClient;
@@ -31,14 +28,12 @@ public class OtelSpringStarterSmokeTestController {
3128
private final LongHistogram histogram;
3229
private final Optional<RestTemplate> restTemplate;
3330
private final Optional<RestClient> restClient;
34-
private final OpenTelemetry openTelemetry;
3531

3632
public OtelSpringStarterSmokeTestController(
3733
OpenTelemetry openTelemetry,
3834
RestClient.Builder restClientBuilder,
3935
RestTemplateBuilder restTemplateBuilder,
4036
Optional<ServletWebServerApplicationContext> server) {
41-
this.openTelemetry = openTelemetry;
4237
Meter meter = openTelemetry.getMeter(METER_SCOPE_NAME);
4338
histogram = meter.histogramBuilder(TEST_HISTOGRAM).ofLongs().build();
4439
Optional<String> rootUri = server.map(s -> "http://localhost:" + s.getWebServer().getPort());
@@ -65,10 +60,4 @@ public String restTemplate() {
6560
.map(t -> t.getForObject(PING, String.class))
6661
.orElseThrow(() -> new IllegalStateException("RestTemplate not available"));
6762
}
68-
69-
@KafkaListener(id = "testListener", topics = "testTopic")
70-
public void listener(ConsumerRecord<String, String> record) {
71-
openTelemetry.getTracer("consumer", "1.0").spanBuilder("consumer").setSpanKind(SpanKind.CONSUMER)
72-
.startSpan().end();
73-
}
7463
}

smoke-tests-otel-starter/spring-boot-3/src/test/java/io/opentelemetry/smoketest/KafkaSpringStarterSmokeTest.java

+42-9
Original file line numberDiff line numberDiff line change
@@ -8,43 +8,55 @@
88
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
99
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;
1010

11+
import io.opentelemetry.api.OpenTelemetry;
1112
import io.opentelemetry.api.trace.SpanKind;
1213
import io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes;
1314
import io.opentelemetry.spring.smoketest.AbstractSpringStarterSmokeTest;
1415
import io.opentelemetry.spring.smoketest.OtelSpringStarterSmokeTestApplication;
1516
import io.opentelemetry.spring.smoketest.SpringSmokeOtelConfiguration;
17+
import java.time.Duration;
18+
import org.apache.kafka.clients.admin.NewTopic;
19+
import org.apache.kafka.clients.consumer.ConsumerRecord;
1620
import org.assertj.core.api.AbstractLongAssert;
1721
import org.assertj.core.api.AbstractStringAssert;
1822
import org.junit.jupiter.api.Test;
1923
import org.springframework.beans.factory.annotation.Autowired;
2024
import org.springframework.boot.test.context.SpringBootTest;
2125
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
26+
import org.springframework.context.annotation.Bean;
27+
import org.springframework.context.annotation.Configuration;
28+
import org.springframework.kafka.annotation.KafkaListener;
29+
import org.springframework.kafka.config.TopicBuilder;
2230
import org.springframework.kafka.core.KafkaTemplate;
2331
import org.testcontainers.containers.KafkaContainer;
2432
import org.testcontainers.containers.wait.strategy.Wait;
2533
import org.testcontainers.junit.jupiter.Container;
2634
import org.testcontainers.junit.jupiter.Testcontainers;
2735
import org.testcontainers.utility.DockerImageName;
28-
import java.time.Duration;
2936

3037
@Testcontainers
3138
@SpringBootTest(
32-
classes = {OtelSpringStarterSmokeTestApplication.class, SpringSmokeOtelConfiguration.class},
33-
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = {
39+
classes = {
40+
OtelSpringStarterSmokeTestApplication.class,
41+
SpringSmokeOtelConfiguration.class,
42+
KafkaSpringStarterSmokeTest.KafkaConfig.class
43+
},
44+
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
45+
properties = {
3446
"spring.kafka.consumer.auto-offset-reset=earliest",
3547
"spring.kafka.consumer.linger-ms=10",
3648
"spring.kafka.admin.operation-timeout=5m",
3749
"spring.kafka.listener.idle-between-polls=1000",
3850
"spring.kafka.producer.transaction-id-prefix=test-"
39-
40-
})
51+
})
4152
public class KafkaSpringStarterSmokeTest extends AbstractSpringStarterSmokeTest {
4253

4354
@Container @ServiceConnection
44-
static KafkaContainer kafka = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:6.2.10"))
45-
.withEnv("KAFKA_HEAP_OPTS", "-Xmx256m")
46-
.waitingFor(Wait.forLogMessage(".*started \\(kafka.server.KafkaServer\\).*", 1))
47-
.withStartupTimeout(Duration.ofMinutes(1));
55+
static KafkaContainer kafka =
56+
new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:6.2.10"))
57+
.withEnv("KAFKA_HEAP_OPTS", "-Xmx256m")
58+
.waitingFor(Wait.forLogMessage(".*started \\(kafka.server.KafkaServer\\).*", 1))
59+
.withStartupTimeout(Duration.ofMinutes(1));
4860

4961
@Autowired private KafkaTemplate<String, String> kafkaTemplate;
5062

@@ -119,4 +131,25 @@ void shouldInstrumentProducerAndConsumer() {
119131
stringAssert -> stringAssert.startsWith("consumer"))),
120132
span -> span.hasName("consumer").hasParent(trace.getSpan(2))));
121133
}
134+
135+
@Configuration
136+
public static class KafkaConfig {
137+
138+
@Autowired OpenTelemetry openTelemetry;
139+
140+
@Bean
141+
public NewTopic testTopic() {
142+
return TopicBuilder.name("testTopic").partitions(1).replicas(1).build();
143+
}
144+
145+
@KafkaListener(id = "testListener", topics = "testTopic")
146+
public void listener(ConsumerRecord<String, String> record) {
147+
openTelemetry
148+
.getTracer("consumer", "1.0")
149+
.spanBuilder("consumer")
150+
.setSpanKind(SpanKind.CONSUMER)
151+
.startSpan()
152+
.end();
153+
}
154+
}
122155
}

0 commit comments

Comments
 (0)