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.StreamConsumer
Knows how to reconstruct *all* the state transmitted over stdout by the forked process.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
ForkClient.AcquireNextTestListener
private class
ForkClient.ByeListener
private class
ForkClient.ConsoleListener
private class
ForkClient.DebugListener
private class
ForkClient.ErrorHandler
private class
ForkClient.ErrorListener
private class
ForkClient.StdErrListener
private class
ForkClient.StdOutListener
private class
ForkClient.StopOnNextTestListener
private class
ForkClient.SystemPropertiesListener
private class
ForkClient.TestAssumptionFailureListener
private class
ForkClient.TestErrorListener
private class
ForkClient.TestFailedListener
private class
ForkClient.TestSetCompletedListener
private class
ForkClient.TestSetStartingListener
private class
ForkClient.TestSkippedListener
private class
ForkClient.TestStartingListener
private class
ForkClient.TestSucceededListener
private class
ForkClient.WarningListener
-
Field Summary
Fields Modifier and Type Field Description private ForkedChannelDecoder
decoder
private DefaultReporterFactory
defaultReporterFactory
private ForkedChannelDecoderErrorHandler
errorHandler
Used by single Thread started byThreadedStreamConsumer
and therefore does not need to be volatile.private StackTraceWriter
errorInFork
private int
forkNumber
private ConsoleLogger
log
private NotifiableTestStream
notifiableTestStream
private static java.lang.String
PRINTABLE_JVM_NATIVE_STREAM
private java.util.concurrent.atomic.AtomicBoolean
printedErrorStream
prevents from printing same warningprivate boolean
saidGoodBye
Written by one Thread and read by another: Main Thread and ForkStarter's Thread.private static long
START_TIME_NEGATIVE_TIMEOUT
private static long
START_TIME_ZERO
private RunListener
testSetReporter
private java.util.concurrent.atomic.AtomicLong
testSetStartedAt
testSetStartedAt is set to non-zero after receivedForkedChannelEncoder.testSetStarting(ReportEntry, boolean)
.private java.util.Queue<java.lang.String>
testsInProgress
private 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 void
close(boolean hadTimeout)
void
consumeLine(java.lang.String s)
void
consumeMultiLineContent(java.lang.String s)
private StackTraceWriter
deserializeStackTraceWriter(java.lang.String stackTraceMessage, java.lang.String smartStackTrace, java.lang.String stackTrace)
private java.io.File
dumpToLoFile(java.lang.String msg, java.lang.Throwable e)
DefaultReporterFactory
getDefaultReporterFactory()
StackTraceWriter
getErrorInFork()
private ConsoleLogger
getOrCreateConsoleLogger()
private ConsoleOutputReceiver
getOrCreateConsoleOutputReceiver()
RunListener
getReporter()
Used when getting reporters on the plugin side of a fork.private RunListener
getTestSetReporter()
java.util.Map<java.lang.String,java.lang.String>
getTestVmSystemProperties()
boolean
hadTimeout()
boolean
hasTestsInProgress()
boolean
isErrorInFork()
boolean
isSaidGoodBye()
void
kill()
private void
logStreamWarning(java.lang.String event, java.lang.Throwable e)
private void
processLine(java.lang.String event)
private void
setCurrentStartTime()
protected void
stopOnNextTest()
Overridden by a subclass, seeForkStarter
.java.util.Set<java.lang.String>
testsInProgress()
void
tryToTimeout(long currentTimeMillis, int forkedProcessTimeoutInSeconds)
Called in concurrent Thread.private void
writeTestOutput(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 byThreadedStreamConsumer
and 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:
consumeLine
in 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)
-
-