Skip to content

Commit 5b60d37

Browse files
committed
feat: add method to retrieve general instrumentation configuration by name
1 parent 85beb5c commit 5b60d37

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

api/incubator/src/main/java/io/opentelemetry/api/incubator/config/ConfigProvider.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,23 @@ default DeclarativeConfigProperties getJavaInstrumentationConfig(String name) {
4848
return config.getStructured("java", empty()).getStructured(name, empty());
4949
}
5050

51+
/**
52+
* Returns the {@link DeclarativeConfigProperties} for general instrumentation config by name. If
53+
* no configuration is available for the given name, an empty {@link DeclarativeConfigProperties}
54+
* is returned.
55+
*
56+
* @param name the name of the general instrumentation config
57+
* @return the {@link DeclarativeConfigProperties} for the given general instrumentation config
58+
* name
59+
*/
60+
default DeclarativeConfigProperties getGeneralInstrumentationConfig(String name) {
61+
DeclarativeConfigProperties config = getInstrumentationConfig();
62+
if (config == null) {
63+
return empty();
64+
}
65+
return config.getStructured("general", empty()).getStructured(name, empty());
66+
}
67+
5168
/** Returns a no-op {@link ConfigProvider}. */
5269
static ConfigProvider noop() {
5370
return () -> null;

api/incubator/src/test/java/io/opentelemetry/api/incubator/ConfigProviderTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,12 @@ void noopEquality() {
1717
ConfigProvider noop = ConfigProvider.noop();
1818
assertThat(ConfigProvider.noop()).isSameAs(noop);
1919
}
20+
21+
@Test
22+
void instrumentationConfigFallback() {
23+
ConfigProvider configProvider = ConfigProvider.noop();
24+
assertThat(configProvider.getInstrumentationConfig()).isNull();
25+
assertThat(configProvider.getJavaInstrumentationConfig("servlet")).isNotNull();
26+
assertThat(configProvider.getGeneralInstrumentationConfig("http")).isNotNull();
27+
}
2028
}

sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java

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

66
package io.opentelemetry.sdk.autoconfigure;
77

8+
import static io.opentelemetry.api.incubator.config.DeclarativeConfigProperties.empty;
89
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
910
import static java.util.Collections.singletonMap;
1011
import static org.assertj.core.api.Assertions.assertThatCode;
@@ -232,8 +233,14 @@ void configFile_ConfigProvider() {
232233
.isNotNull()
233234
.satisfies(exampleConfig -> assertThat(exampleConfig.getString("key")).isEqualTo("value"));
234235

235-
// shortcut to get specific instrumentation config
236+
// shortcuts to get specific instrumentation config
236237
assertThat(globalConfigProvider.getJavaInstrumentationConfig("example").getString("key"))
237238
.isEqualTo("value");
239+
assertThat(
240+
globalConfigProvider
241+
.getGeneralInstrumentationConfig("http")
242+
.getStructured("client", empty())
243+
.getScalarList("request_captured_headers", String.class))
244+
.isEqualTo(Arrays.asList("Content-Type", "Accept"));
238245
}
239246
}

0 commit comments

Comments
 (0)