in surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkedBooter.java [283:326]
private CommandListener createExitHandler(final PpidChecker ppidChecker) {
return new CommandListener() {
@Override
public void update(Command command) {
Shutdown shutdown = command.toShutdownData();
if (shutdown.isKill()) {
if (ppidChecker != null) {
ppidChecker.stop();
}
logger.error("Surefire is going to kill self fork JVM. " + "Received SHUTDOWN {" + shutdown
+ "} command from Maven shutdown hook.");
DumpErrorSingleton.getSingleton()
.dumpText("Killing self fork JVM. Received SHUTDOWN command from Maven shutdown hook."
+ NL
+ "Thread dump before killing the process (" + getProcessName() + "):"
+ NL
+ generateThreadDump());
kill();
} else if (shutdown.isExit()) {
if (ppidChecker != null) {
ppidChecker.stop();
}
cancelPingScheduler();
logger.error("Surefire is going to exit self fork JVM. " + "Received SHUTDOWN {" + shutdown
+ "} command from Maven shutdown hook.");
DumpErrorSingleton.getSingleton()
.dumpText("Exiting self fork JVM. Received SHUTDOWN command from Maven shutdown hook."
+ NL
+ "Thread dump before exiting the process (" + getProcessName() + "):"
+ NL
+ generateThreadDump());
exitBarrier.release();
exit1();
} else {
// else refers to shutdown=testset, but not used now, keeping reader open
DumpErrorSingleton.getSingleton()
.dumpText(
"Thread dump for process (" + getProcessName() + "):" + NL + generateThreadDump());
}
}
};
}