diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstaller.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstaller.java index 9762f0ee3460..4623f3ae083a 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstaller.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstaller.java @@ -5,22 +5,14 @@ package io.opentelemetry.javaagent.tooling; -import static io.opentelemetry.api.incubator.config.DeclarativeConfigProperties.empty; - import io.opentelemetry.api.GlobalOpenTelemetry; -import io.opentelemetry.api.incubator.ExtendedOpenTelemetry; -import io.opentelemetry.api.incubator.config.ConfigProvider; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.instrumentation.config.bridge.ConfigPropertiesBackedConfigProvider; -import io.opentelemetry.instrumentation.config.bridge.DeclarativeConfigPropertiesBridgeBuilder; import io.opentelemetry.javaagent.bootstrap.OpenTelemetrySdkAccess; -import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk; import io.opentelemetry.sdk.autoconfigure.SdkAutoconfigureAccess; import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.common.CompletableResultCode; import java.util.Arrays; @@ -48,11 +40,6 @@ public static AutoConfiguredOpenTelemetrySdk installOpenTelemetrySdk( sdk = new ExtendedOpenTelemetrySdkWrapper( sdk, ConfigPropertiesBackedConfigProvider.create(configProperties)); - } else { - // Provide a fake ConfigProperties until we have migrated all runtime configuration - // access to use declarative configuration API - configProperties = - getDeclarativeConfigBridgedProperties(((ExtendedOpenTelemetry) sdk).getConfigProvider()); } setForceFlush(sdk); @@ -62,41 +49,6 @@ public static AutoConfiguredOpenTelemetrySdk installOpenTelemetrySdk( sdk, SdkAutoconfigureAccess.getResource(autoConfiguredSdk), configProperties); } - // Visible for testing - static ConfigProperties getDeclarativeConfigBridgedProperties(ConfigProvider configProvider) { - return new DeclarativeConfigPropertiesBridgeBuilder() - .addMapping("otel.javaagent", "agent") - .addOverride("otel.instrumentation.common.default-enabled", defaultEnabled(configProvider)) - // these properties are used to initialize the SDK before the configuration file - // is loaded for consistency, we pass them to the bridge, so that they can be read - // later with the same value from the {@link DeclarativeConfigPropertiesBridge} - .addOverride("otel.javaagent.debug", EarlyInitAgentConfig.get().isDebug()) - .addOverride("otel.javaagent.logging", EarlyInitAgentConfig.get().getLogging()) - .buildFromInstrumentationConfig(configProvider.getInstrumentationConfig()); - } - - private static boolean defaultEnabled(ConfigProvider configProvider) { - DeclarativeConfigProperties instrumentationConfig = configProvider.getInstrumentationConfig(); - if (instrumentationConfig == null) { - return true; - } - - String mode = - instrumentationConfig - .getStructured("java", empty()) - .getStructured("agent", empty()) - .getString("instrumentation_mode", "default"); - - switch (mode) { - case "none": - return false; - case "default": - return true; - default: - throw new ConfigurationException("Unknown instrumentation mode: " + mode); - } - } - private static void setForceFlush(OpenTelemetrySdk sdk) { OpenTelemetrySdkAccess.internalSetForceFlush( (timeout, unit) -> { diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/sdk/autoconfigure/SdkAutoconfigureAccess.java b/javaagent-tooling/src/main/java/io/opentelemetry/sdk/autoconfigure/SdkAutoconfigureAccess.java index 0063d6d4e762..8650715ff8ba 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/sdk/autoconfigure/SdkAutoconfigureAccess.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/sdk/autoconfigure/SdkAutoconfigureAccess.java @@ -8,6 +8,7 @@ import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.resources.Resource; +import javax.annotation.Nullable; public final class SdkAutoconfigureAccess { private SdkAutoconfigureAccess() {} @@ -17,7 +18,7 @@ public static Resource getResource(AutoConfiguredOpenTelemetrySdk sdk) { } public static AutoConfiguredOpenTelemetrySdk create( - OpenTelemetrySdk sdk, Resource resource, ConfigProperties config) { + OpenTelemetrySdk sdk, Resource resource, @Nullable ConfigProperties config) { return AutoConfiguredOpenTelemetrySdk.create(sdk, resource, config); } } diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstallerTest.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstallerTest.java index bbb2a3fc084f..79e635c88932 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstallerTest.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/OpenTelemetryInstallerTest.java @@ -6,24 +6,14 @@ package io.opentelemetry.javaagent.tooling; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig; import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk; -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; -import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration; -import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider; -import java.io.ByteArrayInputStream; -import java.nio.charset.StandardCharsets; -import java.util.function.Supplier; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.CsvSource; class OpenTelemetryInstallerTest { @@ -40,42 +30,4 @@ void globalOpenTelemetry() { assertThat(sdk).isNotNull().isNotEqualTo(OpenTelemetry.noop()); } - - @ParameterizedTest - @CsvSource({ - "default, true, false", - "none, false, false", - ", true, false", // empty value means property is not set - "invalid, false, true", - }) - void defaultEnabledInDeclarativeConfigPropertiesBridge( - String propertyValue, boolean expected, boolean fail) { - String mode = propertyValue == null ? "" : "instrumentation_mode: \"" + propertyValue + "\""; - String yaml = - "file_format: \"1.0-rc.1\"\n" - + "instrumentation/development:\n" - + " java:\n" - + " agent:\n" - + " " - + mode; - - Supplier configPropertiesSupplier = - () -> - OpenTelemetryInstaller.getDeclarativeConfigBridgedProperties( - SdkConfigProvider.create( - DeclarativeConfiguration.parse( - new ByteArrayInputStream(yaml.getBytes(StandardCharsets.UTF_8))))); - - if (fail) { - assertThatCode(() -> configPropertiesSupplier.get()) - .isInstanceOf(ConfigurationException.class) - .hasMessage("Unknown instrumentation mode: invalid"); - } else { - assertThat( - configPropertiesSupplier - .get() - .getBoolean("otel.instrumentation.common.default-enabled")) - .isEqualTo(expected); - } - } }