Skip to content

Commit 7777751

Browse files
committed
add system properties bridge
1 parent d1b365f commit 7777751

File tree

3 files changed

+44
-7
lines changed

3 files changed

+44
-7
lines changed

instrumentation-api/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ dependencies {
2222
testImplementation("io.opentelemetry.javaagent:opentelemetry-testing-common")
2323
testImplementation("io.opentelemetry:opentelemetry-sdk-testing")
2424
testImplementation("io.opentelemetry:opentelemetry-exporter-common")
25+
testImplementation("io.opentelemetry:opentelemetry-sdk-extension-incubator")
2526
testImplementation("org.junit-pioneer:junit-pioneer")
2627

2728
jmhImplementation(project(":instrumentation-api-incubator"))

instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/ConfigPropertiesUtil.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.api.internal;
77

8+
import static io.opentelemetry.api.incubator.config.DeclarativeConfigProperties.empty;
9+
810
import io.opentelemetry.api.OpenTelemetry;
911
import io.opentelemetry.api.incubator.ExtendedOpenTelemetry;
1012
import io.opentelemetry.api.incubator.config.ConfigProvider;
@@ -15,8 +17,6 @@
1517
import java.util.stream.Collectors;
1618
import javax.annotation.Nullable;
1719

18-
import static io.opentelemetry.api.incubator.config.DeclarativeConfigProperties.empty;
19-
2020
/**
2121
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
2222
* any time.
@@ -40,9 +40,12 @@ private static boolean isIncubator() {
4040
}
4141

4242
/**
43-
* @deprecated use {@link #getBoolean(OpenTelemetry, boolean, String...)} instead
43+
* Returns the boolean value of the given property name from system properties and environment
44+
* variables.
45+
*
46+
* <p>It's recommended to use {@link #getBoolean(OpenTelemetry, boolean, String...)} instead to
47+
* support Declarative Config.
4448
*/
45-
@Deprecated
4649
public static boolean getBoolean(String propertyName, boolean defaultValue) {
4750
String strValue = getString(propertyName);
4851
return strValue == null ? defaultValue : Boolean.parseBoolean(strValue);
@@ -54,7 +57,6 @@ public static boolean getBoolean(String propertyName, boolean defaultValue) {
5457
*/
5558
public static boolean getBoolean(
5659
OpenTelemetry openTelemetry, boolean defaultValue, String... propertyName) {
57-
5860
DeclarativeConfigProperties node = getDeclarativeConfigNode(openTelemetry, propertyName);
5961
if (node != null) {
6062
return node.getBoolean(propertyName[propertyName.length - 1], defaultValue);
@@ -127,8 +129,9 @@ private static DeclarativeConfigProperties getDeclarativeConfigNode(
127129
return null;
128130
}
129131

130-
private static String toSystemProperty(String[] propertyName) {
131-
return String.join(".", propertyName).replace('_', '-');
132+
// Visible for testing
133+
static String toSystemProperty(String[] propertyName) {
134+
return "otel.instrumentation." + String.join(".", propertyName).replace('_', '-');
132135
}
133136

134137
private ConfigPropertiesUtil() {}

instrumentation-api/src/test/java/io/opentelemetry/instrumentation/api/internal/ConfigPropertiesUtilTest.java

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

88
import static org.assertj.core.api.Assertions.assertThat;
99

10+
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration;
11+
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationBuilder;
12+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationModel;
13+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.InstrumentationModel;
14+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
15+
import java.util.Collections;
1016
import org.junit.jupiter.api.Test;
1117
import org.junitpioneer.jupiter.SetEnvironmentVariable;
1218
import org.junitpioneer.jupiter.SetSystemProperty;
@@ -72,4 +78,31 @@ void getBoolean_environmentVariable() {
7278
void getBoolean_none() {
7379
assertThat(ConfigPropertiesUtil.getBoolean("test.property.boolean", false)).isFalse();
7480
}
81+
82+
@Test
83+
void getBoolean_declarativeConfig() {
84+
assertThat(
85+
ConfigPropertiesUtil.getBoolean(
86+
DeclarativeConfiguration.create(model(true)), false, "foo", "bar"))
87+
.isTrue();
88+
}
89+
90+
private static OpenTelemetryConfigurationModel model(Object value) {
91+
return new DeclarativeConfigurationBuilder()
92+
.customizeModel(
93+
new OpenTelemetryConfigurationModel()
94+
.withFileFormat("1.0-rc.1")
95+
.withInstrumentationDevelopment(
96+
new InstrumentationModel()
97+
.withJava(
98+
new ExperimentalLanguageSpecificInstrumentationModel()
99+
.withAdditionalProperty(
100+
"foo", Collections.singletonMap("bar", value)))));
101+
}
102+
103+
@Test
104+
void toSystemProperty() {
105+
assertThat(ConfigPropertiesUtil.toSystemProperty(new String[] {"a_b", "c", "d"}))
106+
.isEqualTo("otel.instrumentation.a-b.c.d");
107+
}
75108
}

0 commit comments

Comments
 (0)