Package org.apache.maven.surefire.booter
Class ForkedBooter
- java.lang.Object
-
- org.apache.maven.surefire.booter.ForkedBooter
-
public final class ForkedBooter extends java.lang.ObjectThe part of the booter that is unique to a forked vm.
Deals with deserialization of the booter wire-level protocol
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classForkedBooter.PingScheduler
-
Field Summary
Fields Modifier and Type Field Description private CommandReadercommandReaderprivate static longDEFAULT_SYSTEM_EXIT_TIMEOUT_IN_SECONDSprivate java.util.concurrent.ScheduledThreadPoolExecutorjvmTerminatorprivate static java.lang.StringLAST_DITCH_SHUTDOWN_THREADprivate static longONE_SECOND_IN_MILLISprivate java.io.PrintStreamoriginalOutprivate static java.lang.StringPING_THREADprivate static longPING_TIMEOUT_IN_SECONDSprivate ForkedBooter.PingSchedulerpingSchedulerprivate ProviderConfigurationproviderConfigurationprivate StartupConfigurationstartupConfigurationprivate longsystemExitTimeoutInSecondsprivate java.lang.ObjecttestSet
-
Constructor Summary
Constructors Constructor Description ForkedBooter()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidacknowledgedExit()private static booleanacquireOnePermit(java.util.concurrent.Semaphore barrier, long timeoutMillis)private voidcancelPingScheduler()private static booleancanUseNewPingMechanism(PpidChecker pluginProcessChecker)private CommandListenercreateExitHandler()private ForkingReporterFactorycreateForkingReporterFactory()private CommandListenercreatePingHandler(java.util.concurrent.atomic.AtomicBoolean pingDone)private java.lang.RunnablecreatePingJob(java.util.concurrent.atomic.AtomicBoolean pingDone, PpidChecker pluginProcessChecker)private static java.util.concurrent.ScheduledExecutorServicecreatePingScheduler()private SurefireProvidercreateProviderInCurrentClassloader(ForkingReporterFactory reporterManagerFactory)private static java.io.InputStreamcreateSurefirePropertiesIfFileExists(java.lang.String tmpDir, java.lang.String propFileName)private java.lang.ObjectcreateTestSet(TypeEncodedValue forkedTestSet, boolean readTestsFromCommandReader, java.lang.ClassLoader cl)private voidencodeAndWriteToOutput(java.lang.String string)private voidexecute()private voidexit(int returnCode)private java.util.concurrent.ScheduledThreadPoolExecutorgetJvmTerminator()private RunResultinvokeProviderInSameClassLoader(ForkingReporterFactory factory)private static booleanisDebugging()private voidkill()private voidkill(int returnCode)private voidlaunchLastDitchDaemonShutdownThread(int returnCode)private ForkedBooter.PingSchedulerlistenToShutdownCommands(java.lang.Long ppid)static voidmain(java.lang.String... args)This method is invoked when Surefire is forked - this method parses and organizes the arguments passed to it and then calls the Surefire class' run method.private java.lang.RunnableprocessCheckerJob(ForkedBooter.PingScheduler pingMechanism)private RunResultrunSuitesInProcess()private voidsetupBooter(java.lang.String tmpDir, java.lang.String dumpFileName, java.lang.String surefirePropsFileName, java.lang.String effectiveSystemPropertiesFileName)
-
-
-
Field Detail
-
DEFAULT_SYSTEM_EXIT_TIMEOUT_IN_SECONDS
private static final long DEFAULT_SYSTEM_EXIT_TIMEOUT_IN_SECONDS
- See Also:
- Constant Field Values
-
PING_TIMEOUT_IN_SECONDS
private static final long PING_TIMEOUT_IN_SECONDS
- See Also:
- Constant Field Values
-
ONE_SECOND_IN_MILLIS
private static final long ONE_SECOND_IN_MILLIS
- See Also:
- Constant Field Values
-
LAST_DITCH_SHUTDOWN_THREAD
private static final java.lang.String LAST_DITCH_SHUTDOWN_THREAD
- See Also:
- Constant Field Values
-
PING_THREAD
private static final java.lang.String PING_THREAD
- See Also:
- Constant Field Values
-
commandReader
private final CommandReader commandReader
-
originalOut
private final java.io.PrintStream originalOut
-
systemExitTimeoutInSeconds
private volatile long systemExitTimeoutInSeconds
-
pingScheduler
private volatile ForkedBooter.PingScheduler pingScheduler
-
jvmTerminator
private java.util.concurrent.ScheduledThreadPoolExecutor jvmTerminator
-
providerConfiguration
private ProviderConfiguration providerConfiguration
-
startupConfiguration
private StartupConfiguration startupConfiguration
-
testSet
private java.lang.Object testSet
-
-
Method Detail
-
setupBooter
private void setupBooter(java.lang.String tmpDir, java.lang.String dumpFileName, java.lang.String surefirePropsFileName, java.lang.String effectiveSystemPropertiesFileName) throws java.io.IOException- Throws:
java.io.IOException
-
execute
private void execute()
-
createTestSet
private java.lang.Object createTestSet(TypeEncodedValue forkedTestSet, boolean readTestsFromCommandReader, java.lang.ClassLoader cl)
-
cancelPingScheduler
private void cancelPingScheduler()
-
listenToShutdownCommands
private ForkedBooter.PingScheduler listenToShutdownCommands(java.lang.Long ppid)
-
processCheckerJob
private java.lang.Runnable processCheckerJob(ForkedBooter.PingScheduler pingMechanism)
-
createPingHandler
private CommandListener createPingHandler(java.util.concurrent.atomic.AtomicBoolean pingDone)
-
createExitHandler
private CommandListener createExitHandler()
-
createPingJob
private java.lang.Runnable createPingJob(java.util.concurrent.atomic.AtomicBoolean pingDone, PpidChecker pluginProcessChecker)
-
encodeAndWriteToOutput
private void encodeAndWriteToOutput(java.lang.String string)
-
kill
private void kill()
-
kill
private void kill(int returnCode)
-
exit
private void exit(int returnCode)
-
acknowledgedExit
private void acknowledgedExit()
-
runSuitesInProcess
private RunResult runSuitesInProcess() throws SurefireExecutionException, TestSetFailedException, java.lang.reflect.InvocationTargetException
- Throws:
SurefireExecutionExceptionTestSetFailedExceptionjava.lang.reflect.InvocationTargetException
-
createForkingReporterFactory
private ForkingReporterFactory createForkingReporterFactory()
-
getJvmTerminator
private java.util.concurrent.ScheduledThreadPoolExecutor getJvmTerminator()
-
launchLastDitchDaemonShutdownThread
private void launchLastDitchDaemonShutdownThread(int returnCode)
-
invokeProviderInSameClassLoader
private RunResult invokeProviderInSameClassLoader(ForkingReporterFactory factory) throws TestSetFailedException, java.lang.reflect.InvocationTargetException
- Throws:
TestSetFailedExceptionjava.lang.reflect.InvocationTargetException
-
createProviderInCurrentClassloader
private SurefireProvider createProviderInCurrentClassloader(ForkingReporterFactory reporterManagerFactory)
-
main
public static void main(java.lang.String... args)
This method is invoked when Surefire is forked - this method parses and organizes the arguments passed to it and then calls the Surefire class' run method.
The system exit code will be 1 if an exception is thrown.- Parameters:
args- Commandline arguments
-
canUseNewPingMechanism
private static boolean canUseNewPingMechanism(PpidChecker pluginProcessChecker)
-
acquireOnePermit
private static boolean acquireOnePermit(java.util.concurrent.Semaphore barrier, long timeoutMillis)
-
createPingScheduler
private static java.util.concurrent.ScheduledExecutorService createPingScheduler()
-
createSurefirePropertiesIfFileExists
private static java.io.InputStream createSurefirePropertiesIfFileExists(java.lang.String tmpDir, java.lang.String propFileName) throws java.io.FileNotFoundException- Throws:
java.io.FileNotFoundException
-
isDebugging
private static boolean isDebugging()
-
-