From e7a2b6b8ef85dd154d048a6e1ae71123cfdcd77d Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 7 Oct 2025 19:04:38 +0200 Subject: [PATCH 1/8] convert to java --- .../MethodsConfigurationParserTest.groovy | 32 --------- .../MethodsConfigurationParserTest.java | 69 +++++++++++++++++++ 2 files changed, 69 insertions(+), 32 deletions(-) delete mode 100644 javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.groovy create mode 100644 javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.java diff --git a/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.groovy b/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.groovy deleted file mode 100644 index 1fe11b29b7f4..000000000000 --- a/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.groovy +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.tooling.config - - -import spock.lang.Specification - -import static java.util.Collections.emptySet - -class MethodsConfigurationParserTest extends Specification { - - def "test configuration #value"() { - expect: - MethodsConfigurationParser.parse(value) == expected - - where: - value | expected - null | [:] - " " | [:] - "some.package.ClassName" | ["some.package.ClassName":emptySet()] - "some.package.ClassName[ , ]" | [:] - "some.package.ClassName[ , method]" | [:] - "some.package.Class\$Name[ method , ]" | ["some.package.Class\$Name": ["method"].toSet()] - "ClassName[ method1,]" | ["ClassName": ["method1"].toSet()] - "ClassName[method1 , method2]" | ["ClassName": ["method1", "method2"].toSet()] - "Class\$1[method1 ] ; Class\$2[ method2];" | ["Class\$1": ["method1"].toSet(), "Class\$2": ["method2"].toSet()] - "Duplicate[method1] ; Duplicate[method2] ;Duplicate[method3];" | ["Duplicate": ["method3"].toSet()] - } -} diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.java new file mode 100644 index 000000000000..d9a62275face --- /dev/null +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.java @@ -0,0 +1,69 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.tooling.config; + +import static java.util.Collections.emptyMap; +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.stream.Stream; + +class MethodsConfigurationParserTest { + + @ParameterizedTest + @MethodSource("configurationTestData") + void testConfiguration(String value, Map> expected) { + Map> result = MethodsConfigurationParser.parse(value); + + assertThat(result).isEqualTo(expected); + } + + static Stream configurationTestData() { + return Stream.of( + Arguments.of(null, emptyMap()), + Arguments.of(" ", emptyMap()), + Arguments.of("some.package.ClassName", + Collections.>singletonMap("some.package.ClassName", + Collections.emptySet())), + Arguments.of("some.package.ClassName[ , ]", emptyMap()), + Arguments.of("some.package.ClassName[ , method]", emptyMap()), + Arguments.of("some.package.Class$Name[ method , ]", + Collections.singletonMap("some.package.Class$Name", createSet("method"))), + Arguments.of("ClassName[ method1,]", + Collections.singletonMap("ClassName", createSet("method1"))), + Arguments.of("ClassName[method1 , method2]", + Collections.singletonMap("ClassName", createSet("method1", "method2"))), + Arguments.of("Class$1[method1 ] ; Class$2[ method2];", + createTwoEntryMap("Class$1", createSet("method1"), "Class$2", createSet("method2"))), + Arguments.of("Duplicate[method1] ; Duplicate[method2] ;Duplicate[method3];", + Collections.singletonMap("Duplicate", createSet("method3"))) + ); + } + + private static Map> createTwoEntryMap(String key1, Set value1, + String key2, Set value2) { + Map> map = new HashMap<>(); + map.put(key1, value1); + map.put(key2, value2); + return map; + } + + private static Set createSet(String... elements) { + Set set = new HashSet<>(); + for (String element : elements) { + set.add(element); + } + return set; + } +} From 2e9eb2c6501f2e199e6405881303bdab53fdbd34 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 7 Oct 2025 19:12:00 +0200 Subject: [PATCH 2/8] convert to java --- .../config/ConfigurationFileTest.groovy | 90 --------------- .../tooling/config/ConfigurationFileTest.java | 104 ++++++++++++++++++ 2 files changed, 104 insertions(+), 90 deletions(-) delete mode 100644 javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.groovy create mode 100644 javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java 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 deleted file mode 100644 index 5f83eb57503a..000000000000 --- a/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.groovy +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.tooling.config - -import org.junit.Rule -import org.junit.contrib.java.lang.system.EnvironmentVariables -import spock.lang.Shared -import spock.lang.Specification -import spock.lang.TempDir -import spock.util.environment.RestoreSystemProperties - -@RestoreSystemProperties -class ConfigurationFileTest extends Specification { - - @Rule - public final EnvironmentVariables environmentVariables = new EnvironmentVariables() - - @TempDir - @Shared - public File tmpDir - - def "should use env property"() { - given: - def path = createFile("config", "property1=val-env") - environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", path) - - when: - def properties = ConfigurationFile.loadConfigFile() - - then: - properties.get("property1") == "val-env" - } - - def "should use system property"() { - given: - def path = createFile("config", "property1=val-sys") - System.setProperty("otel.javaagent.configuration-file", path) - - when: - def properties = ConfigurationFile.loadConfigFile() - - then: - properties.get("property1") == "val-sys" - } - - def "system property should take precedence over env property"() { - given: - def pathEnv = createFile("configEnv", "property1=val-env") - def pathSys = createFile("configSys", "property1=val-sys") - - environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", pathEnv) - System.setProperty("otel.javaagent.configuration-file", pathSys) - - when: - def properties = ConfigurationFile.loadConfigFile() - - then: - properties.get("property1") == "val-sys" - } - - - def "should return empty properties if file does not exist"() { - given: - environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", "somePath") - - when: - def properties = ConfigurationFile.loadConfigFile() - - then: - properties.isEmpty() - } - - def "should return empty properties if property is not set"() { - when: - def properties = ConfigurationFile.loadConfigFile() - - then: - properties.isEmpty() - } - - def createFile(String name, String contents) { - def file = new File(tmpDir, name) - file.write(contents) - return file.getAbsolutePath() - } - -} diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java new file mode 100644 index 000000000000..75c8b3db2f52 --- /dev/null +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java @@ -0,0 +1,104 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.tooling.config; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Rule; +import org.junit.contrib.java.lang.system.EnvironmentVariables; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Properties; + +class ConfigurationFileTest { + + @TempDir + File tmpDir; + + @Rule + public final EnvironmentVariables environmentVariables = new EnvironmentVariables(); + + private String originalSystemProperty; + private String originalEnvironmentVariable; + + @BeforeEach + void setUp() { + originalSystemProperty = System.getProperty("otel.javaagent.configuration-file"); + originalEnvironmentVariable = System.getenv("OTEL_JAVAAGENT_CONFIGURATION_FILE"); + System.clearProperty("otel.javaagent.configuration-file"); + } + + @AfterEach + void tearDown() { + if (originalSystemProperty != null) { + System.setProperty("otel.javaagent.configuration-file", originalSystemProperty); + } else { + System.clearProperty("otel.javaagent.configuration-file"); + } + } + + @Test + void shouldUseEnvVar() throws IOException { + String path = createFile("config", "property1=val-env"); + environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", path) + + Properties properties = ConfigurationFile.loadConfigFile(); + + assertThat(properties.get("property1")).isEqualTo("val-env"); + } + + @Test + void shouldUseSystemProperty() throws IOException { + String path = createFile("config", "property1=val-sys"); + System.setProperty("otel.javaagent.configuration-file", path); + + Properties properties = ConfigurationFile.loadConfigFile(); + + assertThat(properties.get("property1")).isEqualTo("val-sys"); + } + + @Test + void shouldUseSystemPropertyOverEnvVar() throws IOException { + def pathEnv = createFile("configEnv", "property1=val-env") + String path = createFile("config", "property1=val-sys"); + System.setProperty("otel.javaagent.configuration-file", path); + environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", pathEnv) + + Properties properties = ConfigurationFile.loadConfigFile(); + + assertThat(properties.get("property1")).isEqualTo("val-sys"); + } + + @Test + void shouldReturnEmptyPropertiesIfFileDoesNotExist() { + System.setProperty("otel.javaagent.configuration-file", "somePath"); + + Properties properties = ConfigurationFile.loadConfigFile(); + + assertThat(properties).isEmpty(); + } + + @Test + void shouldReturnEmptyPropertiesIfPropertyIsNotSet() { + Properties properties = ConfigurationFile.loadConfigFile(); + + assertThat(properties).isEmpty(); + } + + private String createFile(String name, String contents) throws IOException { + File file = new File(tmpDir, name); + try (FileWriter writer = new FileWriter(file)) { + writer.write(contents); + } + return file.getAbsolutePath(); + } +} From aaa1833b42c44cbe719ee38884d418a3e45c2edc Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 7 Oct 2025 19:15:35 +0200 Subject: [PATCH 3/8] convert to java --- .../tooling/config/ConfigurationFileTest.java | 39 ++++++++----------- .../MethodsConfigurationParserTest.java | 37 ++++++++++-------- 2 files changed, 37 insertions(+), 39 deletions(-) diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java index 75c8b3db2f52..409ce6c6a49f 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java @@ -7,6 +7,10 @@ import static org.assertj.core.api.Assertions.assertThat; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Map; import org.junit.Rule; import org.junit.contrib.java.lang.system.EnvironmentVariables; import org.junit.jupiter.api.AfterEach; @@ -14,26 +18,17 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Properties; - class ConfigurationFileTest { - @TempDir - File tmpDir; + @TempDir File tmpDir; - @Rule - public final EnvironmentVariables environmentVariables = new EnvironmentVariables(); + @Rule public final EnvironmentVariables environmentVariables = new EnvironmentVariables(); private String originalSystemProperty; - private String originalEnvironmentVariable; @BeforeEach void setUp() { originalSystemProperty = System.getProperty("otel.javaagent.configuration-file"); - originalEnvironmentVariable = System.getenv("OTEL_JAVAAGENT_CONFIGURATION_FILE"); System.clearProperty("otel.javaagent.configuration-file"); } @@ -49,11 +44,11 @@ void tearDown() { @Test void shouldUseEnvVar() throws IOException { String path = createFile("config", "property1=val-env"); - environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", path) + environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", path); - Properties properties = ConfigurationFile.loadConfigFile(); + Map properties = ConfigurationFile.loadConfigFile(); - assertThat(properties.get("property1")).isEqualTo("val-env"); + assertThat(properties).containsEntry("property1", "val-env"); } @Test @@ -61,35 +56,35 @@ void shouldUseSystemProperty() throws IOException { String path = createFile("config", "property1=val-sys"); System.setProperty("otel.javaagent.configuration-file", path); - Properties properties = ConfigurationFile.loadConfigFile(); + Map properties = ConfigurationFile.loadConfigFile(); - assertThat(properties.get("property1")).isEqualTo("val-sys"); + assertThat(properties).containsEntry("property1", "val-sys"); } @Test void shouldUseSystemPropertyOverEnvVar() throws IOException { - def pathEnv = createFile("configEnv", "property1=val-env") + String pathEnv = createFile("configEnv", "property1=val-env"); String path = createFile("config", "property1=val-sys"); System.setProperty("otel.javaagent.configuration-file", path); - environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", pathEnv) + environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", pathEnv); - Properties properties = ConfigurationFile.loadConfigFile(); + Map properties = ConfigurationFile.loadConfigFile(); - assertThat(properties.get("property1")).isEqualTo("val-sys"); + assertThat(properties).containsEntry("property1", "val-sys"); } @Test void shouldReturnEmptyPropertiesIfFileDoesNotExist() { System.setProperty("otel.javaagent.configuration-file", "somePath"); - Properties properties = ConfigurationFile.loadConfigFile(); + Map properties = ConfigurationFile.loadConfigFile(); assertThat(properties).isEmpty(); } @Test void shouldReturnEmptyPropertiesIfPropertyIsNotSet() { - Properties properties = ConfigurationFile.loadConfigFile(); + Map properties = ConfigurationFile.loadConfigFile(); assertThat(properties).isEmpty(); } diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.java index d9a62275face..7f055281c887 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.java @@ -8,16 +8,15 @@ import static java.util.Collections.emptyMap; import static org.assertj.core.api.Assertions.assertThat; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; class MethodsConfigurationParserTest { @@ -33,26 +32,30 @@ static Stream configurationTestData() { return Stream.of( Arguments.of(null, emptyMap()), Arguments.of(" ", emptyMap()), - Arguments.of("some.package.ClassName", - Collections.>singletonMap("some.package.ClassName", - Collections.emptySet())), + Arguments.of( + "some.package.ClassName", + Collections.>singletonMap( + "some.package.ClassName", Collections.emptySet())), Arguments.of("some.package.ClassName[ , ]", emptyMap()), Arguments.of("some.package.ClassName[ , method]", emptyMap()), - Arguments.of("some.package.Class$Name[ method , ]", + Arguments.of( + "some.package.Class$Name[ method , ]", Collections.singletonMap("some.package.Class$Name", createSet("method"))), - Arguments.of("ClassName[ method1,]", - Collections.singletonMap("ClassName", createSet("method1"))), - Arguments.of("ClassName[method1 , method2]", + Arguments.of( + "ClassName[ method1,]", Collections.singletonMap("ClassName", createSet("method1"))), + Arguments.of( + "ClassName[method1 , method2]", Collections.singletonMap("ClassName", createSet("method1", "method2"))), - Arguments.of("Class$1[method1 ] ; Class$2[ method2];", + Arguments.of( + "Class$1[method1 ] ; Class$2[ method2];", createTwoEntryMap("Class$1", createSet("method1"), "Class$2", createSet("method2"))), - Arguments.of("Duplicate[method1] ; Duplicate[method2] ;Duplicate[method3];", - Collections.singletonMap("Duplicate", createSet("method3"))) - ); + Arguments.of( + "Duplicate[method1] ; Duplicate[method2] ;Duplicate[method3];", + Collections.singletonMap("Duplicate", createSet("method3")))); } - private static Map> createTwoEntryMap(String key1, Set value1, - String key2, Set value2) { + private static Map> createTwoEntryMap( + String key1, Set value1, String key2, Set value2) { Map> map = new HashMap<>(); map.put(key1, value1); map.put(key2, value2); From 5fd6bf1539b6d83a4d4a5f29965d6e54a61c5e58 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 7 Oct 2025 19:31:34 +0200 Subject: [PATCH 4/8] convert to java --- .../tooling/config/ConfigurationFileTest.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java index 409ce6c6a49f..1109e4d2ac90 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java @@ -8,8 +8,11 @@ import static org.assertj.core.api.Assertions.assertThat; import java.io.File; -import java.io.FileWriter; import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.util.Map; import org.junit.Rule; import org.junit.contrib.java.lang.system.EnvironmentVariables; @@ -17,7 +20,9 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import org.junitpioneer.jupiter.ClearSystemProperty; +@ClearSystemProperty.ClearSystemProperties class ConfigurationFileTest { @TempDir File tmpDir; @@ -91,7 +96,8 @@ void shouldReturnEmptyPropertiesIfPropertyIsNotSet() { private String createFile(String name, String contents) throws IOException { File file = new File(tmpDir, name); - try (FileWriter writer = new FileWriter(file)) { + try (Writer writer = + new OutputStreamWriter(Files.newOutputStream(file.toPath()), StandardCharsets.UTF_8)) { writer.write(contents); } return file.getAbsolutePath(); From 05fc07b6538e67d91e6616c6cd171c53b970e5dd Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 7 Oct 2025 19:39:53 +0200 Subject: [PATCH 5/8] convert to java --- .../tooling/config/ConfigurationFileTest.java | 23 ++----------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java index 1109e4d2ac90..25c8f9a73ec8 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java +++ b/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java @@ -16,35 +16,16 @@ import java.util.Map; import org.junit.Rule; import org.junit.contrib.java.lang.system.EnvironmentVariables; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import org.junitpioneer.jupiter.ClearSystemProperty; -@ClearSystemProperty.ClearSystemProperties +@ClearSystemProperty(key = "otel.javaagent.configuration-file") class ConfigurationFileTest { @TempDir File tmpDir; - @Rule public final EnvironmentVariables environmentVariables = new EnvironmentVariables(); - - private String originalSystemProperty; - - @BeforeEach - void setUp() { - originalSystemProperty = System.getProperty("otel.javaagent.configuration-file"); - System.clearProperty("otel.javaagent.configuration-file"); - } - - @AfterEach - void tearDown() { - if (originalSystemProperty != null) { - System.setProperty("otel.javaagent.configuration-file", originalSystemProperty); - } else { - System.clearProperty("otel.javaagent.configuration-file"); - } - } + @Rule public EnvironmentVariables environmentVariables = new EnvironmentVariables(); @Test void shouldUseEnvVar() throws IOException { From 3e34eb34c75be56287a747c6c7d20a02c83795ae Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 8 Oct 2025 10:53:15 +0200 Subject: [PATCH 6/8] fix --- javaagent-tooling/build.gradle.kts | 8 ++++++++ .../tooling/config/ConfigurationFileTest.java | 11 ++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) rename javaagent-tooling/src/{test => testConfigFile}/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java (86%) diff --git a/javaagent-tooling/build.gradle.kts b/javaagent-tooling/build.gradle.kts index f0e78b82b54e..91a41da1ff55 100644 --- a/javaagent-tooling/build.gradle.kts +++ b/javaagent-tooling/build.gradle.kts @@ -113,6 +113,14 @@ testing { compileOnly("com.google.code.findbugs:annotations") } } + + val testConfigFile by registering(JvmTestSuite::class) { + dependencies { + implementation(project(":javaagent-tooling")) + // requires mockito-inline + implementation("uk.org.webcompere:system-stubs-jupiter") + } + } } } diff --git a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java b/javaagent-tooling/src/testConfigFile/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java similarity index 86% rename from javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java rename to javaagent-tooling/src/testConfigFile/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java index 25c8f9a73ec8..ec1b58291190 100644 --- a/javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java +++ b/javaagent-tooling/src/testConfigFile/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java @@ -14,18 +14,23 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.Map; -import org.junit.Rule; -import org.junit.contrib.java.lang.system.EnvironmentVariables; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.io.TempDir; import org.junitpioneer.jupiter.ClearSystemProperty; +import uk.org.webcompere.systemstubs.environment.EnvironmentVariables; +import uk.org.webcompere.systemstubs.jupiter.SystemStub; +import uk.org.webcompere.systemstubs.jupiter.SystemStubsExtension; +@ExtendWith(SystemStubsExtension.class) @ClearSystemProperty(key = "otel.javaagent.configuration-file") class ConfigurationFileTest { @TempDir File tmpDir; - @Rule public EnvironmentVariables environmentVariables = new EnvironmentVariables(); + @SystemStub private EnvironmentVariables environmentVariables; + +// @SystemStub private SystemProperties systemProperties; @Test void shouldUseEnvVar() throws IOException { From f230cb5d972e49c580456ff199bf4b190fb41e8e Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 8 Oct 2025 10:54:41 +0200 Subject: [PATCH 7/8] fix --- .../tooling/config/ConfigurationFileTest.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/javaagent-tooling/src/testConfigFile/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java b/javaagent-tooling/src/testConfigFile/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java index ec1b58291190..52e6d54261fe 100644 --- a/javaagent-tooling/src/testConfigFile/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java +++ b/javaagent-tooling/src/testConfigFile/java/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.java @@ -17,20 +17,19 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.io.TempDir; -import org.junitpioneer.jupiter.ClearSystemProperty; import uk.org.webcompere.systemstubs.environment.EnvironmentVariables; import uk.org.webcompere.systemstubs.jupiter.SystemStub; import uk.org.webcompere.systemstubs.jupiter.SystemStubsExtension; +import uk.org.webcompere.systemstubs.properties.SystemProperties; @ExtendWith(SystemStubsExtension.class) -@ClearSystemProperty(key = "otel.javaagent.configuration-file") class ConfigurationFileTest { @TempDir File tmpDir; @SystemStub private EnvironmentVariables environmentVariables; -// @SystemStub private SystemProperties systemProperties; + @SystemStub private SystemProperties systemProperties; @Test void shouldUseEnvVar() throws IOException { @@ -45,7 +44,7 @@ void shouldUseEnvVar() throws IOException { @Test void shouldUseSystemProperty() throws IOException { String path = createFile("config", "property1=val-sys"); - System.setProperty("otel.javaagent.configuration-file", path); + systemProperties.set("otel.javaagent.configuration-file", path); Map properties = ConfigurationFile.loadConfigFile(); @@ -56,7 +55,7 @@ void shouldUseSystemProperty() throws IOException { void shouldUseSystemPropertyOverEnvVar() throws IOException { String pathEnv = createFile("configEnv", "property1=val-env"); String path = createFile("config", "property1=val-sys"); - System.setProperty("otel.javaagent.configuration-file", path); + systemProperties.set("otel.javaagent.configuration-file", path); environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", pathEnv); Map properties = ConfigurationFile.loadConfigFile(); @@ -66,7 +65,7 @@ void shouldUseSystemPropertyOverEnvVar() throws IOException { @Test void shouldReturnEmptyPropertiesIfFileDoesNotExist() { - System.setProperty("otel.javaagent.configuration-file", "somePath"); + systemProperties.set("otel.javaagent.configuration-file", "somePath"); Map properties = ConfigurationFile.loadConfigFile(); From 2b9419288db1613658f75d8894e5f3c6fb6f33d8 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 8 Oct 2025 11:04:55 +0200 Subject: [PATCH 8/8] remove now unused and unmaintained lib --- conventions/src/main/kotlin/otel.java-conventions.gradle.kts | 1 - dependencyManagement/build.gradle.kts | 2 -- .../aws-lambda/aws-lambda-core-1.0/testing/build.gradle.kts | 1 - .../aws-lambda/aws-lambda-events-2.2/testing/build.gradle.kts | 1 - 4 files changed, 5 deletions(-) diff --git a/conventions/src/main/kotlin/otel.java-conventions.gradle.kts b/conventions/src/main/kotlin/otel.java-conventions.gradle.kts index 733196145942..a75c037899a6 100644 --- a/conventions/src/main/kotlin/otel.java-conventions.gradle.kts +++ b/conventions/src/main/kotlin/otel.java-conventions.gradle.kts @@ -209,7 +209,6 @@ testing { implementation("org.slf4j:log4j-over-slf4j") implementation("org.slf4j:jcl-over-slf4j") implementation("org.slf4j:jul-to-slf4j") - implementation("com.github.stefanbirkner:system-rules") } } } diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index 12b417dd9ab5..931b7a77bf9d 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -86,8 +86,6 @@ val DEPENDENCIES = listOf( "io.r2dbc:r2dbc-proxy:1.1.6.RELEASE", "ch.qos.logback:logback-classic:1.3.15", // 1.4+ requires Java 11+ - "com.github.stefanbirkner:system-lambda:1.2.1", - "com.github.stefanbirkner:system-rules:1.19.0", "uk.org.webcompere:system-stubs-jupiter:2.0.3", "com.uber.nullaway:nullaway:0.12.10", "commons-beanutils:commons-beanutils:1.11.0", diff --git a/instrumentation/aws-lambda/aws-lambda-core-1.0/testing/build.gradle.kts b/instrumentation/aws-lambda/aws-lambda-core-1.0/testing/build.gradle.kts index cfc8e4afb53f..0f4dee2475ba 100644 --- a/instrumentation/aws-lambda/aws-lambda-core-1.0/testing/build.gradle.kts +++ b/instrumentation/aws-lambda/aws-lambda-core-1.0/testing/build.gradle.kts @@ -11,5 +11,4 @@ dependencies { api("org.mockito:mockito-junit-jupiter") implementation("io.opentelemetry:opentelemetry-api") - implementation("com.github.stefanbirkner:system-lambda") } diff --git a/instrumentation/aws-lambda/aws-lambda-events-2.2/testing/build.gradle.kts b/instrumentation/aws-lambda/aws-lambda-events-2.2/testing/build.gradle.kts index 336b04342315..fa62cf0696bf 100644 --- a/instrumentation/aws-lambda/aws-lambda-events-2.2/testing/build.gradle.kts +++ b/instrumentation/aws-lambda/aws-lambda-events-2.2/testing/build.gradle.kts @@ -12,5 +12,4 @@ dependencies { api("org.mockito:mockito-junit-jupiter") implementation("io.opentelemetry:opentelemetry-api") - implementation("com.github.stefanbirkner:system-lambda") }