Skip to content

Commit 8dc1e03

Browse files
feat: always return ExtendedOpenTelemetry when incubator is available (#7991)
Co-authored-by: Jack Berg <johnmberg8@gmail.com>
1 parent d6e7e6e commit 8dc1e03

17 files changed

Lines changed: 298 additions & 183 deletions

File tree

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.opentelemetry.api.GlobalOpenTelemetry;
1313
import io.opentelemetry.api.OpenTelemetry;
1414
import io.opentelemetry.api.incubator.config.ConfigProvider;
15+
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
1516
import io.opentelemetry.api.incubator.logs.ExtendedDefaultLoggerProvider;
1617
import io.opentelemetry.api.incubator.logs.ExtendedLogger;
1718
import io.opentelemetry.api.incubator.metrics.ExtendedDefaultMeterProvider;
@@ -24,10 +25,9 @@
2425
import io.opentelemetry.api.trace.TracerProvider;
2526
import io.opentelemetry.context.propagation.ContextPropagators;
2627
import io.opentelemetry.sdk.OpenTelemetrySdk;
27-
import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk;
2828
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration;
29-
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
30-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
29+
import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk;
30+
import io.opentelemetry.sdk.internal.SdkConfigProvider;
3131
import java.io.ByteArrayInputStream;
3232
import java.nio.charset.StandardCharsets;
3333
import java.util.Arrays;
@@ -67,7 +67,7 @@ void globalOpenTelemetry() {
6767
GlobalOpenTelemetry.set(
6868
ExtendedOpenTelemetrySdk.create(
6969
OpenTelemetrySdk.builder().build(),
70-
SdkConfigProvider.create(new OpenTelemetryConfigurationModel())));
70+
SdkConfigProvider.create(DeclarativeConfigProperties.empty())));
7171
assertThat(GlobalOpenTelemetry.get()).isInstanceOf(ExtendedOpenTelemetry.class);
7272
}
7373

