From cce961c4dfe6926d9e21e27d7986fe9c1fb6bd7b Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Thu, 4 May 2023 17:38:24 +0200 Subject: [PATCH 1/2] Set up EarlyInitAgentConfig even earlier --- .../ApplicationLoggingCustomizer.java | 7 ++-- .../simple/Slf4jSimpleLoggingCustomizer.java | 28 ++----------- .../javaagent/tooling/AgentInstaller.java | 6 +-- .../javaagent/tooling/AgentStarterImpl.java | 18 ++++---- .../tooling/ExtensionClassLoader.java | 27 ++++++------ .../javaagent/tooling/LoggingCustomizer.java | 5 ++- .../tooling/NoopLoggingCustomizer.java | 3 +- ...FileLoader.java => ConfigurationFile.java} | 42 +++++++++---------- .../ConfigurationPropertiesSupplier.java | 25 +++++++++++ .../tooling/config/EarlyInitAgentConfig.java | 27 +++++++++++- .../javaagent/test/HelperInjectionTest.groovy | 3 +- .../config/ConfigurationFileTest.groovy | 10 ++--- ... ConfigurationPropertiesSupplierTest.java} | 6 +-- ...re.spi.AutoConfigurationCustomizerProvider | 4 +- 14 files changed, 120 insertions(+), 91 deletions(-) rename javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/{ConfigurationFileLoader.java => ConfigurationFile.java} (63%) create mode 100644 javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/ConfigurationPropertiesSupplier.java rename javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/{ConfigurationFileLoaderTest.java => ConfigurationPropertiesSupplierTest.java} (91%) diff --git a/javaagent-internal-logging-application/src/main/java/io/opentelemetry/javaagent/logging/application/ApplicationLoggingCustomizer.java b/javaagent-internal-logging-application/src/main/java/io/opentelemetry/javaagent/logging/application/ApplicationLoggingCustomizer.java index a9b4b1e35951..19256cb499bd 100644 --- a/javaagent-internal-logging-application/src/main/java/io/opentelemetry/javaagent/logging/application/ApplicationLoggingCustomizer.java +++ b/javaagent-internal-logging-application/src/main/java/io/opentelemetry/javaagent/logging/application/ApplicationLoggingCustomizer.java @@ -6,10 +6,10 @@ package io.opentelemetry.javaagent.logging.application; import com.google.auto.service.AutoService; -import io.opentelemetry.instrumentation.api.internal.ConfigPropertiesUtil; import io.opentelemetry.javaagent.bootstrap.InternalLogger; import io.opentelemetry.javaagent.bootstrap.logging.ApplicationLoggerBridge; import io.opentelemetry.javaagent.tooling.LoggingCustomizer; +import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig; @AutoService(LoggingCustomizer.class) public final class ApplicationLoggingCustomizer implements LoggingCustomizer { @@ -20,10 +20,9 @@ public String name() { } @Override - public void init() { + public void init(EarlyInitAgentConfig earlyConfig) { int limit = - ConfigPropertiesUtil.getInt( - "otel.javaagent.logging.application.logs-buffer-max-records", 2048); + earlyConfig.getInt("otel.javaagent.logging.application.logs-buffer-max-records", 2048); InMemoryLogStore inMemoryLogStore = new InMemoryLogStore(limit); ApplicationLoggerFactory loggerFactory = new ApplicationLoggerFactory(inMemoryLogStore); // register a shutdown hook that'll dump the logs to stderr in case something goes wrong diff --git a/javaagent-internal-logging-simple/src/main/java/io/opentelemetry/javaagent/logging/simple/Slf4jSimpleLoggingCustomizer.java b/javaagent-internal-logging-simple/src/main/java/io/opentelemetry/javaagent/logging/simple/Slf4jSimpleLoggingCustomizer.java index 7a7af6a3eef9..53682728bb2e 100644 --- a/javaagent-internal-logging-simple/src/main/java/io/opentelemetry/javaagent/logging/simple/Slf4jSimpleLoggingCustomizer.java +++ b/javaagent-internal-logging-simple/src/main/java/io/opentelemetry/javaagent/logging/simple/Slf4jSimpleLoggingCustomizer.java @@ -8,7 +8,7 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.bootstrap.InternalLogger; import io.opentelemetry.javaagent.tooling.LoggingCustomizer; -import java.util.Locale; +import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig; import org.slf4j.LoggerFactory; @AutoService(LoggingCustomizer.class) @@ -31,12 +31,12 @@ public String name() { } @Override - public void init() { + public void init(EarlyInitAgentConfig earlyConfig) { setSystemPropertyDefault(SIMPLE_LOGGER_SHOW_DATE_TIME_PROPERTY, "true"); setSystemPropertyDefault( SIMPLE_LOGGER_DATE_TIME_FORMAT_PROPERTY, SIMPLE_LOGGER_DATE_TIME_FORMAT_DEFAULT); - if (isDebugMode()) { + if (earlyConfig.getBoolean("otel.javaagent.debut", false)) { setSystemPropertyDefault(SIMPLE_LOGGER_DEFAULT_LOG_LEVEL_PROPERTY, "DEBUG"); setSystemPropertyDefault(SIMPLE_LOGGER_PREFIX + "okhttp3.internal.http2", "INFO"); } @@ -63,26 +63,4 @@ private static void setSystemPropertyDefault(String property, String value) { System.setProperty(property, value); } } - - /** - * Determine if we should log in debug level according to otel.javaagent.debug - * - * @return true if we should - */ - private static boolean isDebugMode() { - String tracerDebugLevelSysprop = "otel.javaagent.debug"; - String tracerDebugLevelProp = System.getProperty(tracerDebugLevelSysprop); - - if (tracerDebugLevelProp != null) { - return Boolean.parseBoolean(tracerDebugLevelProp); - } - - String tracerDebugLevelEnv = - System.getenv(tracerDebugLevelSysprop.replace('.', '_').toUpperCase(Locale.ROOT)); - - if (tracerDebugLevelEnv != null) { - return Boolean.parseBoolean(tracerDebugLevelEnv); - } - return false; - } } diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java index 149143c8d27e..b4005c9f02c4 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java @@ -80,7 +80,8 @@ public class AgentInstaller { private static final Map> CLASS_LOAD_CALLBACKS = new HashMap<>(); - public static void installBytebuddyAgent(Instrumentation inst, ClassLoader extensionClassLoader) { + public static void installBytebuddyAgent( + Instrumentation inst, ClassLoader extensionClassLoader, EarlyInitAgentConfig earlyConfig) { addByteBuddyRawSetting(); Integer strictContextStressorMillis = Integer.getInteger(STRICT_CONTEXT_STRESSOR_MILLIS); @@ -90,8 +91,7 @@ public static void installBytebuddyAgent(Instrumentation inst, ClassLoader exten } logVersionInfo(); - EarlyInitAgentConfig agentConfig = EarlyInitAgentConfig.create(); - if (agentConfig.getBoolean(JAVAAGENT_ENABLED_CONFIG, true)) { + if (earlyConfig.getBoolean(JAVAAGENT_ENABLED_CONFIG, true)) { setupUnsafe(inst); List agentListeners = loadOrdered(AgentListener.class, extensionClassLoader); installBytebuddyAgent(inst, extensionClassLoader, agentListeners); diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentStarterImpl.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentStarterImpl.java index ed64b5bcf003..83d01a2398d3 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentStarterImpl.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentStarterImpl.java @@ -6,10 +6,10 @@ package io.opentelemetry.javaagent.tooling; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.internal.ConfigPropertiesUtil; import io.opentelemetry.instrumentation.api.internal.cache.weaklockfree.WeakConcurrentMapCleaner; import io.opentelemetry.javaagent.bootstrap.AgentInitializer; import io.opentelemetry.javaagent.bootstrap.AgentStarter; +import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig; import java.io.File; import java.lang.instrument.ClassFileTransformer; import java.lang.instrument.Instrumentation; @@ -67,9 +67,10 @@ public boolean delayStart() { @Override public void start() { - extensionClassLoader = createExtensionClassLoader(getClass().getClassLoader()); + EarlyInitAgentConfig earlyConfig = EarlyInitAgentConfig.create(); + extensionClassLoader = createExtensionClassLoader(getClass().getClassLoader(), earlyConfig); - String loggerImplementationName = ConfigPropertiesUtil.getString("otel.javaagent.logging"); + String loggerImplementationName = earlyConfig.getString("otel.javaagent.logging"); // default to the built-in stderr slf4j-simple logger if (loggerImplementationName == null) { loggerImplementationName = "simple"; @@ -91,8 +92,10 @@ public void start() { Throwable startupError = null; try { - loggingCustomizer.init(); - AgentInstaller.installBytebuddyAgent(instrumentation, extensionClassLoader); + loggingCustomizer.init(earlyConfig); + earlyConfig.logEarlyConfigErrorsIfAny(); + + AgentInstaller.installBytebuddyAgent(instrumentation, extensionClassLoader, earlyConfig); WeakConcurrentMapCleaner.start(); // LazyStorage reads system properties. Initialize it here where we have permissions to avoid @@ -124,9 +127,10 @@ public ClassLoader getExtensionClassLoader() { return extensionClassLoader; } - private ClassLoader createExtensionClassLoader(ClassLoader agentClassLoader) { + private ClassLoader createExtensionClassLoader( + ClassLoader agentClassLoader, EarlyInitAgentConfig earlyConfig) { return ExtensionClassLoader.getInstance( - agentClassLoader, javaagentFile, isSecurityManagerSupportEnabled); + agentClassLoader, javaagentFile, isSecurityManagerSupportEnabled, earlyConfig); } private static class LaunchHelperClassFileTransformer implements ClassFileTransformer { diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/ExtensionClassLoader.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/ExtensionClassLoader.java index 5cbdef8313f3..5015ce83fedc 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/ExtensionClassLoader.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/ExtensionClassLoader.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.tooling; +import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -25,6 +26,7 @@ import java.util.List; import java.util.jar.JarEntry; import java.util.jar.JarFile; +import javax.annotation.Nullable; import net.bytebuddy.dynamic.loading.MultipleParentClassLoader; /** @@ -36,8 +38,7 @@ * MultipleParentClassLoader}. */ // TODO find a way to initialize logging before using this class -// Used by AgentInitializer -@SuppressWarnings({"unused", "SystemOut"}) +@SuppressWarnings("SystemOut") public class ExtensionClassLoader extends URLClassLoader { public static final String EXTENSIONS_CONFIG = "otel.javaagent.extensions"; @@ -51,22 +52,19 @@ public class ExtensionClassLoader extends URLClassLoader { } public static ClassLoader getInstance( - ClassLoader parent, File javaagentFile, boolean isSecurityManagerSupportEnabled) { + ClassLoader parent, + File javaagentFile, + boolean isSecurityManagerSupportEnabled, + EarlyInitAgentConfig earlyConfig) { List extensions = new ArrayList<>(); - includeEmbeddedExtensionsIfFound(parent, extensions, javaagentFile); + includeEmbeddedExtensionsIfFound(extensions, javaagentFile); - extensions.addAll( - parseLocation( - System.getProperty(EXTENSIONS_CONFIG, System.getenv("OTEL_JAVAAGENT_EXTENSIONS")), - javaagentFile)); + extensions.addAll(parseLocation(earlyConfig.getString(EXTENSIONS_CONFIG), javaagentFile)); extensions.addAll( parseLocation( - System.getProperty( - "otel.javaagent.experimental.extensions", - System.getenv("OTEL_JAVAAGENT_EXPERIMENTAL_EXTENSIONS")), - javaagentFile)); + earlyConfig.getString("otel.javaagent.experimental.extensions"), javaagentFile)); // TODO when logging is configured add warning about deprecated property @@ -81,8 +79,7 @@ public static ClassLoader getInstance( return new MultipleParentClassLoader(parent, delegates); } - private static void includeEmbeddedExtensionsIfFound( - ClassLoader parent, List extensions, File javaagentFile) { + private static void includeEmbeddedExtensionsIfFound(List extensions, File javaagentFile) { try { JarFile jarFile = new JarFile(javaagentFile, false); Enumeration entryEnumeration = jarFile.entries(); @@ -132,7 +129,7 @@ private static URLClassLoader getDelegate( } // visible for testing - static List parseLocation(String locationName, File javaagentFile) { + static List parseLocation(@Nullable String locationName, File javaagentFile) { if (locationName == null) { return Collections.emptyList(); } diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/LoggingCustomizer.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/LoggingCustomizer.java index 68fc8ee616f1..c26c0a878001 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/LoggingCustomizer.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/LoggingCustomizer.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.tooling; +import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig; import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk; // only one LoggingCustomizer is allowed, and its presence will suppress the @@ -21,7 +22,7 @@ public interface LoggingCustomizer { // note that if this throws an exception, it will end up calling onStartupFailure, because // otherwise that exception will bubble up to OpenTelemetryAgent where a distro cannot control the // logging of it. - void init(); + void init(EarlyInitAgentConfig earlyConfig); /** * Register a callback which will be called on synchronous startup success. @@ -34,7 +35,7 @@ public interface LoggingCustomizer { /** * Register a callback which will be called on synchronous startup failure (including if {@link - * #init()} fails). + * #init(EarlyInitAgentConfig)} fails). * *

Synchronous startup may or may not include running {@link * io.opentelemetry.javaagent.extension.AgentListener#afterAgent( diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/NoopLoggingCustomizer.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/NoopLoggingCustomizer.java index 47de6e2a8c7f..b2dc61b9470b 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/NoopLoggingCustomizer.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/NoopLoggingCustomizer.java @@ -6,6 +6,7 @@ package io.opentelemetry.javaagent.tooling; import com.google.auto.service.AutoService; +import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig; @AutoService(LoggingCustomizer.class) public final class NoopLoggingCustomizer implements LoggingCustomizer { @@ -16,7 +17,7 @@ public String name() { } @Override - public void init() {} + public void init(EarlyInitAgentConfig earlyConfig) {} @Override @SuppressWarnings("SystemOut") diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileLoader.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFile.java similarity index 63% rename from javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileLoader.java rename to javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFile.java index 0005be8aaa85..726540783f95 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileLoader.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFile.java @@ -8,10 +8,7 @@ import static java.util.Collections.emptyMap; import static java.util.logging.Level.SEVERE; -import com.google.auto.service.AutoService; import io.opentelemetry.instrumentation.api.internal.ConfigPropertiesUtil; -import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer; -import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -22,22 +19,20 @@ import java.util.Properties; import java.util.logging.Logger; import java.util.stream.Collectors; +import javax.annotation.Nullable; -@AutoService(AutoConfigurationCustomizerProvider.class) -public final class ConfigurationFileLoader implements AutoConfigurationCustomizerProvider { - - private static final Logger logger = Logger.getLogger(ConfigurationFileLoader.class.getName()); +final class ConfigurationFile { static final String CONFIGURATION_FILE_PROPERTY = "otel.javaagent.configuration-file"; private static Map configFileContents; - @Override - public void customize(AutoConfigurationCustomizer autoConfiguration) { - autoConfiguration.addPropertiesSupplier(ConfigurationFileLoader::getConfigFileContents); - } + // this class is used early, and must not use logging in most of its methods + // in case any file loading/parsing error occurs, we save the error message and log it later, when + // the logging subsystem is initialized + @Nullable private static String fileLoadErrorMessage; - static Map getConfigFileContents() { + static Map getProperties() { if (configFileContents == null) { configFileContents = loadConfigFile(); } @@ -59,7 +54,7 @@ static Map loadConfigFile() { // Configuration properties file is optional File configurationFile = new File(configurationFilePath); if (!configurationFile.exists()) { - logger.log(SEVERE, "Configuration file \"{0}\" not found.", configurationFilePath); + fileLoadErrorMessage = "Configuration file \"" + configurationFilePath + "\" not found."; return emptyMap(); } @@ -68,21 +63,24 @@ static Map loadConfigFile() { new InputStreamReader(new FileInputStream(configurationFile), StandardCharsets.UTF_8)) { properties.load(reader); } catch (FileNotFoundException fnf) { - logger.log(SEVERE, "Configuration file \"{0}\" not found.", configurationFilePath); + fileLoadErrorMessage = "Configuration file \"" + configurationFilePath + "\" not found."; } catch (IOException ioe) { - logger.log( - SEVERE, - "Configuration file \"{0}\" cannot be accessed or correctly parsed.", - configurationFilePath); + fileLoadErrorMessage = + "Configuration file \"" + + configurationFilePath + + "\" cannot be accessed or correctly parsed."; } return properties.entrySet().stream() .collect(Collectors.toMap(e -> e.getKey().toString(), e -> e.getValue().toString())); } - @Override - public int order() { - // make sure it runs after all the user-provided customizers - return Integer.MAX_VALUE; + static void logErrorIfAny() { + if (fileLoadErrorMessage != null) { + Logger.getLogger(ConfigurationPropertiesSupplier.class.getName()) + .log(SEVERE, fileLoadErrorMessage); + } } + + private ConfigurationFile() {} } diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/ConfigurationPropertiesSupplier.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/ConfigurationPropertiesSupplier.java new file mode 100644 index 000000000000..b711cbb89e19 --- /dev/null +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/ConfigurationPropertiesSupplier.java @@ -0,0 +1,25 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.tooling.config; + +import com.google.auto.service.AutoService; +import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer; +import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider; + +@AutoService(AutoConfigurationCustomizerProvider.class) +public final class ConfigurationPropertiesSupplier implements AutoConfigurationCustomizerProvider { + + @Override + public void customize(AutoConfigurationCustomizer autoConfiguration) { + autoConfiguration.addPropertiesSupplier(ConfigurationFile::getProperties); + } + + @Override + public int order() { + // make sure it runs after all the user-provided customizers + return Integer.MAX_VALUE; + } +} diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/EarlyInitAgentConfig.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/EarlyInitAgentConfig.java index 25ff044e30f4..d39f1b9cfd6a 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/EarlyInitAgentConfig.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/EarlyInitAgentConfig.java @@ -7,6 +7,7 @@ import io.opentelemetry.instrumentation.api.internal.ConfigPropertiesUtil; import java.util.Map; +import javax.annotation.Nullable; /** * Agent config class that is only supposed to be used before the SDK (and {@link @@ -15,7 +16,7 @@ public final class EarlyInitAgentConfig { public static EarlyInitAgentConfig create() { - return new EarlyInitAgentConfig(ConfigurationFileLoader.getConfigFileContents()); + return new EarlyInitAgentConfig(ConfigurationFile.getProperties()); } private final Map configFileContents; @@ -24,10 +25,34 @@ private EarlyInitAgentConfig(Map configFileContents) { this.configFileContents = configFileContents; } + @Nullable + public String getString(String propertyName) { + String value = ConfigPropertiesUtil.getString(propertyName); + if (value != null) { + return value; + } + return configFileContents.get(propertyName); + } + public boolean getBoolean(String propertyName, boolean defaultValue) { String configFileValueStr = configFileContents.get(propertyName); boolean configFileValue = configFileValueStr == null ? defaultValue : Boolean.parseBoolean(configFileValueStr); return ConfigPropertiesUtil.getBoolean(propertyName, configFileValue); } + + public int getInt(String propertyName, int defaultValue) { + try { + String configFileValueStr = configFileContents.get(propertyName); + int configFileValue = + configFileValueStr == null ? defaultValue : Integer.parseInt(configFileValueStr); + return ConfigPropertiesUtil.getInt(propertyName, configFileValue); + } catch (NumberFormatException ignored) { + return defaultValue; + } + } + + public void logEarlyConfigErrorsIfAny() { + ConfigurationFile.logErrorIfAny(); + } } diff --git a/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/test/HelperInjectionTest.groovy b/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/test/HelperInjectionTest.groovy index 2a709cb3eeda..1bada094858b 100644 --- a/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/test/HelperInjectionTest.groovy +++ b/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/test/HelperInjectionTest.groovy @@ -9,6 +9,7 @@ package io.opentelemetry.javaagent.test import io.opentelemetry.javaagent.tooling.AgentInstaller import io.opentelemetry.javaagent.tooling.HelperInjector import io.opentelemetry.javaagent.tooling.Utils +import io.opentelemetry.javaagent.tooling.config.EarlyInitAgentConfig import net.bytebuddy.agent.ByteBuddyAgent import net.bytebuddy.description.type.TypeDescription import net.bytebuddy.dynamic.ClassFileLocator @@ -61,7 +62,7 @@ class HelperInjectionTest extends Specification { def "helpers injected on bootstrap classloader"() { setup: ByteBuddyAgent.install() - AgentInstaller.installBytebuddyAgent(ByteBuddyAgent.getInstrumentation(), this.class.classLoader) + AgentInstaller.installBytebuddyAgent(ByteBuddyAgent.getInstrumentation(), this.class.classLoader, EarlyInitAgentConfig.create()) String helperClassName = HelperInjectionTest.getPackage().getName() + '.HelperClass' HelperInjector injector = new HelperInjector("test", [helperClassName], [], this.class.classLoader, ByteBuddyAgent.getInstrumentation()) URLClassLoader bootstrapChild = new URLClassLoader(new URL[0], (ClassLoader) null) diff --git a/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.groovy b/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.groovy index ca65c997a51c..5f83eb57503a 100644 --- a/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.groovy +++ b/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.groovy @@ -28,7 +28,7 @@ class ConfigurationFileTest extends Specification { environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", path) when: - def properties = ConfigurationFileLoader.loadConfigFile() + def properties = ConfigurationFile.loadConfigFile() then: properties.get("property1") == "val-env" @@ -40,7 +40,7 @@ class ConfigurationFileTest extends Specification { System.setProperty("otel.javaagent.configuration-file", path) when: - def properties = ConfigurationFileLoader.loadConfigFile() + def properties = ConfigurationFile.loadConfigFile() then: properties.get("property1") == "val-sys" @@ -55,7 +55,7 @@ class ConfigurationFileTest extends Specification { System.setProperty("otel.javaagent.configuration-file", pathSys) when: - def properties = ConfigurationFileLoader.loadConfigFile() + def properties = ConfigurationFile.loadConfigFile() then: properties.get("property1") == "val-sys" @@ -67,7 +67,7 @@ class ConfigurationFileTest extends Specification { environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", "somePath") when: - def properties = ConfigurationFileLoader.loadConfigFile() + def properties = ConfigurationFile.loadConfigFile() then: properties.isEmpty() @@ -75,7 +75,7 @@ class ConfigurationFileTest extends Specification { def "should return empty properties if property is not set"() { when: - def properties = ConfigurationFileLoader.loadConfigFile() + def properties = ConfigurationFile.loadConfigFile() then: properties.isEmpty() diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileLoaderTest.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationPropertiesSupplierTest.java similarity index 91% rename from javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileLoaderTest.java rename to javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationPropertiesSupplierTest.java index 5fb10e401482..8ae6af0cc5e9 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileLoaderTest.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationPropertiesSupplierTest.java @@ -26,8 +26,8 @@ import org.junitpioneer.jupiter.ClearSystemProperty; import org.junitpioneer.jupiter.SetSystemProperty; -@ClearSystemProperty(key = ConfigurationFileLoader.CONFIGURATION_FILE_PROPERTY) -class ConfigurationFileLoaderTest { +@ClearSystemProperty(key = ConfigurationFile.CONFIGURATION_FILE_PROPERTY) +class ConfigurationPropertiesSupplierTest { @BeforeAll @AfterAll @@ -44,7 +44,7 @@ void fileConfigOverwritesUserPropertiesSupplier(@TempDir Path tempDir) throws IO // given Path configFile = tempDir.resolve("test-config.properties"); Files.write(configFile, singleton("custom.key = 42")); - System.setProperty(ConfigurationFileLoader.CONFIGURATION_FILE_PROPERTY, configFile.toString()); + System.setProperty(ConfigurationFile.CONFIGURATION_FILE_PROPERTY, configFile.toString()); // when AutoConfiguredOpenTelemetrySdk autoConfiguredSdk = diff --git a/javaagent-tooling/src/test/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider b/javaagent-tooling/src/test/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider index 0b873a5b7c51..b3f48d038005 100644 --- a/javaagent-tooling/src/test/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider +++ b/javaagent-tooling/src/test/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider @@ -1,2 +1,2 @@ -io.opentelemetry.javaagent.tooling.config.ConfigurationFileLoader -io.opentelemetry.javaagent.tooling.config.ConfigurationFileLoaderTest$UserCustomPropertiesSupplier +io.opentelemetry.javaagent.tooling.config.ConfigurationPropertiesSupplier +io.opentelemetry.javaagent.tooling.config.ConfigurationPropertiesSupplierTest$UserCustomPropertiesSupplier From 7b97caa1afa215281b3f1d82e97986aa8bde9ab4 Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Thu, 4 May 2023 18:47:21 +0200 Subject: [PATCH 2/2] typo --- .../javaagent/logging/simple/Slf4jSimpleLoggingCustomizer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javaagent-internal-logging-simple/src/main/java/io/opentelemetry/javaagent/logging/simple/Slf4jSimpleLoggingCustomizer.java b/javaagent-internal-logging-simple/src/main/java/io/opentelemetry/javaagent/logging/simple/Slf4jSimpleLoggingCustomizer.java index 53682728bb2e..d99bf47885da 100644 --- a/javaagent-internal-logging-simple/src/main/java/io/opentelemetry/javaagent/logging/simple/Slf4jSimpleLoggingCustomizer.java +++ b/javaagent-internal-logging-simple/src/main/java/io/opentelemetry/javaagent/logging/simple/Slf4jSimpleLoggingCustomizer.java @@ -36,7 +36,7 @@ public void init(EarlyInitAgentConfig earlyConfig) { setSystemPropertyDefault( SIMPLE_LOGGER_DATE_TIME_FORMAT_PROPERTY, SIMPLE_LOGGER_DATE_TIME_FORMAT_DEFAULT); - if (earlyConfig.getBoolean("otel.javaagent.debut", false)) { + if (earlyConfig.getBoolean("otel.javaagent.debug", false)) { setSystemPropertyDefault(SIMPLE_LOGGER_DEFAULT_LOG_LEVEL_PROPERTY, "DEBUG"); setSystemPropertyDefault(SIMPLE_LOGGER_PREFIX + "okhttp3.internal.http2", "INFO"); }