Skip to content

Commit

Permalink
Ignore threads created by Testcontainers
Browse files Browse the repository at this point in the history
  • Loading branch information
lhotari committed Nov 1, 2023
1 parent 2daace5 commit 8525e87
Showing 1 changed file with 24 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Field;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collections;
Expand Down Expand Up @@ -56,6 +57,16 @@ public class ThreadLeakDetectorListener extends BetweenTestClassesListenerAdapte

private Set<ThreadKey> capturedThreadKeys;

private static Field THREAD_TARGET_FIELD;
static {
try {
THREAD_TARGET_FIELD = Thread.class.getDeclaredField("target");
THREAD_TARGET_FIELD.setAccessible(true);
} catch (NoSuchFieldException e) {
LOG.warn("Cannot find target field in Thread.class", e);
THREAD_TARGET_FIELD = null;
}
}

@Override
protected void onBetweenTestClasses(Class<?> endedTestClass, Class<?> startedTestClass) {
Expand Down Expand Up @@ -206,6 +217,19 @@ private static boolean shouldSkipThread(Thread thread) {
return true;
}
}
Runnable target = null;
try {
target = (Runnable) THREAD_TARGET_FIELD.get(thread);
} catch (IllegalAccessException e) {
LOG.warn("Cannot access target field in Thread.class", e);
}
if (target != null) {
String targetClassName = target.getClass().getName();
// ignore threads created by Testcontainers
if (targetClassName.startsWith("org.testcontainers.")) {
return true;
}
}
return false;
}

Expand Down

0 comments on commit 8525e87

Please sign in to comment.