Package org.apache.maven.surefire.booter
Class CommandReader
- java.lang.Object
-
- org.apache.maven.surefire.booter.CommandReader
-
- All Implemented Interfaces:
CommandChainReader
public final class CommandReader extends java.lang.Object implements CommandChainReader
Reader of commands coming from plugin(master) process.- Since:
- 2.19
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
CommandReader.ClassesIterable
private class
CommandReader.ClassesIterator
private class
CommandReader.CommandRunnable
-
Field Summary
Fields Modifier and Type Field Description private java.lang.Thread
commandThread
private MasterProcessChannelDecoder
decoder
private int
iteratedCount
private static java.lang.String
LAST_TEST_SYMBOL
private java.util.Queue<BiProperty<MasterProcessCommand,CommandListener>>
listeners
private ConsoleLogger
logger
private java.util.concurrent.Semaphore
nextCommandNotifier
private Shutdown
shutdown
private java.util.concurrent.CountDownLatch
startMonitor
private java.util.concurrent.atomic.AtomicReference<java.lang.Thread.State>
state
private java.util.concurrent.CopyOnWriteArrayList<java.lang.String>
testClasses
-
Constructor Summary
Constructors Constructor Description CommandReader(MasterProcessChannelDecoder decoder, Shutdown shutdown, ConsoleLogger logger)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addByeAckListener(CommandListener listener)
private void
addListener(MasterProcessCommand cmd, CommandListener listener)
void
addNoopListener(CommandListener listener)
void
addShutdownListener(CommandListener listener)
void
addSkipNextTestsListener(CommandListener listener)
private void
awaitNextTest()
boolean
awaitStarted()
(package private) java.lang.Iterable<java.lang.String>
getIterableClasses(MasterProcessChannelEncoder eventChannel)
The iterator can be used only in one Thread.private boolean
insertToQueue(java.lang.String test)
private boolean
isQueueFull()
private boolean
isStopped()
(package private) java.util.Iterator<java.lang.String>
iterated()
private void
makeQueueFull()
void
stop()
private void
wakeupIterator()
-
-
-
Field Detail
-
LAST_TEST_SYMBOL
private static final java.lang.String LAST_TEST_SYMBOL
- See Also:
- Constant Field Values
-
listeners
private final java.util.Queue<BiProperty<MasterProcessCommand,CommandListener>> listeners
-
commandThread
private final java.lang.Thread commandThread
-
state
private final java.util.concurrent.atomic.AtomicReference<java.lang.Thread.State> state
-
startMonitor
private final java.util.concurrent.CountDownLatch startMonitor
-
nextCommandNotifier
private final java.util.concurrent.Semaphore nextCommandNotifier
-
testClasses
private final java.util.concurrent.CopyOnWriteArrayList<java.lang.String> testClasses
-
decoder
private final MasterProcessChannelDecoder decoder
-
shutdown
private final Shutdown shutdown
-
logger
private final ConsoleLogger logger
-
iteratedCount
private int iteratedCount
-
-
Constructor Detail
-
CommandReader
public CommandReader(MasterProcessChannelDecoder decoder, Shutdown shutdown, ConsoleLogger logger)
-
-
Method Detail
-
awaitStarted
public boolean awaitStarted() throws TestSetFailedException
- Specified by:
awaitStarted
in interfaceCommandChainReader
- Throws:
TestSetFailedException
-
addSkipNextTestsListener
public void addSkipNextTestsListener(CommandListener listener)
- Specified by:
addSkipNextTestsListener
in interfaceCommandChainReader
-
addShutdownListener
public void addShutdownListener(CommandListener listener)
- Specified by:
addShutdownListener
in interfaceCommandChainReader
-
addNoopListener
public void addNoopListener(CommandListener listener)
-
addByeAckListener
public void addByeAckListener(CommandListener listener)
-
addListener
private void addListener(MasterProcessCommand cmd, CommandListener listener)
-
iterated
java.util.Iterator<java.lang.String> iterated()
- Returns:
- test classes which have been retrieved by
getIterableClasses(MasterProcessChannelEncoder)
.
-
getIterableClasses
java.lang.Iterable<java.lang.String> getIterableClasses(MasterProcessChannelEncoder eventChannel)
The iterator can be used only in one Thread. Two simultaneous instances are not allowed for sake of only onenextCommandNotifier
.- Parameters:
eventChannel
- original stream in current JVM process- Returns:
- Iterator with test classes lazily loaded as commands from the main process
-
stop
public void stop()
-
isStopped
private boolean isStopped()
-
isQueueFull
private boolean isQueueFull()
- Returns:
true
ifLAST_TEST_SYMBOL
found at the last index intestClasses
.
-
makeQueueFull
private void makeQueueFull()
-
insertToQueue
private boolean insertToQueue(java.lang.String test)
-
awaitNextTest
private void awaitNextTest()
-
wakeupIterator
private void wakeupIterator()
-
-