@@ -92,10 +92,10 @@ void instrumentationConfig() {
9292
+ " example:\n"
9393
+ " property: \"value\"";
9494

95-
OpenTelemetryConfigurationModel configuration =
96-
DeclarativeConfiguration.parse(
97-
new ByteArrayInputStream(configYaml.getBytes(StandardCharsets.UTF_8)));
98-
SdkConfigProvider configProvider = SdkConfigProvider.create(configuration);
95+
SdkConfigProvider configProvider =
96+
SdkConfigProvider.create(
97+
DeclarativeConfiguration.toConfigProperties(
98+
new ByteArrayInputStream(configYaml.getBytes(StandardCharsets.UTF_8))));
9999
ExtendedOpenTelemetry openTelemetry =
100100
ExtendedOpenTelemetrySdk.create(OpenTelemetrySdk.builder().build(), configProvider);
101101

api/incubator/src/test/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtilTest.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@
99

1010
import com.google.common.collect.ImmutableMap;
1111
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration;
12-
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
1312
import io.opentelemetry.sdk.extension.incubator.fileconfig.YamlDeclarativeConfigProperties;
14-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
13+
import io.opentelemetry.sdk.internal.SdkConfigProvider;
1514
import java.io.ByteArrayInputStream;
1615
import java.nio.charset.StandardCharsets;
1716
import java.util.Arrays;
@@ -61,10 +60,9 @@ class InstrumentationConfigUtilTest {
6160
toConfigProvider("instrumentation/development:\n general:\n http:\n");
6261

6362
private static ConfigProvider toConfigProvider(String configYaml) {
64-
OpenTelemetryConfigurationModel configuration =
65-
DeclarativeConfiguration.parse(
66-
new ByteArrayInputStream(configYaml.getBytes(StandardCharsets.UTF_8)));
67-
return SdkConfigProvider.create(configuration);
63+
return SdkConfigProvider.create(
64+
DeclarativeConfiguration.toConfigProperties(
65+
new ByteArrayInputStream(configYaml.getBytes(StandardCharsets.UTF_8))));
6866
}
6967

7068
@Test

api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
1616
import io.opentelemetry.api.incubator.config.InstrumentationConfigUtil;
1717
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration;
18-
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
1918
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalInstrumentationModel;
2019
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationModel;
2120
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationPropertyModel;
2221
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
22+
import io.opentelemetry.sdk.internal.SdkConfigProvider;
2323
import java.io.ByteArrayInputStream;
2424
import java.nio.charset.StandardCharsets;
2525
import java.util.Arrays;
@@ -130,11 +130,13 @@ private static ConfigProvider withInstrumentationConfig(
130130
ExperimentalLanguageSpecificInstrumentationModel javaConfig =
131131
new ExperimentalLanguageSpecificInstrumentationModel();
132132
javaConfig.setAdditionalProperty(instrumentationName, instrumentationConfig);
133+
DeclarativeConfigProperties modelProperties =
134+
DeclarativeConfiguration.toConfigProperties(
135+
new OpenTelemetryConfigurationModel()
136+
.withInstrumentationDevelopment(
137+
new ExperimentalInstrumentationModel().withJava(javaConfig)));
133138

134-
return SdkConfigProvider.create(
135-
new OpenTelemetryConfigurationModel()
136-
.withInstrumentationDevelopment(
137-
new ExperimentalInstrumentationModel().withJava(javaConfig)));
139+
return SdkConfigProvider.create(modelProperties);
138140
}
139141

140142
private static class Model {

sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
import static org.mockito.Mockito.doReturn;
1111
import static org.mockito.Mockito.spy;
1212

13+
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
1314
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
1415
import io.opentelemetry.internal.testing.CleanupExtension;
1516
import io.opentelemetry.sdk.OpenTelemetrySdk;
16-
import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk;
17-
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
18-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
17+
import io.opentelemetry.sdk.internal.OpenTelemetrySdkBuilderUtil;
18+
import io.opentelemetry.sdk.internal.SdkConfigProvider;
1919
import io.opentelemetry.sdk.resources.Resource;
2020
import io.opentelemetry.sdk.trace.SdkTracerProvider;
2121
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
@@ -28,17 +28,20 @@ class DeclarativeConfigurationSpiTest {
2828

2929
@Test
3030
void configFromSpi() {
31-
ExtendedOpenTelemetrySdk expectedSdk =
32-
ExtendedOpenTelemetrySdk.create(
33-
OpenTelemetrySdk.builder()
34-
.setTracerProvider(
35-
SdkTracerProvider.builder()
36-
.setResource(
37-
Resource.getDefault().toBuilder().put("service.name", "test").build())
38-
.addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()))
39-
.build())
40-
.build(),
41-
SdkConfigProvider.create(new OpenTelemetryConfigurationModel()));
31+
OpenTelemetrySdk expectedSdk =
32+
OpenTelemetrySdkBuilderUtil.setConfigProvider(
33+
OpenTelemetrySdk.builder()
34+
.setTracerProvider(
35+
SdkTracerProvider.builder()
36+
.setResource(
37+
Resource.getDefault().toBuilder()
38+
.put("service.name", "test")
39+
.build())
40+
.addSpanProcessor(
41+
SimpleSpanProcessor.create(LoggingSpanExporter.create()))
42+
.build()),
43+
SdkConfigProvider.create(DeclarativeConfigProperties.empty()))
44+
.build();
4245
cleanup.addCloseable(expectedSdk);
4346
AutoConfiguredOpenTelemetrySdkBuilder builder = spy(AutoConfiguredOpenTelemetrySdk.builder());
4447
Thread thread = new Thread();

sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ void globalOpenTelemetry_AutoConfigureEnabled() {
9191
private static OpenTelemetry unobfuscate(OpenTelemetry openTelemetry) {
9292
try {
9393
Field delegateField =
94-
Class.forName("io.opentelemetry.api.GlobalOpenTelemetry$ObfuscatedOpenTelemetry")
94+
Class.forName("io.opentelemetry.api.incubator.internal.ObfuscatedExtendedOpenTelemetry")
9595
.getDeclaredField("delegate");
9696
delegateField.setAccessible(true);
9797
Object delegate = delegateField.get(openTelemetry);

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

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
3030
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
3131
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
32-
import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk;
32+
import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk;
33+
import io.opentelemetry.sdk.internal.OpenTelemetrySdkBuilderUtil;
3334
import io.opentelemetry.sdk.resources.Resource;
3435
import io.opentelemetry.sdk.trace.SdkTracerProvider;
3536
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
@@ -122,16 +123,18 @@ void configFile_Valid() {
122123

123124
OpenTelemetrySdk openTelemetrySdk = autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk();
124125
Resource resource = Resource.getDefault().toBuilder().put("service.name", "test").build();
125-
ExtendedOpenTelemetrySdk expectedSdk =
126-
ExtendedOpenTelemetrySdk.create(
127-
OpenTelemetrySdk.builder()
128-
.setTracerProvider(
129-
SdkTracerProvider.builder()
130-
.setResource(resource)
131-
.addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()))
132-
.build())
133-
.build(),
134-
((ExtendedOpenTelemetrySdk) openTelemetrySdk).getSdkConfigProvider());
126+
OpenTelemetrySdk expectedSdk =
127+
OpenTelemetrySdkBuilderUtil.setConfigProvider(
128+
OpenTelemetrySdk.builder()
129+
.setTracerProvider(
130+
SdkTracerProvider.builder()
131+
.setResource(resource)
132+
.addSpanProcessor(
133+
SimpleSpanProcessor.create(LoggingSpanExporter.create()))
134+
.build()),
135+
((ExtendedOpenTelemetrySdk) openTelemetrySdk).getSdkConfigProvider())
136+
.build();
137+
135138
cleanup.addCloseable(expectedSdk);
136139
assertThat(openTelemetrySdk.toString()).hasToString(expectedSdk.toString());
137140
// AutoConfiguredOpenTelemetrySdk#getResource() is set to a dummy value when configuring from

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
1717
import io.opentelemetry.sdk.autoconfigure.spi.internal.AutoConfigureListener;
1818
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
19-
import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk;
2019
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
2120
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SamplerModel;
21+
import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk;
2222
import io.opentelemetry.sdk.trace.samplers.Sampler;
2323
import java.io.Closeable;
2424
import java.io.IOException;

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactory.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@
66
package io.opentelemetry.sdk.extension.incubator.fileconfig;
77

88
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
9+
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
910
import io.opentelemetry.sdk.OpenTelemetrySdk;
1011
import io.opentelemetry.sdk.OpenTelemetrySdkBuilder;
11-
import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk;
1212
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
13+
import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk;
14+
import io.opentelemetry.sdk.internal.OpenTelemetrySdkBuilderUtil;
15+
import io.opentelemetry.sdk.internal.SdkConfigProvider;
1316
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
1417
import io.opentelemetry.sdk.resources.Resource;
1518
import java.util.Objects;
@@ -32,9 +35,13 @@ static OpenTelemetryConfigurationFactory getInstance() {
3235
@Override
3336
public ExtendedOpenTelemetrySdk create(
3437
OpenTelemetryConfigurationModel model, DeclarativeConfigContext context) {
35-
SdkConfigProvider sdkConfigProvider =
36-
SdkConfigProvider.create(model, context.getSpiHelper().getComponentLoader());
37-
OpenTelemetrySdkBuilder builder = OpenTelemetrySdk.builder();
38+
DeclarativeConfigProperties modelProperties =
39+
DeclarativeConfiguration.toConfigProperties(
40+
model, context.getSpiHelper().getComponentLoader());
41+
SdkConfigProvider sdkConfigProvider = SdkConfigProvider.create(modelProperties);
42+
OpenTelemetrySdkBuilder builder =
43+
OpenTelemetrySdkBuilderUtil.setConfigProvider(
44+
OpenTelemetrySdk.builder(), sdkConfigProvider);
3845
String fileFormat = model.getFileFormat();
3946
if (fileFormat == null || !SUPPORTED_FILE_FORMATS.matcher(fileFormat).matches()) {
4047
throw new DeclarativeConfigException(
@@ -44,7 +51,7 @@ public ExtendedOpenTelemetrySdk create(
4451
// behavior for experimental properties.
4552

4653
if (Objects.equals(true, model.getDisabled())) {
47-
return ExtendedOpenTelemetrySdk.create(builder.build(), sdkConfigProvider);
54+
return (ExtendedOpenTelemetrySdk) builder.build();
4855
}
4956

5057
if (model.getPropagator() != null) {
@@ -92,7 +99,6 @@ public ExtendedOpenTelemetrySdk create(
9299
.build()));
93100
}
94101

95-
OpenTelemetrySdk openTelemetrySdk = context.addCloseable(builder.build());
96-
return ExtendedOpenTelemetrySdk.create(openTelemetrySdk, sdkConfigProvider);
102+
return (ExtendedOpenTelemetrySdk) context.addCloseable(builder.build());
97103
}
98104
}

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java

Lines changed: 0 additions & 59 deletions
This file was deleted.

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCreateTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
2121
import io.opentelemetry.sdk.OpenTelemetrySdk;
2222
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
23-
import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk;
2423
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
2524
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanProcessorModel;
2625
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProviderModel;
26+
import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk;
2727
import io.opentelemetry.sdk.trace.samplers.ParentBasedSamplerBuilder;
2828
import java.io.ByteArrayInputStream;
2929
import java.io.File;

0 commit comments

Comments
 (0)