Class ForkClient
- java.lang.Object
-
- org.apache.maven.plugin.surefire.booterclient.output.ForkClient
-
- All Implemented Interfaces:
org.apache.maven.shared.utils.cli.StreamConsumer
public class ForkClient extends java.lang.Object implements org.apache.maven.shared.utils.cli.StreamConsumerKnows how to reconstruct *all* the state transmitted over stdout by the forked process.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classForkClient.AcquireNextTestListenerprivate classForkClient.ByeListenerprivate classForkClient.ConsoleListenerprivate classForkClient.DebugListenerprivate classForkClient.ErrorHandlerprivate classForkClient.ErrorListenerprivate classForkClient.StdErrListenerprivate classForkClient.StdOutListenerprivate classForkClient.StopOnNextTestListenerprivate classForkClient.SystemPropertiesListenerprivate classForkClient.TestAssumptionFailureListenerprivate classForkClient.TestErrorListenerprivate classForkClient.TestFailedListenerprivate classForkClient.TestSetCompletedListenerprivate classForkClient.TestSetStartingListenerprivate classForkClient.TestSkippedListenerprivate classForkClient.TestStartingListenerprivate classForkClient.TestSucceededListenerprivate classForkClient.WarningListener
-
Field Summary
Fields Modifier and Type Field Description private ForkedChannelDecoderdecoderprivate DefaultReporterFactorydefaultReporterFactoryprivate ForkedChannelDecoderErrorHandlererrorHandlerUsed by single Thread started byThreadedStreamConsumerand therefore does not need to be volatile.private StackTraceWritererrorInForkprivate intforkNumberprivate ConsoleLoggerlogprivate NotifiableTestStreamnotifiableTestStreamprivate static java.lang.StringPRINTABLE_JVM_NATIVE_STREAMprivate java.util.concurrent.atomic.AtomicBooleanprintedErrorStreamprevents from printing same warningprivate booleansaidGoodByeWritten by one Thread and read by another: Main Thread and ForkStarter's Thread.private static longSTART_TIME_NEGATIVE_TIMEOUTprivate static longSTART_TIME_ZEROprivate RunListenertestSetReporterprivate java.util.concurrent.atomic.AtomicLongtestSetStartedAttestSetStartedAt is set to non-zero after receivedForkedChannelEncoder.testSetStarting(ReportEntry, boolean).private java.util.Queue<java.lang.String>testsInProgressprivate java.util.Map<java.lang.String,java.lang.String>testVmSystemProperties
-
Constructor Summary
Constructors Constructor Description ForkClient(DefaultReporterFactory defaultReporterFactory, NotifiableTestStream notifiableTestStream, ConsoleLogger log, java.util.concurrent.atomic.AtomicBoolean printedErrorStream, int forkNumber)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose(boolean hadTimeout)voidconsumeLine(java.lang.String s)voidconsumeMultiLineContent(java.lang.String s)private StackTraceWriterdeserializeStackTraceWriter(java.lang.String stackTraceMessage, java.lang.String smartStackTrace, java.lang.String stackTrace)private java.io.FiledumpToLoFile(java.lang.String msg, java.lang.Throwable e)DefaultReporterFactorygetDefaultReporterFactory()StackTraceWritergetErrorInFork()private ConsoleLoggergetOrCreateConsoleLogger()private ConsoleOutputReceivergetOrCreateConsoleOutputReceiver()RunListenergetReporter()Used when getting reporters on the plugin side of a fork.private RunListenergetTestSetReporter()java.util.Map<java.lang.String,java.lang.String>getTestVmSystemProperties()booleanhadTimeout()booleanhasTestsInProgress()booleanisErrorInFork()booleanisSaidGoodBye()voidkill()private voidlogStreamWarning(java.lang.String event, java.lang.Throwable e)private voidprocessLine(java.lang.String event)private voidsetCurrentStartTime()protected voidstopOnNextTest()Overridden by a subclass, seeForkStarter.java.util.Set<java.lang.String>testsInProgress()voidtryToTimeout(long currentTimeMillis, int forkedProcessTimeoutInSeconds)Called in concurrent Thread.private voidwriteTestOutput(java.lang.String output, boolean newLine, boolean isStdout)
-
-
-
Field Detail
-
PRINTABLE_JVM_NATIVE_STREAM
private static final java.lang.String PRINTABLE_JVM_NATIVE_STREAM
- See Also:
- Constant Field Values
-
START_TIME_ZERO
private static final long START_TIME_ZERO
- See Also:
- Constant Field Values
-
START_TIME_NEGATIVE_TIMEOUT
private static final long START_TIME_NEGATIVE_TIMEOUT
- See Also:
- Constant Field Values
-
defaultReporterFactory
private final DefaultReporterFactory defaultReporterFactory
-
testVmSystemProperties
private final java.util.Map<java.lang.String,java.lang.String> testVmSystemProperties
-
notifiableTestStream
private final NotifiableTestStream notifiableTestStream
-
testsInProgress
private final java.util.Queue<java.lang.String> testsInProgress
-
testSetStartedAt
private final java.util.concurrent.atomic.AtomicLong testSetStartedAt
testSetStartedAt is set to non-zero after receivedForkedChannelEncoder.testSetStarting(ReportEntry, boolean).
-
decoder
private final ForkedChannelDecoder decoder
-
log
private final ConsoleLogger log
-
printedErrorStream
private final java.util.concurrent.atomic.AtomicBoolean printedErrorStream
prevents from printing same warning
-
forkNumber
private final int forkNumber
-
errorHandler
private final ForkedChannelDecoderErrorHandler errorHandler
Used by single Thread started byThreadedStreamConsumerand therefore does not need to be volatile.
-
testSetReporter
private RunListener testSetReporter
-
saidGoodBye
private volatile boolean saidGoodBye
Written by one Thread and read by another: Main Thread and ForkStarter's Thread.
-
errorInFork
private volatile StackTraceWriter errorInFork
-
-
Constructor Detail
-
ForkClient
public ForkClient(DefaultReporterFactory defaultReporterFactory, NotifiableTestStream notifiableTestStream, ConsoleLogger log, java.util.concurrent.atomic.AtomicBoolean printedErrorStream, int forkNumber)
-
-
Method Detail
-
stopOnNextTest
protected void stopOnNextTest()
Overridden by a subclass, seeForkStarter.
-
kill
public void kill()
-
tryToTimeout
public final void tryToTimeout(long currentTimeMillis, int forkedProcessTimeoutInSeconds)Called in concurrent Thread. Will shutdown if timeout was reached.- Parameters:
currentTimeMillis- current time in millis secondsforkedProcessTimeoutInSeconds- timeout in seconds given by MOJO
-
getDefaultReporterFactory
public final DefaultReporterFactory getDefaultReporterFactory()
-
consumeLine
public final void consumeLine(java.lang.String s)
- Specified by:
consumeLinein interfaceorg.apache.maven.shared.utils.cli.StreamConsumer
-
setCurrentStartTime
private void setCurrentStartTime()
-
hadTimeout
public final boolean hadTimeout()
-
getTestSetReporter
private RunListener getTestSetReporter()
-
processLine
private void processLine(java.lang.String event)
-
dumpToLoFile
private java.io.File dumpToLoFile(java.lang.String msg, java.lang.Throwable e)
-
logStreamWarning
private void logStreamWarning(java.lang.String event, java.lang.Throwable e)
-
writeTestOutput
private void writeTestOutput(java.lang.String output, boolean newLine, boolean isStdout)
-
consumeMultiLineContent
public final void consumeMultiLineContent(java.lang.String s) throws java.io.IOException- Throws:
java.io.IOException
-
getTestVmSystemProperties
public final java.util.Map<java.lang.String,java.lang.String> getTestVmSystemProperties()
-
getReporter
public final RunListener getReporter()
Used when getting reporters on the plugin side of a fork. Used by testing purposes only. May not be volatile variable.- Returns:
- A mock provider reporter
-
getOrCreateConsoleOutputReceiver
private ConsoleOutputReceiver getOrCreateConsoleOutputReceiver()
-
getOrCreateConsoleLogger
private ConsoleLogger getOrCreateConsoleLogger()
-
close
public void close(boolean hadTimeout)
-
isSaidGoodBye
public final boolean isSaidGoodBye()
-
getErrorInFork
public final StackTraceWriter getErrorInFork()
-
isErrorInFork
public final boolean isErrorInFork()
-
testsInProgress
public java.util.Set<java.lang.String> testsInProgress()
-
hasTestsInProgress
public boolean hasTestsInProgress()
-
deserializeStackTraceWriter
private StackTraceWriter deserializeStackTraceWriter(java.lang.String stackTraceMessage, java.lang.String smartStackTrace, java.lang.String stackTrace)
-
-