Class 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.
    • Field Detail

      • PRINTABLE_JVM_NATIVE_STREAM

        private static final java.lang.String PRINTABLE_JVM_NATIVE_STREAM
        See Also:
        Constant Field Values
      • START_TIME_NEGATIVE_TIMEOUT

        private static final long START_TIME_NEGATIVE_TIMEOUT
        See Also:
        Constant Field Values
      • testVmSystemProperties

        private final java.util.Map<java.lang.String,​java.lang.String> testVmSystemProperties
      • 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 received test-set.
      • printedErrorStream

        private final java.util.concurrent.atomic.AtomicBoolean printedErrorStream
        prevents from printing same warning
      • saidGoodBye

        private volatile boolean saidGoodBye
        Written by one Thread and read by another: Main Thread and ForkStarter's Thread.
      • forkNumber

        private volatile 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 seconds
        forkedProcessTimeoutInSeconds - timeout in seconds given by MOJO
      • consumeLine

        public final void consumeLine​(java.lang.String s)
        Specified by:
        consumeLine in interface org.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
      • getOrCreateConsoleLogger

        private ConsoleLogger getOrCreateConsoleLogger()
      • close

        public void close​(boolean hadTimeout)
      • isSaidGoodBye

        public final boolean isSaidGoodBye()
      • isErrorInFork

        public final boolean isErrorInFork()
      • testsInProgress

        public java.util.Set<java.lang.String> testsInProgress()
      • hasTestsInProgress

        public boolean hasTestsInProgress()
      • setForkNumber

        public void setForkNumber​(int forkNumber)