ConfigurationFileLoaderTest.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * Copyright The OpenTelemetry Authors
  3. * SPDX-License-Identifier: Apache-2.0
  4. */
  5. package io.opentelemetry.javaagent.tooling.config;
  6. import static java.util.Collections.singleton;
  7. import static java.util.Collections.singletonMap;
  8. import static org.assertj.core.api.Assertions.assertThat;
  9. import io.opentelemetry.api.GlobalOpenTelemetry;
  10. import io.opentelemetry.api.logs.GlobalLoggerProvider;
  11. import io.opentelemetry.javaagent.tooling.OpenTelemetryInstaller;
  12. import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
  13. import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
  14. import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
  15. import java.io.IOException;
  16. import java.nio.file.Files;
  17. import java.nio.file.Path;
  18. import org.junit.jupiter.api.AfterAll;
  19. import org.junit.jupiter.api.BeforeAll;
  20. import org.junit.jupiter.api.Test;
  21. import org.junit.jupiter.api.io.TempDir;
  22. import org.junitpioneer.jupiter.ClearSystemProperty;
  23. import org.junitpioneer.jupiter.SetSystemProperty;
  24. @ClearSystemProperty(key = ConfigurationFileLoader.CONFIGURATION_FILE_PROPERTY)
  25. class ConfigurationFileLoaderTest {
  26. @BeforeAll
  27. @AfterAll
  28. static void cleanUp() {
  29. GlobalOpenTelemetry.resetForTest();
  30. GlobalLoggerProvider.resetForTest();
  31. }
  32. // regression for https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/6696
  33. @SetSystemProperty(key = "otel.sdk.disabled", value = "true") // don't setup the SDK
  34. @Test
  35. void fileConfigOverwritesUserPropertiesSupplier(@TempDir Path tempDir) throws IOException {
  36. // given
  37. Path configFile = tempDir.resolve("test-config.properties");
  38. Files.write(configFile, singleton("custom.key = 42"));
  39. System.setProperty(ConfigurationFileLoader.CONFIGURATION_FILE_PROPERTY, configFile.toString());
  40. // when
  41. AutoConfiguredOpenTelemetrySdk autoConfiguredSdk =
  42. OpenTelemetryInstaller.installOpenTelemetrySdk();
  43. // then
  44. assertThat(autoConfiguredSdk.getConfig().getString("custom.key")).isEqualTo("42");
  45. }
  46. // SPI used in test
  47. public static class UserCustomPropertiesSupplier implements AutoConfigurationCustomizerProvider {
  48. @Override
  49. public void customize(AutoConfigurationCustomizer autoConfiguration) {
  50. autoConfiguration.addPropertiesSupplier(() -> singletonMap("custom.key", "123"));
  51. }
  52. }
  53. }