Skip to content

Commit 0603369

Browse files
committed
Add shading test
1 parent d93fc76 commit 0603369

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent;
7+
8+
import static java.util.Arrays.asList;
9+
import static org.assertj.core.api.Assertions.assertThat;
10+
11+
import java.io.File;
12+
import java.lang.management.ManagementFactory;
13+
import java.lang.management.RuntimeMXBean;
14+
import java.util.ArrayList;
15+
import java.util.List;
16+
import java.util.jar.JarEntry;
17+
import java.util.jar.JarFile;
18+
import org.junit.jupiter.api.Test;
19+
20+
class ShadingTest {
21+
22+
private static final List<String> EXPECTED_ENTRY_PREFIXES =
23+
asList("io/opentelemetry/javaagent/", "inst/", "META-INF/");
24+
25+
@Test
26+
void agentJarContainsOnlyExpectedEntries() throws Exception {
27+
String agentJarPath = getAgentJarPath();
28+
assertThat(agentJarPath).isNotNull();
29+
30+
File agentJar = new File(agentJarPath);
31+
assertThat(agentJar).exists();
32+
assertThat(agentJar).isFile();
33+
34+
List<String> unexpectedEntries = new ArrayList<>();
35+
36+
try (JarFile jarFile = new JarFile(agentJar)) {
37+
jarFile.stream()
38+
.map(JarEntry::getName)
39+
.filter(entryName -> !entryName.endsWith("/")) // Skip directories
40+
.forEach(
41+
entryName -> {
42+
boolean isExpected =
43+
EXPECTED_ENTRY_PREFIXES.stream().anyMatch(entryName::startsWith);
44+
if (!isExpected) {
45+
unexpectedEntries.add(entryName);
46+
}
47+
});
48+
}
49+
50+
assertThat(unexpectedEntries)
51+
.as(
52+
"Agent jar should only contain entries with expected prefixes: %s",
53+
EXPECTED_ENTRY_PREFIXES)
54+
.isEmpty();
55+
}
56+
57+
private static String getAgentJarPath() {
58+
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
59+
for (String arg : runtimeMxBean.getInputArguments()) {
60+
if (arg.startsWith("-javaagent:")) {
61+
return arg.substring("-javaagent:".length());
62+
}
63+
}
64+
return null;
65+
}
66+
}

0 commit comments

Comments
 (0)