|
31 | 31 | import java.io.ByteArrayInputStream; |
32 | 32 | import java.nio.charset.StandardCharsets; |
33 | 33 | import java.util.Arrays; |
| 34 | +import java.util.concurrent.atomic.AtomicInteger; |
34 | 35 | import org.junit.jupiter.api.BeforeEach; |
35 | 36 | import org.junit.jupiter.api.Test; |
36 | 37 |
|
@@ -111,6 +112,32 @@ void instrumentationConfig() { |
111 | 112 | .isEqualTo(Arrays.asList("client-request-header1", "client-request-header2")); |
112 | 113 | } |
113 | 114 |
|
| 115 | + @Test |
| 116 | + void close_shutsDownConfigProvider() { |
| 117 | + String configYaml = |
| 118 | + "instrumentation/development:\n" |
| 119 | + + " general:\n" |
| 120 | + + " http:\n" |
| 121 | + + " enabled: \"false\""; |
| 122 | + SdkConfigProvider configProvider = |
| 123 | + SdkConfigProvider.create( |
| 124 | + DeclarativeConfiguration.toConfigProperties( |
| 125 | + new ByteArrayInputStream(configYaml.getBytes(StandardCharsets.UTF_8)))); |
| 126 | + ExtendedOpenTelemetrySdk sdk = |
| 127 | + ExtendedOpenTelemetrySdk.create(OpenTelemetrySdk.builder().build(), configProvider); |
| 128 | + |
| 129 | + AtomicInteger callbackCount = new AtomicInteger(); |
| 130 | + configProvider.addConfigChangeListener( |
| 131 | + ".instrumentation/development.general.http", |
| 132 | + (path, newConfig) -> callbackCount.incrementAndGet()); |
| 133 | + |
| 134 | + sdk.close(); |
| 135 | + |
| 136 | + configProvider.setConfigProperty( |
| 137 | + ".instrumentation/development.general.http", "enabled", "true"); |
| 138 | + assertThat(callbackCount.get()).isEqualTo(0); |
| 139 | + } |
| 140 | + |
114 | 141 | @Test |
115 | 142 | void instrumentationConfigFallback() { |
116 | 143 | ConfigProvider configProvider = ConfigProvider.noop(); |
|
0 commit comments