Skip to content

Commit f8ea19b

Browse files
zeitlingerlaurit
andauthored
Convert groovy config tests to java (#14912)
Co-authored-by: Lauri Tulmin <[email protected]>
1 parent 3cdde20 commit f8ea19b

File tree

9 files changed

+167
-127
lines changed

9 files changed

+167
-127
lines changed

conventions/src/main/kotlin/otel.java-conventions.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,6 @@ testing {
209209
implementation("org.slf4j:log4j-over-slf4j")
210210
implementation("org.slf4j:jcl-over-slf4j")
211211
implementation("org.slf4j:jul-to-slf4j")
212-
implementation("com.github.stefanbirkner:system-rules")
213212
}
214213
}
215214
}

dependencyManagement/build.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,6 @@ val DEPENDENCIES = listOf(
8686

8787
"io.r2dbc:r2dbc-proxy:1.1.6.RELEASE",
8888
"ch.qos.logback:logback-classic:1.3.15", // 1.4+ requires Java 11+
89-
"com.github.stefanbirkner:system-lambda:1.2.1",
90-
"com.github.stefanbirkner:system-rules:1.19.0",
9189
"uk.org.webcompere:system-stubs-jupiter:2.0.3",
9290
"com.uber.nullaway:nullaway:0.12.10",
9391
"commons-beanutils:commons-beanutils:1.11.0",

instrumentation/aws-lambda/aws-lambda-core-1.0/testing/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,4 @@ dependencies {
1111
api("org.mockito:mockito-junit-jupiter")
1212

1313
implementation("io.opentelemetry:opentelemetry-api")
14-
implementation("com.github.stefanbirkner:system-lambda")
1514
}

instrumentation/aws-lambda/aws-lambda-events-2.2/testing/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,4 @@ dependencies {
1212
api("org.mockito:mockito-junit-jupiter")
1313

1414
implementation("io.opentelemetry:opentelemetry-api")
15-
implementation("com.github.stefanbirkner:system-lambda")
1615
}

javaagent-tooling/build.gradle.kts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,14 @@ testing {
113113
compileOnly("com.google.code.findbugs:annotations")
114114
}
115115
}
116+
117+
val testConfigFile by registering(JvmTestSuite::class) {
118+
dependencies {
119+
implementation(project(":javaagent-tooling"))
120+
// requires mockito-inline
121+
implementation("uk.org.webcompere:system-stubs-jupiter")
122+
}
123+
}
116124
}
117125
}
118126

javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/ConfigurationFileTest.groovy

Lines changed: 0 additions & 90 deletions
This file was deleted.

javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.groovy

