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 static class
ForkClient.OperationalData
-
Field Summary
Fields Modifier and Type Field Description private DefaultReporterFactory
defaultReporterFactory
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
Used by single Thread started byThreadedStreamConsumer
and therefore does not need to be volatile.private java.util.concurrent.atomic.AtomicLong
testSetStartedAt
testSetStartedAt
is set to non-zero after receivedtest-set
.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 java.lang.String
createConsoleMessage(java.lang.String remaining)
private TestSetReportEntry
createReportEntry(java.lang.String untokenized)
private TestSetReportEntry
createReportEntry(java.lang.String untokenized, java.util.Map<java.lang.String,java.lang.String> systemProperties)
private StackTraceWriter
deserializeStackTraceWriter(java.util.StringTokenizer tokens)
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)
private void
logStreamWarning(java.lang.Throwable e, java.lang.String event)
private java.lang.String
nullableCsv(java.lang.String source)
private void
processLine(java.lang.String event)
private void
setCurrentStartTime()
protected void
stopOnNextTest()
java.util.Set<java.lang.String>
testsInProgress()
void
tryToTimeout(long currentTimeMillis, int forkedProcessTimeoutInSeconds)
Called in concurrent Thread.private java.lang.String
unescape(java.lang.String source)
private void
writeTestOutput(java.lang.String remaining, 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 receivedtest-set
.
-
log
private final ConsoleLogger log
-
printedErrorStream
private final java.util.concurrent.atomic.AtomicBoolean printedErrorStream
prevents from printing same warning
-
forkNumber
private final int forkNumber
-
testSetReporter
private RunListener testSetReporter
Used by single Thread started byThreadedStreamConsumer
and therefore does not need to be volatile.
-
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()
-
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)
-
logStreamWarning
private void logStreamWarning(java.lang.String event)
-
logStreamWarning
private void logStreamWarning(java.lang.Throwable e, java.lang.String event)
-
writeTestOutput
private void writeTestOutput(java.lang.String remaining, boolean isStdout)
-
consumeMultiLineContent
public final void consumeMultiLineContent(java.lang.String s) throws java.io.IOException
- Throws:
java.io.IOException
-
createConsoleMessage
private java.lang.String createConsoleMessage(java.lang.String remaining)
-
createReportEntry
private TestSetReportEntry createReportEntry(java.lang.String untokenized)
-
createReportEntry
private TestSetReportEntry createReportEntry(java.lang.String untokenized, java.util.Map<java.lang.String,java.lang.String> systemProperties)
-
deserializeStackTraceWriter
private StackTraceWriter deserializeStackTraceWriter(java.util.StringTokenizer tokens)
-
nullableCsv
private java.lang.String nullableCsv(java.lang.String source)
-
unescape
private java.lang.String unescape(java.lang.String source)
-
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()
-
-