Skip to content

Commit 7016788

Browse files
committed
add test
1 parent ba13421 commit 7016788

File tree

6 files changed

+86
-48
lines changed

6 files changed

+86
-48
lines changed

instrumentation/spring/spring-boot-autoconfigure/build.gradle.kts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -194,17 +194,10 @@ testing {
194194
}
195195

196196
val testDeclarativeConfig by registering(JvmTestSuite::class) {
197-
otelJava {
198-
minJavaVersionSupported.set(JavaVersion.VERSION_17)
199-
}
200197
dependencies {
201198
implementation(project())
202-
implementation("org.springframework.boot:spring-boot-starter-web:3.2.4")
203199
implementation("io.opentelemetry:opentelemetry-sdk")
204-
implementation(project(":instrumentation:spring:spring-web:spring-web-3.1:library"))
205-
implementation(project(":instrumentation:spring:spring-webmvc:spring-webmvc-6.0:library"))
206-
implementation("jakarta.servlet:jakarta.servlet-api:5.0.0")
207-
implementation("org.springframework.boot:spring-boot-starter-test:3.2.4") {
200+
implementation("org.springframework.boot:spring-boot-starter-test:$springBootVersion") {
208201
exclude("org.junit.vintage", "junit-vintage-engine")
209202
}
210203
}

instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfigurationTest.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,7 @@ void shouldInitializeSdkWhenNotDisabled() {
152152
.withConfiguration(AutoConfigurations.of(OpenTelemetryAutoConfiguration.class))
153153
.withPropertyValues("otel.sdk.disabled=false")
154154
.run(
155-
context -> {
156-
assertThat(context).getBean("openTelemetry").isInstanceOf(OpenTelemetrySdk.class);
157-
assertThat(context).hasBean("openTelemetry");
158-
});
155+
context -> assertThat(context).getBean("openTelemetry").isInstanceOf(OpenTelemetrySdk.class));
159156
}
160157

161158
@Test
Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,18 @@
88
import static org.assertj.core.api.Assertions.assertThat;
99

1010
import io.opentelemetry.api.OpenTelemetry;
11+
import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
1112
import io.opentelemetry.sdk.OpenTelemetrySdk;
1213
import org.junit.jupiter.api.DisplayName;
1314
import org.junit.jupiter.api.Test;
1415
import org.springframework.boot.autoconfigure.AutoConfigurations;
16+
import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer;
1517
import org.springframework.boot.test.context.TestConfiguration;
1618
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
1719
import org.springframework.context.annotation.Bean;
1820

1921
/** Spring Boot auto configuration test for {@link OpenTelemetryAutoConfiguration}. */
20-
class OpenTelemetryAutoConfigurationTest {
22+
class DeclarativeConfigTest {
2123
@TestConfiguration
2224
static class CustomTracerConfiguration {
2325
@Bean
@@ -26,15 +28,18 @@ public OpenTelemetry customOpenTelemetry() {
2628
}
2729
}
2830

29-
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner();
31+
private final ApplicationContextRunner contextRunner =
32+
new ApplicationContextRunner()
33+
.withConfiguration(AutoConfigurations.of(OpenTelemetryAutoConfiguration.class))
34+
// to load application.yaml
35+
.withInitializer(new ConfigDataApplicationContextInitializer());
3036

3137
@Test
3238
@DisplayName(
3339
"when Application Context contains OpenTelemetry bean should NOT initialize openTelemetry")
3440
void customOpenTelemetry() {
3541
this.contextRunner
3642
.withUserConfiguration(CustomTracerConfiguration.class)
37-
.withConfiguration(AutoConfigurations.of(OpenTelemetryAutoConfiguration.class))
3843
.run(
3944
context ->
4045
assertThat(context)
@@ -47,24 +52,35 @@ void customOpenTelemetry() {
4752
@DisplayName(
4853
"when Application Context DOES NOT contain OpenTelemetry bean should initialize openTelemetry")
4954
void initializeProvidersAndOpenTelemetry() {
50-
this.contextRunner
51-
.withConfiguration(AutoConfigurations.of(OpenTelemetryAutoConfiguration.class))
52-
.run(context -> assertThat(context).hasBean("openTelemetry").hasBean("otelProperties"));
55+
this.contextRunner.run(
56+
context ->
57+
assertThat(context)
58+
.hasBean("openTelemetry")
59+
.hasBean("otelProperties")
60+
.getBean(InstrumentationConfig.class)
61+
.isNotNull()
62+
.satisfies(
63+
c ->
64+
assertThat(c.getDeclarativeConfig("foo"))
65+
.isNotNull()
66+
.satisfies(
67+
instrumentationConfig ->
68+
assertThat(instrumentationConfig.getString("foo"))
69+
.isEqualTo("bar"))));
5370
}
5471

5572
@Test
5673
void shouldInitializeSdkWhenNotDisabled() {
5774
this.contextRunner
58-
.withConfiguration(AutoConfigurations.of(OpenTelemetryAutoConfiguration.class))
5975
.withPropertyValues("otel.sdk.disabled=false")
6076
.run(
61-
context -> assertThat(context).getBean("openTelemetry").isInstanceOf(OpenTelemetrySdk.class));
77+
context ->
78+
assertThat(context).getBean("openTelemetry").isInstanceOf(OpenTelemetrySdk.class));
6279
}
6380

6481
@Test
6582
void shouldInitializeNoopOpenTelemetryWhenSdkIsDisabled() {
6683
this.contextRunner
67-
.withConfiguration(AutoConfigurations.of(OpenTelemetryAutoConfiguration.class))
6884
.withPropertyValues(
6985
"otel.sdk.disabled=true",
7086
"otel.resource.attributes=service.name=workflow-backend-dev,service.version=3c8f9ce9")
Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,10 @@
11
otel:
22
# "file_format" serves as opt-in to the new file format
33
file_format: "0.4"
4-
tracer_provider:
5-
processors:
6-
- simple:
7-
exporter:
8-
test_bridge:
9-
- simple:
10-
exporter:
11-
console:
124

13-
logger_provider:
14-
processors:
15-
- simple:
16-
exporter:
17-
test_bridge:
18-
19-
meter_provider:
20-
readers:
21-
- periodic:
22-
# Set really long interval. We'll call forceFlush when we need the metrics
23-
# instead of collecting them periodically.
24-
interval: 1000000
25-
exporter:
26-
test_bridge:
27-
28-
resource:
29-
attributes:
30-
- name: foo
31-
value: bar
5+
# very lightweight test to make sure the declarative config is loaded
6+
# the full config is tested in smoke-tests-otel-starter/spring-boot-2/src/testDeclarativeConfig
7+
instrumentation/development:
8+
java:
9+
foo:
10+
bar: baz
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.spring.smoketest;
7+
8+
import org.springframework.boot.test.context.SpringBootTest;
9+
10+
@SpringBootTest(
11+
classes = {
12+
OtelSpringStarterSmokeTestApplication.class,
13+
AbstractOtelSpringStarterSmokeTest.TestConfiguration.class,
14+
SpringSmokeOtelConfiguration.class
15+
},
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.exporter.otlp.headers.c=3",
20+
"otel.instrumentation.runtime-telemetry.emit-experimental-telemetry=true",
21+
})
22+
class OtelSpringStarterSmokeTest extends AbstractOtelSpringStarterSmokeTest {}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
otel:
2+
# "file_format" serves as opt-in to the new file format
3+
file_format: "0.4"
4+
tracer_provider:
5+
processors:
6+
- simple:
7+
exporter:
8+
test_bridge:
9+
- simple:
10+
exporter:
11+
console:
12+
13+
logger_provider:
14+
processors:
15+
- simple:
16+
exporter:
17+
test_bridge:
18+
19+
meter_provider:
20+
readers:
21+
- periodic:
22+
# Set really long interval. We'll call forceFlush when we need the metrics
23+
# instead of collecting them periodically.
24+
interval: 1000000
25+
exporter:
26+
test_bridge:
27+
28+
resource:
29+
attributes:
30+
- name: foo
31+
value: bar

0 commit comments

Comments
 (0)