Skip to content

Commit f24a8c6

Browse files
committed
add test
1 parent ae2d347 commit f24a8c6

File tree

4 files changed

+48
-10
lines changed

4 files changed

+48
-10
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ testing {
4141
dependencies {
4242
implementation(project())
4343
implementation(project(":smoke-tests-otel-starter:spring-boot-common"))
44+
implementation("org.springframework.boot:spring-boot-starter-web:2.6.15")
4445
implementation("org.springframework.boot:spring-boot-starter-test:2.6.15")
4546
}
4647
}

smoke-tests-otel-starter/spring-boot-2/src/testDeclarativeConfig/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTest.java

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,41 @@
55

66
package io.opentelemetry.spring.smoketest;
77

8+
import io.opentelemetry.api.trace.SpanKind;
9+
import io.opentelemetry.semconv.HttpAttributes;
10+
import org.junit.jupiter.api.Test;
11+
import org.springframework.beans.factory.annotation.Autowired;
12+
import org.springframework.beans.factory.annotation.Value;
813
import org.springframework.boot.test.context.SpringBootTest;
14+
import org.springframework.boot.web.client.RestTemplateBuilder;
915

1016
@SpringBootTest(
1117
classes = {
1218
OtelSpringStarterSmokeTestApplication.class,
1319
AbstractOtelSpringStarterSmokeTest.TestConfiguration.class,
1420
SpringSmokeOtelConfiguration.class
1521
},
16-
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
17-
properties = {
18-
// The headers are simply set here to make sure that headers can be parsed
19-
"otel.instrumentation.runtime-telemetry.emit-experimental-telemetry=true", // todo to file config
20-
})
21-
class OtelSpringStarterSmokeTest extends AbstractOtelSpringStarterSmokeTest {}
22+
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
23+
class OtelSpringStarterSmokeTest extends AbstractSpringStarterSmokeTest {
24+
25+
@Autowired private RestTemplateBuilder restTemplateBuilder;
26+
27+
// can't use @LocalServerPort annotation since it moved packages between Spring Boot 2 and 3
28+
@Value("${local.server.port}")
29+
private int port;
30+
31+
@Test
32+
void restTemplate() {
33+
testing.clearAllExportedData();
34+
35+
org.springframework.web.client.RestTemplate restTemplate = restTemplateBuilder.rootUri("http://localhost:" + port).build();
36+
restTemplate.getForObject(OtelSpringStarterSmokeTestController.PING, String.class);
37+
testing.waitAndAssertTraces(
38+
traceAssert ->
39+
traceAssert.hasSpansSatisfyingExactly(
40+
span -> HttpSpanDataAssert.create(span).assertClientGetRequest("/ping"),
41+
span ->
42+
span.hasKind(SpanKind.SERVER).hasAttribute(HttpAttributes.HTTP_ROUTE, "/ping"),
43+
AbstractSpringStarterSmokeTest::withSpanAssert));
44+
}
45+
}

smoke-tests-otel-starter/spring-boot-2/src/testDeclarativeConfig/resources/application.yaml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,25 @@ otel:
55
processors:
66
- simple:
77
exporter:
8-
otlp_http:
8+
test_bridge:
9+
- simple:
10+
exporter:
11+
console:
912

1013
logger_provider:
1114
processors:
1215
- simple:
1316
exporter:
14-
otlp_http:
17+
test_bridge:
1518

1619
meter_provider:
1720
readers:
1821
- periodic:
19-
interval: 1000
22+
# Set really long interval. We'll call forceFlush when we need the metrics
23+
# instead of collecting them periodically.
24+
interval: 1000000
2025
exporter:
21-
otlp_http:
26+
test_bridge:
2227

2328
resource:
2429
attributes:

smoke-tests-otel-starter/spring-smoke-testing/src/main/java/io/opentelemetry/spring/smoketest/SpringSmokeTestRunner.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77

88
import io.opentelemetry.api.OpenTelemetry;
99
import io.opentelemetry.instrumentation.testing.InstrumentationTestRunner;
10+
import io.opentelemetry.instrumentation.testing.provider.TestBridgeLogRecordExporterComponentProvider;
11+
import io.opentelemetry.instrumentation.testing.provider.TestBridgeMetricExporterComponentProvider;
12+
import io.opentelemetry.instrumentation.testing.provider.TestBridgeSpanExporterComponentProvider;
1013
import io.opentelemetry.sdk.logs.data.LogRecordData;
1114
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
1215
import io.opentelemetry.sdk.metrics.data.MetricData;
@@ -36,6 +39,11 @@ static void resetExporters() {
3639
testSpanExporter = InMemorySpanExporter.create();
3740
testMetricExporter = InMemoryMetricExporter.create(AggregationTemporality.DELTA);
3841
testLogRecordExporter = InMemoryLogRecordExporter.create();
42+
43+
// for declarative config
44+
TestBridgeLogRecordExporterComponentProvider.setLogRecordExporter(testLogRecordExporter);
45+
TestBridgeMetricExporterComponentProvider.setMetricExporter(testMetricExporter);
46+
TestBridgeSpanExporterComponentProvider.setSpanExporter(testSpanExporter);
3947
}
4048

4149
@Override

0 commit comments

Comments
 (0)