Lines changed: 0 additions & 32 deletions
This file was deleted.
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.tooling.config;
7+
8+
import static java.util.Collections.emptyMap;
9+
import static org.assertj.core.api.Assertions.assertThat;
10+
11+
import java.util.Arrays;
12+
import java.util.Collections;
13+
import java.util.HashMap;
14+
import java.util.HashSet;
15+
import java.util.Map;
16+
import java.util.Set;
17+
import java.util.stream.Stream;
18+
import org.junit.jupiter.params.ParameterizedTest;
19+
import org.junit.jupiter.params.provider.Arguments;
20+
import org.junit.jupiter.params.provider.MethodSource;
21+
22+
class MethodsConfigurationParserTest {
23+
24+
@ParameterizedTest
25+
@MethodSource("configurationTestData")
26+
void testConfiguration(String value, Map<String, Set<String>> expected) {
27+
Map<String, Set<String>> result = MethodsConfigurationParser.parse(value);
28+
29+
assertThat(result).isEqualTo(expected);
30+
}
31+
32+
static Stream<Arguments> configurationTestData() {
33+
return Stream.of(
34+
Arguments.of(null, emptyMap()),
35+
Arguments.of(" ", emptyMap()),
36+
Arguments.of(
37+
"some.package.ClassName",
38+
Collections.<String, Set<String>>singletonMap(
39+
"some.package.ClassName", Collections.emptySet())),
40+
Arguments.of("some.package.ClassName[ , ]", emptyMap()),
41+
Arguments.of("some.package.ClassName[ , method]", emptyMap()),
42+
Arguments.of(
43+
"some.package.Class$Name[ method , ]",
44+
Collections.singletonMap("some.package.Class$Name", createSet("method"))),
45+
Arguments.of(
46+
"ClassName[ method1,]", Collections.singletonMap("ClassName", createSet("method1"))),
47+
Arguments.of(
48+
"ClassName[method1 , method2]",
49+
Collections.singletonMap("ClassName", createSet("method1", "method2"))),
50+
Arguments.of(
51+
"Class$1[method1 ] ; Class$2[ method2];",
52+
createTwoEntryMap("Class$1", createSet("method1"), "Class$2", createSet("method2"))),
53+
Arguments.of(
54+
"Duplicate[method1] ; Duplicate[method2] ;Duplicate[method3];",
55+
Collections.singletonMap("Duplicate", createSet("method3"))));
56+
}
57+
58+
private static Map<String, Set<String>> createTwoEntryMap(
59+
String key1, Set<String> value1, String key2, Set<String> value2) {
60+
Map<String, Set<String>> map = new HashMap<>();
61+
map.put(key1, value1);
62+
map.put(key2, value2);
63+
return map;
64+
}
65+
66+
private static Set<String> createSet(String... elements) {
67+
return new HashSet<>(Arrays.asList(elements));
68+
}
69+
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.tooling.config;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
10+
import java.io.File;
11+
import java.io.IOException;
12+
import java.io.OutputStreamWriter;
13+
import java.io.Writer;
14+
import java.nio.charset.StandardCharsets;
15+
import java.nio.file.Files;
16+
import java.util.Map;
17+
import org.junit.jupiter.api.Test;
18+
import org.junit.jupiter.api.extension.ExtendWith;
19+
import org.junit.jupiter.api.io.TempDir;
20+
import uk.org.webcompere.systemstubs.environment.EnvironmentVariables;
21+
import uk.org.webcompere.systemstubs.jupiter.SystemStub;
22+
import uk.org.webcompere.systemstubs.jupiter.SystemStubsExtension;
23+
import uk.org.webcompere.systemstubs.properties.SystemProperties;
24+
25+
@ExtendWith(SystemStubsExtension.class)
26+
class ConfigurationFileTest {
27+
28+
@TempDir File tmpDir;
29+
30+
@SystemStub private EnvironmentVariables environmentVariables;
31+
32+
@SystemStub private SystemProperties systemProperties;
33+
34+
@Test
35+
void shouldUseEnvVar() throws IOException {
36+
String path = createFile("config", "property1=val-env");
37+
environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", path);
38+
39+
Map<String, String> properties = ConfigurationFile.loadConfigFile();
40+
41+
assertThat(properties).containsEntry("property1", "val-env");
42+
}
43+
44+
@Test
45+
void shouldUseSystemProperty() throws IOException {
46+
String path = createFile("config", "property1=val-sys");
47+
systemProperties.set("otel.javaagent.configuration-file", path);
48+
49+
Map<String, String> properties = ConfigurationFile.loadConfigFile();
50+
51+
assertThat(properties).containsEntry("property1", "val-sys");
52+
}
53+
54+
@Test
55+
void shouldUseSystemPropertyOverEnvVar() throws IOException {
56+
String pathEnv = createFile("configEnv", "property1=val-env");
57+
String path = createFile("config", "property1=val-sys");
58+
systemProperties.set("otel.javaagent.configuration-file", path);
59+
environmentVariables.set("OTEL_JAVAAGENT_CONFIGURATION_FILE", pathEnv);
60+
61+
Map<String, String> properties = ConfigurationFile.loadConfigFile();
62+
63+
assertThat(properties).containsEntry("property1", "val-sys");
64+
}
65+
66+
@Test
67+
void shouldReturnEmptyPropertiesIfFileDoesNotExist() {
68+
systemProperties.set("otel.javaagent.configuration-file", "somePath");
69+
70+
Map<String, String> properties = ConfigurationFile.loadConfigFile();
71+
72+
assertThat(properties).isEmpty();
73+
}
74+
75+
@Test
76+
void shouldReturnEmptyPropertiesIfPropertyIsNotSet() {
77+
Map<String, String> properties = ConfigurationFile.loadConfigFile();
78+
79+
assertThat(properties).isEmpty();
80+
}
81+
82+
private String createFile(String name, String contents) throws IOException {
83+
File file = new File(tmpDir, name);
84+
try (Writer writer =
85+
new OutputStreamWriter(Files.newOutputStream(file.toPath()), StandardCharsets.UTF_8)) {
86+
writer.write(contents);
87+
}
88+
return file.getAbsolutePath();
89+
}
90+
}

0 commit comments

Comments
 (0)