Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ We use [semantic versioning](http://semver.org/):

# Next version

- _agent_: improved logging when multiple agents are attached

# 36.1.0
- [feature] _impacted-test-engine_: Added support for JUnit 5.13 and 6.0
- [feature] _agent_: Added support for Java 25 and experimental support for Java 26
Expand Down
10 changes: 8 additions & 2 deletions agent/src/main/java/com/teamscale/jacoco/agent/PreMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,14 @@ private static Pair<AgentOptions, List<Exception>> getAndApplyAgentOptions(Strin
List<String> javaAgents = ManagementFactory.getRuntimeMXBean().getInputArguments().stream().filter(
s -> s.contains("-javaagent")).collect(Collectors.toList());
// We allow multiple instances of the teamscale-jacoco-agent as we ensure with the #LOCKING_SYSTEM_PROPERTY to only use it once
if (!javaAgents.stream().allMatch(javaAgent -> javaAgent.contains("teamscale-jacoco-agent.jar"))) {
delayedLogger.warn("Using multiple java agents could interfere with coverage recording.");
List<String> differentAgents = javaAgents.stream()
.filter(javaAgent -> !javaAgent.contains("teamscale-jacoco-agent.jar")).collect(
Collectors.toList());

if (!differentAgents.isEmpty()) {
delayedLogger.warn(
"Using multiple java agents could interfere with coverage recording: " +
String.join(", ", differentAgents));
}
if (!javaAgents.get(0).contains("teamscale-jacoco-agent.jar")) {
delayedLogger.warn("For best results consider registering the Teamscale Java Profiler first.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class MultipleAgentsTest {
assertThat(LOG_DIRECTORY).exists()
val lines = LOG_DIRECTORY.resolve("teamscale-jacoco-agent.log").readLines()
assertThat(lines)
.anyMatch { it.contains("Using multiple java agents could interfere with coverage recording.") }
.anyMatch { it.contains("Using multiple java agents could interfere with coverage recording") }
assertThat(lines)
.anyMatch { it.contains("For best results consider registering the Teamscale Java Profiler first.") }
}
Expand Down
Loading