Skip to content

Commit cf2ac06

Browse files
committed
add spring boot distro version
1 parent 9e208c8 commit cf2ac06

File tree

3 files changed

+87
-0
lines changed

3 files changed

+87
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.resources;
7+
8+
import io.opentelemetry.api.common.AttributeKey;
9+
import io.opentelemetry.api.common.Attributes;
10+
import io.opentelemetry.instrumentation.api.internal.EmbeddedInstrumentationProperties;
11+
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
12+
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
13+
import io.opentelemetry.sdk.resources.Resource;
14+
15+
public class DistroVersionResourceProvider implements ResourceProvider {
16+
17+
public static final String VERSION =
18+
EmbeddedInstrumentationProperties.findVersion("io.opentelemetry.spring-boot-autoconfigure");
19+
20+
private static final AttributeKey<String> TELEMETRY_DISTRO_NAME =
21+
AttributeKey.stringKey("telemetry.distro.name");
22+
private static final AttributeKey<String> TELEMETRY_DISTRO_VERSION =
23+
AttributeKey.stringKey("telemetry.distro.version");
24+
25+
@Override
26+
public Resource createResource(ConfigProperties config) {
27+
return Resource.create(
28+
Attributes.of(
29+
TELEMETRY_DISTRO_NAME,
30+
"opentelemetry-spring-boot-starter",
31+
TELEMETRY_DISTRO_VERSION,
32+
VERSION));
33+
}
34+
}

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/resources/OtelResourceAutoConfiguration.java

+5
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ public ResourceProvider otelResourceProvider(
3737
return new SpringResourceProvider(otelSpringResourceProperties, otelResourceProperties);
3838
}
3939

40+
@Bean
41+
public ResourceProvider otelDistroVersionResourceProvider() {
42+
return new DistroVersionResourceProvider();
43+
}
44+
4045
@Bean
4146
@ConditionalOnClass(OsResource.class)
4247
public ResourceProvider otelOsResourceProvider() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.resources;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
10+
import com.google.common.collect.ImmutableMap;
11+
import io.opentelemetry.api.common.AttributeKey;
12+
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
13+
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
14+
import org.junit.jupiter.api.DisplayName;
15+
import org.junit.jupiter.api.Test;
16+
import org.springframework.boot.autoconfigure.AutoConfigurations;
17+
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
18+
19+
public class DistroVersionResourceProviderTest {
20+
private final ApplicationContextRunner contextRunner =
21+
new ApplicationContextRunner()
22+
.withConfiguration(AutoConfigurations.of(OtelResourceAutoConfiguration.class));
23+
24+
@Test
25+
@DisplayName("distro version should be set")
26+
void hasAttributes() {
27+
28+
this.contextRunner.run(
29+
context -> {
30+
ResourceProvider resource =
31+
context.getBean("otelDistroVersionResourceProvider", ResourceProvider.class);
32+
33+
assertThat(
34+
resource
35+
.createResource(DefaultConfigProperties.createFromMap(ImmutableMap.of()))
36+
.getAttributes()
37+
.asMap())
38+
.containsEntry(
39+
AttributeKey.stringKey("telemetry.distro.name"),
40+
"opentelemetry-spring-boot-starter")
41+
.anySatisfy(
42+
(key, val) -> {
43+
assertThat(key.getKey()).isEqualTo("telemetry.distro.version");
44+
assertThat(val).asString().matches("\\d\\.\\d\\.\\d-alpha-SNAPSHOT");
45+
});
46+
});
47+
}
48+
}

0 commit comments

Comments
 (0)