diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-autoconfigure.txt b/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-autoconfigure.txt index 7e7b6a56d277..ca234f9533d2 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-autoconfigure.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-spring-boot-autoconfigure.txt @@ -1,2 +1,5 @@ Comparing source compatibility of opentelemetry-spring-boot-autoconfigure-2.9.0-SNAPSHOT.jar against opentelemetry-spring-boot-autoconfigure-2.8.0.jar -No changes. \ No newline at end of file +=== UNCHANGED CLASS: PUBLIC io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 + *** MODIFIED ANNOTATION: org.springframework.boot.context.properties.EnableConfigurationProperties + *** MODIFIED ELEMENT: value=io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtlpExporterProperties,io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelResourceProperties,io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelSpringProperties (<- io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtlpExporterProperties,io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelResourceProperties,io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.PropagationProperties) diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java index eaa97f6c23a4..b26c2a2c36c3 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java @@ -10,8 +10,8 @@ import io.opentelemetry.instrumentation.spring.autoconfigure.internal.MapConverter; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelResourceProperties; +import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelSpringProperties; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtlpExporterProperties; -import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.PropagationProperties; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.SpringConfigProperties; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.resources.DistroVersionResourceProvider; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.resources.SpringResourceProvider; @@ -51,7 +51,7 @@ @EnableConfigurationProperties({ OtlpExporterProperties.class, OtelResourceProperties.class, - PropagationProperties.class + OtelSpringProperties.class }) public class OpenTelemetryAutoConfiguration { @@ -90,7 +90,7 @@ public AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk( Environment env, OtlpExporterProperties otlpExporterProperties, OtelResourceProperties resourceProperties, - PropagationProperties propagationProperties, + OtelSpringProperties otelSpringProperties, OpenTelemetrySdkComponentLoader componentLoader) { return AutoConfigureUtil.setComponentLoader( @@ -101,7 +101,7 @@ public AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk( env, otlpExporterProperties, resourceProperties, - propagationProperties, + otelSpringProperties, c)), componentLoader) .build(); diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/OtelSpringProperties.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/OtelSpringProperties.java new file mode 100644 index 000000000000..39add550f4ed --- /dev/null +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/OtelSpringProperties.java @@ -0,0 +1,243 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties; + +import java.util.Collections; +import java.util.List; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ +// yaml lists only work if you create a @ConfigurationProperties object +@ConfigurationProperties(prefix = "otel") +public final class OtelSpringProperties { + + /** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ + public static final class Java { + /** + * This class is internal and is hence not for public use. Its APIs are unstable and can change + * at any time. + */ + public static final class Enabled { + /** + * This class is internal and is hence not for public use. Its APIs are unstable and can + * change at any time. + */ + public static final class Resource { + private List providers = Collections.emptyList(); + + public List getProviders() { + return providers; + } + + public void setProviders(List providers) { + this.providers = providers; + } + } + + private Enabled.Resource resource = new Enabled.Resource(); + + public Enabled.Resource getResource() { + return resource; + } + + public void setResource(Enabled.Resource resource) { + this.resource = resource; + } + } + + /** + * This class is internal and is hence not for public use. Its APIs are unstable and can change + * at any time. + */ + public static final class Disabled { + /** + * This class is internal and is hence not for public use. Its APIs are unstable and can + * change at any time. + */ + public static final class Resource { + private List providers = Collections.emptyList(); + + public List getProviders() { + return providers; + } + + public void setProviders(List providers) { + this.providers = providers; + } + } + + private Disabled.Resource resource = new Disabled.Resource(); + + public Disabled.Resource getResource() { + return resource; + } + + public void setResource(Disabled.Resource resource) { + this.resource = resource; + } + } + + private Enabled enabled = new Enabled(); + private Java.Disabled disabled = new Java.Disabled(); + + public Enabled getEnabled() { + return enabled; + } + + public void setEnabled(Enabled enabled) { + this.enabled = enabled; + } + + public Java.Disabled getDisabled() { + return disabled; + } + + public void setDisabled(Java.Disabled disabled) { + this.disabled = disabled; + } + } + + /** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ + public static final class Experimental { + /** + * This class is internal and is hence not for public use. Its APIs are unstable and can change + * at any time. + */ + public static final class Metrics { + /** + * This class is internal and is hence not for public use. Its APIs are unstable and can + * change at any time. + */ + public static final class View { + private List config = Collections.emptyList(); + + public List getConfig() { + return config; + } + + public void setConfig(List config) { + this.config = config; + } + } + + private View view = new View(); + + public View getView() { + return view; + } + + public void setView(View view) { + this.view = view; + } + } + + /** + * This class is internal and is hence not for public use. Its APIs are unstable and can change + * at any time. + */ + public static final class Resource { + /** + * This class is internal and is hence not for public use. Its APIs are unstable and can + * change at any time. + */ + public static final class Disabled { + private List keys = Collections.emptyList(); + + public List getKeys() { + return keys; + } + + public void setKeys(List keys) { + this.keys = keys; + } + } + + private Resource.Disabled disabled = new Resource.Disabled(); + + public Resource.Disabled getDisabled() { + return disabled; + } + + public void setDisabled(Resource.Disabled disabled) { + this.disabled = disabled; + } + } + + private Metrics metrics = new Metrics(); + private Resource resource = new Resource(); + + public Metrics getMetrics() { + return metrics; + } + + public void setMetrics(Metrics metrics) { + this.metrics = metrics; + } + + public Resource getResource() { + return resource; + } + + public void setResource(Resource resource) { + this.resource = resource; + } + } + + private List propagators = Collections.emptyList(); + + private Java java = new Java(); + + private Experimental experimental = new Experimental(); + + public List getPropagators() { + return propagators; + } + + public void setPropagators(List propagators) { + this.propagators = propagators; + } + + public Java getJava() { + return java; + } + + public void setJava(Java java) { + this.java = java; + } + + public Experimental getExperimental() { + return experimental; + } + + public void setExperimental(Experimental experimental) { + this.experimental = experimental; + } + + public List getJavaEnabledResourceProviders() { + return java.getEnabled().getResource().getProviders(); + } + + public List getJavaDisabledResourceProviders() { + return java.getDisabled().getResource().getProviders(); + } + + public List getExperimentalMetricsViewConfig() { + return experimental.getMetrics().getView().getConfig(); + } + + public List getExperimentalResourceDisabledKeys() { + return experimental.getResource().getDisabled().getKeys(); + } +} diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/PropagationProperties.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/PropagationProperties.java deleted file mode 100644 index 4b582ac3fc2c..000000000000 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/PropagationProperties.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties; - -import java.util.Collections; -import java.util.List; -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * This class is internal and is hence not for public use. Its APIs are unstable and can change at - * any time. - */ -@ConfigurationProperties(prefix = "otel") -public final class PropagationProperties { - - private List propagators = Collections.emptyList(); - - public List getPropagators() { - return propagators; - } - - public void setPropagators(List propagators) { - this.propagators = propagators; - } -} diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java index 58ac3c0e54b1..82c400f6f362 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/SpringConfigProperties.java @@ -7,6 +7,7 @@ import io.opentelemetry.api.internal.ConfigUtil; import io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil; +import io.opentelemetry.instrumentation.resources.ResourceProviderPropertiesCustomizer; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import java.time.Duration; @@ -29,22 +30,75 @@ public class SpringConfigProperties implements ConfigProperties { private final ExpressionParser parser; private final OtlpExporterProperties otlpExporterProperties; private final OtelResourceProperties resourceProperties; - private final PropagationProperties propagationProperties; private final ConfigProperties otelSdkProperties; + private final ConfigProperties customizedListProperties; + private final Map> listPropertyValues = new HashMap<>(); + + static final String DISABLED_KEY = "otel.java.disabled.resource.providers"; + static final String ENABLED_KEY = "otel.java.enabled.resource.providers"; public SpringConfigProperties( Environment environment, ExpressionParser parser, OtlpExporterProperties otlpExporterProperties, OtelResourceProperties resourceProperties, - PropagationProperties propagationProperties, + OtelSpringProperties otelSpringProperties, ConfigProperties otelSdkProperties) { this.environment = environment; this.parser = parser; this.otlpExporterProperties = otlpExporterProperties; this.resourceProperties = resourceProperties; - this.propagationProperties = propagationProperties; this.otelSdkProperties = otelSdkProperties; + this.customizedListProperties = + createCustomizedListProperties(otelSdkProperties, otelSpringProperties); + + listPropertyValues.put(ENABLED_KEY, otelSpringProperties.getJavaEnabledResourceProviders()); + listPropertyValues.put(DISABLED_KEY, otelSpringProperties.getJavaDisabledResourceProviders()); + listPropertyValues.put( + "otel.experimental.metrics.view.config", + otelSpringProperties.getExperimentalMetricsViewConfig()); + listPropertyValues.put( + "otel.experimental.resource.disabled.keys", + otelSpringProperties.getExperimentalResourceDisabledKeys()); + listPropertyValues.put("otel.propagators", otelSpringProperties.getPropagators()); + } + + private static Map createMapForListProperty( + String key, List springList, ConfigProperties configProperties) { + if (!springList.isEmpty()) { + return Collections.singletonMap(key, String.join(",", springList)); + } else { + String otelList = configProperties.getString(key); + if (otelList != null) { + return Collections.singletonMap(key, otelList); + } + } + return Collections.emptyMap(); + } + + private static ConfigProperties createCustomizedListProperties( + ConfigProperties configProperties, OtelSpringProperties otelSpringProperties) { + // io.opentelemetry.instrumentation.resources.ResourceProviderPropertiesCustomizer + // has already been applied before this point, so we have to apply the same logic here + // the logic is implemented here: + // https://github.com/open-telemetry/opentelemetry-java/blob/325822ce8527b83a09274c86a5123a214db80c1d/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkBuilder.java#L634-L641 + // ResourceProviderPropertiesCustomizer gets applied by "propertiesCustomizers" + // and spring properties by "configPropertiesCustomizer", which is later + Map map = + new HashMap<>( + createMapForListProperty( + ENABLED_KEY, + otelSpringProperties.getJavaEnabledResourceProviders(), + configProperties)); + map.putAll( + createMapForListProperty( + DISABLED_KEY, + otelSpringProperties.getJavaDisabledResourceProviders(), + configProperties)); + + return DefaultConfigProperties.createFromMap( + new ResourceProviderPropertiesCustomizer() + .customize(DefaultConfigProperties.createFromMap(map))); } // visible for testing @@ -52,14 +106,14 @@ public static ConfigProperties create( Environment env, OtlpExporterProperties otlpExporterProperties, OtelResourceProperties resourceProperties, - PropagationProperties propagationProperties, + OtelSpringProperties otelSpringProperties, ConfigProperties fallback) { return new SpringConfigProperties( env, new SpelExpressionParser(), otlpExporterProperties, resourceProperties, - propagationProperties, + otelSpringProperties, fallback); } @@ -114,8 +168,13 @@ public List getList(String name) { String normalizedName = ConfigUtil.normalizeEnvironmentVariableKey(name); - if (normalizedName.equals("otel.propagators")) { - return propagationProperties.getPropagators(); + List list = listPropertyValues.get(normalizedName); + if (list != null) { + List c = customizedListProperties.getList(name); + if (!c.isEmpty()) { + return c; + } + return list; } return or(environment.getProperty(normalizedName, List.class), otelSdkProperties.getList(name)); diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 3b309aae4739..19ea58c78334 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -76,6 +76,11 @@ "description": "If set, configure experimental cardinality limit. The value dictates the maximum number of distinct points per metric.", "defaultValue": 2000 }, + { + "name": "otel.experimental.metrics.view.config", + "type": "java.util.List", + "description": "View file configuration See https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk-extensions/incubator/README.md#view-file-configuration." + }, { "name": "otel.experimental.resource.disabled.keys", "type": "java.util.List", diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfigurationTest.java b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfigurationTest.java index c13eb6e2fce7..52f2eeafc84c 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfigurationTest.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfigurationTest.java @@ -12,6 +12,7 @@ import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.exporter.otlp.internal.OtlpSpanExporterProvider; import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.internal.AutoConfigureListener; import io.opentelemetry.sdk.trace.export.SpanExporter; import org.junit.jupiter.api.DisplayName; @@ -35,7 +36,12 @@ public OpenTelemetry customOpenTelemetry() { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues( - "otel.traces.exporter=none", "otel.metrics.exporter=none", "otel.logs.exporter=none"); + "otel.traces.exporter=none", + "otel.metrics.exporter=none", + "otel.logs.exporter=none", + "otel.propagators=b3", + "otel.experimental.resource.disabled.keys=a,b", + "otel.java.disabled.resource.providers=d"); @Test @DisplayName( @@ -61,6 +67,54 @@ void initializeProvidersAndOpenTelemetry() { .run(context -> assertThat(context).hasBean("openTelemetry").hasBean("otelProperties")); } + @Test + void specialListProperties() { + this.contextRunner + .withConfiguration(AutoConfigurations.of(OpenTelemetryAutoConfiguration.class)) + .run( + context -> + assertThat(context) + .getBean("otelProperties") + .satisfies( + p -> { + ConfigProperties configProperties = (ConfigProperties) p; + assertThat(configProperties.getList("otel.propagators")) + .containsExactly("b3"); + assertThat( + configProperties.getList( + "otel.experimental.resource.disabled.keys")) + .containsExactly("a", "b"); + assertThat( + configProperties.getList("otel.java.disabled.resource.providers")) + .containsExactlyInAnyOrder( + "d", + "io.opentelemetry.contrib.aws.resource.BeanstalkResourceProvider", + "io.opentelemetry.contrib.aws.resource.Ec2ResourceProvider", + "io.opentelemetry.contrib.aws.resource.EcsResourceProvider", + "io.opentelemetry.contrib.aws.resource.EksResourceProvider", + "io.opentelemetry.contrib.aws.resource.LambdaResourceProvider", + "io.opentelemetry.contrib.gcp.resource.GCPResourceProvider", + "io.opentelemetry.instrumentation.resources.ResourceProviderPropertiesCustomizerTest$Provider"); + })); + } + + @Test + void enabledProviders() { + this.contextRunner + .withPropertyValues("otel.java.enabled.resource.providers=e1,e2") + .withConfiguration(AutoConfigurations.of(OpenTelemetryAutoConfiguration.class)) + .run( + context -> + assertThat(context) + .getBean("otelProperties", ConfigProperties.class) + .satisfies( + configProperties -> + assertThat( + configProperties.getList( + "otel.java.enabled.resource.providers")) + .containsExactly("e1", "e2"))); + } + @Test @DisplayName( "when Application Context DOES NOT contain OpenTelemetry bean but SpanExporter should initialize openTelemetry") diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/OtlpExporterPropertiesTest.java b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/OtlpExporterPropertiesTest.java index 2fea20afec6e..3cfaa03b5227 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/OtlpExporterPropertiesTest.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/OtlpExporterPropertiesTest.java @@ -92,7 +92,7 @@ private static ConfigProperties getConfig(AssertableApplicationContext context) new SpelExpressionParser(), context.getBean(OtlpExporterProperties.class), new OtelResourceProperties(), - new PropagationProperties(), + new OtelSpringProperties(), DefaultConfigProperties.createFromMap(Collections.emptyMap())); } } diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/resources/SpringConfigPropertiesTest.java b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/resources/SpringConfigPropertiesTest.java index 97b30652aed5..2646837ed789 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/resources/SpringConfigPropertiesTest.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/resources/SpringConfigPropertiesTest.java @@ -10,8 +10,8 @@ import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelResourceProperties; +import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelSpringProperties; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtlpExporterProperties; -import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.PropagationProperties; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.SpringConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import java.util.HashMap; @@ -51,7 +51,7 @@ void shouldInitializeAttributesByMapInArow() { new SpelExpressionParser(), context.getBean(OtlpExporterProperties.class), context.getBean(OtelResourceProperties.class), - context.getBean(PropagationProperties.class), + context.getBean(OtelSpringProperties.class), DefaultConfigProperties.createFromMap(fallback)); assertThat(config.getMap("otel.resource.attributes")) diff --git a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/resources/SpringResourceProviderTest.java b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/resources/SpringResourceProviderTest.java index b2c4bc3b521c..0298b26d868a 100644 --- a/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/resources/SpringResourceProviderTest.java +++ b/instrumentation/spring/spring-boot-autoconfigure/src/test/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/resources/SpringResourceProviderTest.java @@ -9,8 +9,8 @@ import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelResourceProperties; +import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelSpringProperties; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtlpExporterProperties; -import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.PropagationProperties; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.SpringConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; @@ -68,7 +68,7 @@ private static AttributesAssert assertResourceAttributes(AssertableApplicationCo context.getBean(Environment.class), new OtlpExporterProperties(), new OtelResourceProperties(), - new PropagationProperties(), + new OtelSpringProperties(), DefaultConfigProperties.createFromMap(Collections.emptyMap())); return assertThat( diff --git a/sdk-autoconfigure-support/src/main/java/io/opentelemetry/instrumentation/resources/ResourceProviderPropertiesCustomizer.java b/sdk-autoconfigure-support/src/main/java/io/opentelemetry/instrumentation/resources/ResourceProviderPropertiesCustomizer.java index 416e6e16c27c..14fa043deac6 100644 --- a/sdk-autoconfigure-support/src/main/java/io/opentelemetry/instrumentation/resources/ResourceProviderPropertiesCustomizer.java +++ b/sdk-autoconfigure-support/src/main/java/io/opentelemetry/instrumentation/resources/ResourceProviderPropertiesCustomizer.java @@ -48,8 +48,7 @@ public void customize(AutoConfigurationCustomizer autoConfigurationCustomizer) { autoConfigurationCustomizer.addPropertiesCustomizer(this::customize); } - // VisibleForTesting - Map customize(ConfigProperties config) { + public Map customize(ConfigProperties config) { Set enabledProviders = new HashSet<>(config.getList(ENABLED_KEY)); List enabled = new ArrayList<>(); diff --git a/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractOtelSpringStarterSmokeTest.java b/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractOtelSpringStarterSmokeTest.java index f5ea3eace113..df10159d59c9 100644 --- a/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractOtelSpringStarterSmokeTest.java +++ b/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractOtelSpringStarterSmokeTest.java @@ -13,8 +13,8 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelResourceProperties; +import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelSpringProperties; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtlpExporterProperties; -import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.PropagationProperties; import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.SpringConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; @@ -59,7 +59,7 @@ class AbstractOtelSpringStarterSmokeTest extends AbstractSpringStarterSmokeTest @Autowired private TestRestTemplate testRestTemplate; @Autowired private Environment environment; - @Autowired private PropagationProperties propagationProperties; + @Autowired private OtelSpringProperties otelSpringProperties; @Autowired private OtelResourceProperties otelResourceProperties; @Autowired private OtlpExporterProperties otlpExporterProperties; @Autowired private RestTemplateBuilder restTemplateBuilder; @@ -128,7 +128,7 @@ void propertyConversion() { environment, otlpExporterProperties, otelResourceProperties, - propagationProperties, + otelSpringProperties, DefaultConfigProperties.createFromMap( Collections.singletonMap("otel.exporter.otlp.headers", "a=1,b=2"))); assertThat(configProperties.getMap("otel.exporter.otlp.headers"))