|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object sofya.ed.structural.AbstractEventDispatcher sofya.ed.structural.ProgramEventDispatcher
public class ProgramEventDispatcher
A program event dispatcher is responsible for launching a subject program and dispatching an event stream of structural events observed during execution.
The program event dispatcher executes an instrumented subject in a separate Java virtual machine using a socket to receive the instrumentation probes. By implementing the event dispatcher in this manner, multi-threaded subjects can be monitored correctly (for coverage), subjects can be supplied specialized classpaths, and the event dispatcher can run other program event dispatchers as subjects.
The event dispatcher operates by creating a thread to receive and process instrumentation probes generated by the subject through a socket. The main thread then executes the subject in a separate JVM process and waits for it to terminate. It is considered paramount that a subject not be terminated unexpectedly so as to avoid an indeterminate or unstable system state. Therefore, termination of the subject is deferred as long as possible in the event of exceptions related to the event dispatcher. The socket connection to the subject is static and remains open until the subject terminates. This avoids severe performance degradation which is observed when transient socket connections are created for each trace message.
To support the static connection mechanism while preserving total self-
traceability, a SocketProbe is used for all subjects. This class is packaged
into a jar file that is added to the bootstrap classpath of the invoked
subject; thus the static method calls to the SocketProbe resolve to the copy
shared by the invoking event dispatcher, including when the subject is
another event dispatcher, without introducing any ambiguities regarding the
locations of subject classes in the classpath. A renamed copy of SocketProbe
is also cloned into the jar file at runtime when it is desired to trace the
execution of SocketProbe itself. If multiple event dispatchers are being
chained together, the original clone is copied to each subsequent
dispatcher. For additional details regarding how the instrumentation
connection is made from the subject,
see SocketProbe
.
When an event dispatcher is running another event dispatcher as its subject, a situation arises in which the subject event dispatcher is running in one JVM process, and the subject event dispatcher's SocketProbe (logically considered a component of the subject event dispatcher) is running in another JVM process. Thus to perform a complete trace of a subject event dispatcher, it is necessary to receive socket connections for trace messages from two different processes. The invoking event dispatcher handles this situation by detecting that the subject is another event dispatcher (or being informed as such) and starting two processing threads executing a special synchronized version of the probe processing method. The subject event dispatcher will be instrumented to start its SocketProbe in a special mode that timestamps the trace messages. The synchronized threads then use the timestamps to preserve the order of the trace messages during processing. All of this special handling is internal - the resulting event stream appears no different than that generated for a regular subject.
For security and performance reasons, the event dispatcher socket only listens on the local loopback address (127.0.0.1). This address is normally a virtual address in software which is never visible external to the machine and should not require data to go through the network hardware.
SocketProbe
,
Instrumentor
,
cfInstrumentor
Nested Class Summary |
---|
Nested classes/interfaces inherited from class sofya.ed.structural.AbstractEventDispatcher |
---|
AbstractEventDispatcher.CreateException, AbstractEventDispatcher.ExecException, AbstractEventDispatcher.SetupException, AbstractEventDispatcher.TraceFileException |
Field Summary | |
---|---|
protected static java.lang.String |
className
Name of the class currently set to be run by the dispatcher. |
protected static java.lang.String |
collectionsLib
Location of the commons-collections library. |
protected static EventDispatcherConfiguration |
config
The global configuration and resources for this event dispatcher. |
protected static boolean |
DEBUG
Conditional compilation debug flag. |
protected static char |
fileSep
Convenience variable to represent directory separation character. |
static int |
MAX_CONNECTIONS
Maximum number of instrumentation connections that can be accepted by the server socket (simultaneously). |
protected static java.lang.String |
outputFile
Name of output file to receive subject's output. |
protected static char |
pathSep
Convenience variable to represent path separation character. |
protected static boolean |
pipeInput
Flag to control whether stdin will be connected to the subject. |
protected static int |
port
Port on which socket should be opened to receive trace statements. |
protected SocketProcessingStrategy |
processingStrategy
The probe processing strategy that this dispatcher is configured to use. |
protected sofya.ed.structural.ProgramEventDispatcher.ProcessorExecutor[] |
processor
Holder array for the probe processor runners, only one element is used unless the subject is another event dispatcher. |
protected static java.lang.Thread[] |
processorThread
Holder array for the probe processing threads, only one element is used unless the subject is another event dispatcher. |
protected static java.io.PrintStream |
sbjout
Stream to which subject's output should be written. |
protected static java.net.ServerSocket |
serverSocket
Socket which accepts instrumentation connection(s). |
protected static java.io.PrintStream |
stderr
Stream to which filter's error outputs should be written. |
protected static java.io.PrintStream |
stdout
Stream to which filter's normal outputs should be written. |
protected static java.lang.String[] |
subjectArgs
Set of arguments that will be passed to the subject. |
protected static java.lang.String |
subjectCP
Java classpath that will be set for the subject when it is run. |
protected static int |
timeLimit
Maximum time subject is allowed to run (0 equals no limit). |
Fields inherited from class sofya.ed.structural.AbstractEventDispatcher |
---|
dispatcherReady, isInstrumented |
Method Summary | |
---|---|
protected void |
checkRunning(java.lang.String msg)
Checks whether the event dispatcher is currently running its subject and throws an exception if so. |
java.util.List |
configureDispatcher(java.util.List params)
Configures this event dispatcher using the specified set of command line parameters. |
java.util.List |
configureDispatcher(java.lang.String[] params)
Configures this event dispatcher using the specified set of command line parameters. |
void |
configureDispatcher(java.lang.String className,
java.lang.String[] subjectArgs,
java.lang.String subjectCP,
int port,
boolean pipeInput,
int timeLimit,
java.io.PrintStream sbjoutStream,
java.io.PrintStream stdoutStream,
java.io.PrintStream stderrStream)
Configures the event dispatcher with a new set of parameters to run a subject class. |
static ProgramEventDispatcher |
createBlockCoverageTracer(java.lang.String[] argv,
java.io.PrintStream sbjout,
java.io.PrintStream stdout,
java.io.PrintStream stderr)
Constructs a ready to run event dispatcher to collect basic block coverage traces, equivalent to the old Sofya Filter
class. |
static ProgramEventDispatcher |
createBlockSequenceTracer(java.lang.String[] argv,
java.io.PrintStream sbjout,
java.io.PrintStream stdout,
java.io.PrintStream stderr)
Constructs a ready to run event dispatcher to collect basic block sequence traces, equivalent to the old Sofya SequenceFilter class. |
static ProgramEventDispatcher |
createBranchCoverageTracer(java.lang.String[] argv,
java.io.PrintStream sbjout,
java.io.PrintStream stdout,
java.io.PrintStream stderr)
Constructs a ready to run event dispatcher to collect branch coverage traces, equivalent to the old Sofya BranchFilter class. |
static ProgramEventDispatcher |
createBranchSequenceTracer(java.lang.String[] argv,
java.io.PrintStream sbjout,
java.io.PrintStream stdout,
java.io.PrintStream stderr)
Constructs a ready to run event dispatcher to collect branch sequence traces, equivalent to the old Sofya BranchSequenceFilter class. |
static ProgramEventDispatcher |
createEventDispatcher(SocketProcessingStrategy strategy)
Factory method that returns a singleton instance of the event dispatcher. |
static ProgramEventDispatcher |
createEventDispatcher(SocketProcessingStrategy processingStrategy,
java.io.PrintStream sbjoutStream,
java.io.PrintStream stdoutStream,
java.io.PrintStream stderrStream)
Factory method that returns a singleton instance of the event dispatcher. |
static ProgramEventDispatcher |
createEventDispatcher(SocketProcessingStrategy processingStrategy,
java.lang.String className,
java.lang.String[] subjectArgs,
java.lang.String subjectCP,
int port,
boolean pipeInput,
int timeLimit,
java.io.PrintStream sbjoutStream,
java.io.PrintStream stdoutStream,
java.io.PrintStream stderrStream)
Factory method that returns a singleton instance of the event dispatcher. |
java.lang.String[] |
getClassArguments()
Gets the arguments to the subject class. |
java.lang.String |
getClassName()
Gets the name of the subject class. |
int |
getPort()
Gets the socket port on which the event dispatcher will listen for instrumentation from the subject. |
SocketProcessingStrategy |
getProcessingStrategy()
Gets the probe processing strategy currently in use by the event dispatcher. |
boolean |
getRedirectInput()
Reports whether the event dispatcher is set to redirect input on standard input to the subject's standard input stream. |
java.lang.String |
getSubjectClasspath()
Gets the subject classpath. |
java.lang.String |
getSubjectOutputFile()
Gets the name of the file to which subject output is redirected, if any. |
int |
getTimeLimit()
Gets the maximum time in seconds that a subject is allowed to run before being forcibly terminated. |
protected boolean |
isReady()
Reports whether the event dispatcher is ready to begin dispatching the event stream. |
void |
registerProcessor()
Registers the probe processor and any attached components. |
void |
release()
Releases this event dispatcher, its processing strategy, and any attached components. |
void |
reset()
Resets the event dispatcher configuration; the event dispatcher must be reconfigured before it can be run again. |
protected void |
runSubject()
Executes the subject, handling its inputs and outputs. |
void |
setClassArguments(java.lang.String[] arguments)
Sets the arguments to the subject class. |
void |
setClassName(java.lang.String value)
Sets the name of the subject class. |
void |
setPort(int port)
Sets the socket port on which the event dispatcher will listen for instrumentation from the subject. |
void |
setProcessingStrategy(SocketProcessingStrategy processingStrategy)
Sets the probe processing strategy to be used by the event dispatcher. |
void |
setRedirectInput(boolean enable)
Sets whether the event dispatcher will redirect input on standard input to the subject's standard input stream. |
void |
setStandardErrorStream(java.io.OutputStream stderrStream)
Sets the stream to which the event dispatcher error outputs will be written. |
void |
setStandardOutputStream(java.io.OutputStream stdoutStream)
Sets the stream to which the event dispatcher standard outputs will be written. |
void |
setSubjectClasspath(java.lang.String cp)
Sets the subject classpath. |
void |
setSubjectOutputFile(java.lang.String fileName)
Sets the file to which the subject's outputs should be redirected. |
void |
setSubjectOutputStream(java.io.OutputStream sbjoutStream)
Sets the stream to which subject outputs will be written. |
void |
setTimeLimit(int tl)
Sets the maximum time in seconds that a subject is allowed to run before being forcibly terminated. |
protected void |
setup()
Performs setup actions to prepare the event dispatcher and subject for execution. |
void |
startDispatcher()
Performs setup and runs the processing threads threads and subject. |
protected java.net.ServerSocket |
startServer()
Starts the server socket to receive the instrumentation connection(s). |
protected void |
startThreads()
Creates and starts the trace statement processing thread(s). |
protected void |
stop()
Signals the processing threads to stop. |
protected void |
stopServer()
Stops the server socket, signalling the end of the event stream. |
protected void |
waitOnThreads()
Waits for the probe processing threads to exit. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected SocketProcessingStrategy processingStrategy
protected sofya.ed.structural.ProgramEventDispatcher.ProcessorExecutor[] processor
protected static java.lang.Thread[] processorThread
protected static final boolean DEBUG
final
qualifier
and uncomment the -d
parameter detection in main, so that
this flag can be activated at the command line.
protected static EventDispatcherConfiguration config
protected static java.lang.String className
protected static java.lang.String[] subjectArgs
protected static java.lang.String subjectCP
protected static int port
protected static boolean pipeInput
-i
option is used. This is false by
default since it introduces the overhead of another thread and is not
consistent with the objectives of automated regression testing.
protected static int timeLimit
-tl
option.
protected static java.lang.String outputFile
sbjout
.
protected static java.io.PrintStream sbjout
protected static java.io.PrintStream stdout
protected static java.io.PrintStream stderr
protected static volatile java.net.ServerSocket serverSocket
protected static java.lang.String collectionsLib
protected static final char fileSep
protected static final char pathSep
public static final int MAX_CONNECTIONS
Method Detail |
---|
public static ProgramEventDispatcher createEventDispatcher(SocketProcessingStrategy strategy) throws AbstractEventDispatcher.CreateException
A singleton strategy is enforced because important parts of the class data are static. This is necessary to enable the multi-threaded probe processing strategy used when another event dispatcher is the subject, and for efficiency.
strategy
- Processing strategy to be used to process probes
received from the instrumentation.
CreateException
- If the commons-collections library could not be
found by the static initializer.
AbstractEventDispatcher.CreateException
public static ProgramEventDispatcher createEventDispatcher(SocketProcessingStrategy processingStrategy, java.io.PrintStream sbjoutStream, java.io.PrintStream stdoutStream, java.io.PrintStream stderrStream) throws AbstractEventDispatcher.CreateException
A singleton strategy is enforced because important parts of the class data are static. This is necessary to enable the multi-threaded probe processing strategy used when another event dispatcher is the subject, and for efficiency.
processingStrategy
- Processing strategy to be used to process
probes received from the instrumentation.sbjoutStream
- Output stream to which subject's outputs are to be
written. If null
, System.out
is used by
default.stdoutStream
- Output stream to which the event dispatcher's normal
outputs are to be written. If null
, System.out
is used by default. When the dispatcher is compiled in
DEBUG
mode, debug information is also printed to
this stream.stderrStream
- Output stream to which the event dispatcher's error
outputs are to be written. If null
, System.err
is used by default.
CreateException
- If the commons-collections library could not be
found by the static initializer.
AbstractEventDispatcher.CreateException
public static ProgramEventDispatcher createEventDispatcher(SocketProcessingStrategy processingStrategy, java.lang.String className, java.lang.String[] subjectArgs, java.lang.String subjectCP, int port, boolean pipeInput, int timeLimit, java.io.PrintStream sbjoutStream, java.io.PrintStream stdoutStream, java.io.PrintStream stderrStream) throws java.lang.IllegalArgumentException, AbstractEventDispatcher.CreateException
A singleton strategy is enforced because important parts of the class data are static. This is necessary to enable the multi-threaded probe processing strategy used when another event dispatcher is the subject, and for efficiency.
className
- Name of the subject class which is to be executed.subjectArgs
- Set of arguments to be passed to the subject class.subjectCP
- Java classpath that will be set for the subject when it
is executed.port
- The port number on which event dispatcher should listen
for incoming instrumentation messages from the subject. The valid range
is 1024 to 65535. An exception is the value -1, which instructs it
to select the default port.pipeInput
- If true
, the event dispatcher will
redirect input on the standard input stream to the subject's standard
input stream.timeLimit
- The length of time in seconds that the subject is
allowed to run before being killed.sbjoutStream
- Output stream to which subject's outputs are to be
written. If null
, System.out
is used by
default.stdoutStream
- Output stream to which the event dispatcher's normal
outputs are to be written. If null
, System.out
is used by default. When the dispatcher is compiled in
DEBUG
mode, debug information is also printed to
this stream.stderrStream
- Output stream to which the event dispatcher's error
outputs are to be written. If null
, System.err
is used by default.
CreateException
- If the commons-collections library could not be
found by the static initializer.
java.lang.IllegalArgumentException
- If required parameters are missing,
invalid parameters are encountered, or data required for optional
parameters is missing.
AbstractEventDispatcher.CreateException
protected void stop()
This method signals the processing threads to forcibly terminate. The socket connection will be closed and any necessary standard cleanup is performed. Use with caution; this will result in incomplete traces and inconsistent behavior in the subject.
public SocketProcessingStrategy getProcessingStrategy()
public void setProcessingStrategy(SocketProcessingStrategy processingStrategy)
processingStrategy
- The processing strategy to be used by the
event dispatcher to receive probes.public void reset()
protected boolean isReady()
true
if the event dispatcher and all attached
components indicate that they are ready to being dispatching the
event stream.public void release()
After release, attached components may have to be replaced or fully reinitialized.
public void registerProcessor()
protected java.net.ServerSocket startServer() throws AbstractEventDispatcher.ExecException
AbstractEventDispatcher.ExecException
- If there is an error binding the server socket.protected void stopServer()
public void startDispatcher() throws AbstractEventDispatcher.SetupException, AbstractEventDispatcher.ExecException
startDispatcher
in class AbstractEventDispatcher
SetupException
- If there is an error attempting to set up the
event dispatcher to run the subject.
AbstractEventDispatcher.ExecException
- If an error occurs executing the subject. This
does not include exceptions thrown by the subject itself, only errors
in the event dispatcher while attempting to interface with the subject.
AbstractEventDispatcher.SetupException
protected void setup() throws AbstractEventDispatcher.SetupException
This method is responsible for relocating the SocketProbe, patching the subject's classpath, and creating SocketProbeAlt.
SetupException
- If there is an error performing any of the
aforementioned tasks.
AbstractEventDispatcher.SetupException
protected void startThreads() throws AbstractEventDispatcher.ExecException
Starts the thread(s) to process incoming instrumentation messages.
AbstractEventDispatcher.ExecException
- If there is an error binding the server socket to
listen for incoming instrumentation messages.protected void waitOnThreads() throws AbstractEventDispatcher.ExecException
This method is used to ensure orderly termination of the threads, regardless of the circumstances under which the event dispatcher exits. If the subject was not found to be instrumented, this method will itself stop the processing threads.
AbstractEventDispatcher.ExecException
- If an exception occurs while waiting for the
threads to exit.protected void runSubject() throws AbstractEventDispatcher.ExecException
The subject process is executed, and a thread is created to pipe outputs from the subject. If piping of input to the subject and/or a time limit has been imposed on the subject, those threads are created here also. Upon completion of the subject's execution (or forcible termination), the method waits for the processing threads to finish.
AbstractEventDispatcher.ExecException
protected void checkRunning(java.lang.String msg) throws java.lang.IllegalStateException
This method can be used to guard operations that should not be performed while the event dispatcher is actively running a subject.
msg
- Message to be assigned to the exception.
java.lang.IllegalStateException
- If the event dispatcher is currently
running its subject.public void configureDispatcher(java.lang.String className, java.lang.String[] subjectArgs, java.lang.String subjectCP, int port, boolean pipeInput, int timeLimit, java.io.PrintStream sbjoutStream, java.io.PrintStream stdoutStream, java.io.PrintStream stderrStream) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
className
- Name of the subject class which is to be executed.subjectArgs
- Set of arguments to be passed to the subject class.subjectCP
- Java classpath that will be set for the subject when it
is executed.port
- The port number on which event dispatcher should listen
for incoming instrumentation messages from the subject. The valid range
is 1024 to 65535. An exception is the value -1, which instructs it
to select the default port.pipeInput
- If true
, the event dispatcher will
redirect input on the standard input stream to the subject's standard
input stream.timeLimit
- The length of time in seconds that the subject is
allowed to run before being killed.sbjoutStream
- Output stream to which subject's outputs are to be
written. If null
, System.out
is used by
default.stdoutStream
- Output stream to which the event dispatcher's normal
outputs are to be written. If null
, System.out
is used by default. When the dispatcher is compiled in
DEBUG
mode, debug information is also printed to
this stream.stderrStream
- Output stream to which the event dispatcher's error
outputs are to be written. If null
, System.err
is used by default.
java.lang.IllegalArgumentException
- If required parameters are missing,
invalid parameters are encountered, or data required for optional
parameters is missing.
java.lang.IllegalStateException
- If called while the event dispatcher
is running.public java.util.List configureDispatcher(java.lang.String[] params) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
params
- Array of command line parameters.
java.lang.IllegalArgumentException
- If required parameters are missing
or data required for optional parameters is missing.
java.lang.IllegalStateException
- If called while the event dispatcher
is running.public java.util.List configureDispatcher(java.util.List params) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
The public method first ensures that all state variables are
cleared before calling this method. It is expected that implementations
will remove from the list those parameters which it has successfully
processed. This creates an extensible model that permits new
parameters to be defined by attached classes implementing
ActiveComponent
. Such a component can process all the parameters
that it recognizes and then pass the remainder of the list back
to be provided to other components for processing or returned to
the caller.
params
- List of strings containing the command line parameters.
java.lang.IllegalArgumentException
- If required parameters are missing
or data required for optional parameters is missing.
java.lang.IllegalStateException
- If called while the event dispatcher
is running.public java.lang.String getClassName()
public void setClassName(java.lang.String value) throws java.lang.IllegalStateException
value
- The name of the subject class to be executed by the
event dispatcher.
java.lang.IllegalStateException
public java.lang.String[] getClassArguments()
public void setClassArguments(java.lang.String[] arguments) throws java.lang.IllegalStateException
arguments
- The arguments that should be passed to the subject when
it is run by the event dispatcher.
java.lang.IllegalStateException
public java.lang.String getSubjectClasspath()
public void setSubjectClasspath(java.lang.String cp) throws java.lang.IllegalStateException
cp
- The classpath that should be set for the subject when
it is run by the event dispatcher.
java.lang.IllegalStateException
public java.lang.String getSubjectOutputFile()
Note: Even if the subject's output is not being directed to a file, it may still be redirected to an output stream. However, file redirection takes precedence over any specified stream.
null
if output is not being redirected
to file.public void setSubjectOutputFile(java.lang.String fileName) throws java.lang.IllegalStateException
Specifying a file for redirection in this manner takes precedence
over any requests to redirect output to a stream. You can pass
null
to this method to cause the event dispatcher to
revert to the last stream specified for redirection.
fileName
- Name of the file to which output should be redirected,
including path if desired. If null
, disables redirection to
file and causes the event dispatcher to default to the last specified
stream (stdout
if none has been specified).
java.lang.IllegalStateException
public int getPort()
public void setPort(int port) throws java.lang.IllegalStateException
port
- The port number on which the event dispatcher should listen
for incoming instrumentation messages from the subject. The valid range
is 1024 to 65535. An exception is the value -1, which instructs it
to select the default port.
java.lang.IllegalStateException
public int getTimeLimit()
public void setTimeLimit(int tl) throws java.lang.IllegalStateException
tl
- The length of time in seconds that the subject can run before
being killed. 0 (zero) signifies that a subject is permitted to
run indefinitely.
java.lang.IllegalStateException
public boolean getRedirectInput()
true
if the event dispatcher is to redirect input
on stdin
to the subject, false
otherwise.public void setRedirectInput(boolean enable) throws java.lang.IllegalStateException
enable
- true
to enable redirection,
false
to disable.
java.lang.IllegalStateException
public void setSubjectOutputStream(java.io.OutputStream sbjoutStream)
sbjoutStream
- Output stream to which subject outputs are to be
written.public void setStandardOutputStream(java.io.OutputStream stdoutStream)
stdoutStream
- Output stream to which the event dispatcher standard
outputs are to be written.public void setStandardErrorStream(java.io.OutputStream stderrStream)
stderrStream
- Output stream to which the event dispatcher error
outputs are to be written.public static ProgramEventDispatcher createBlockCoverageTracer(java.lang.String[] argv, java.io.PrintStream sbjout, java.io.PrintStream stdout, java.io.PrintStream stderr) throws AbstractEventDispatcher.CreateException
Filter
class.
argv
- Array of command line parameters.sbjout
- Output stream to which subject's outputs are to be
written. If null
, System.out
is used by
default.stdout
- Output stream to which the event dispatcher's normal
outputs are to be written. If null
, System.out
is used by default. When the dispatcher is compiled in
DEBUG
mode, debug information is also printed to
this stream.stderr
- Output stream to which the event dispatcher's error
outputs are to be written. If null
, System.err
is used by default.
CreateException
- If the commons-collections library could not be
found by the static initializer.
AbstractEventDispatcher.CreateException
public static ProgramEventDispatcher createBlockSequenceTracer(java.lang.String[] argv, java.io.PrintStream sbjout, java.io.PrintStream stdout, java.io.PrintStream stderr) throws AbstractEventDispatcher.CreateException
SequenceFilter
class.
argv
- Array of command line parameters.sbjout
- Output stream to which subject's outputs are to be
written. If null
, System.out
is used by
default.stdout
- Output stream to which the event dispatcher's normal
outputs are to be written. If null
, System.out
is used by default. When the dispatcher is compiled in
DEBUG
mode, debug information is also printed to
this stream.stderr
- Output stream to which the event dispatcher's error
outputs are to be written. If null
, System.err
is used by default.
CreateException
- If the commons-collections library could not be
found by the static initializer.
AbstractEventDispatcher.CreateException
public static ProgramEventDispatcher createBranchCoverageTracer(java.lang.String[] argv, java.io.PrintStream sbjout, java.io.PrintStream stdout, java.io.PrintStream stderr) throws AbstractEventDispatcher.CreateException
BranchFilter
class.
argv
- Array of command line parameters.sbjout
- Output stream to which subject's outputs are to be
written. If null
, System.out
is used by
default.stdout
- Output stream to which the event dispatcher's normal
outputs are to be written. If null
, System.out
is used by default. When the dispatcher is compiled in
DEBUG
mode, debug information is also printed to
this stream.stderr
- Output stream to which the event dispatcher's error
outputs are to be written. If null
, System.err
is used by default.
CreateException
- If the commons-collections library could not be
found by the static initializer.
AbstractEventDispatcher.CreateException
public static ProgramEventDispatcher createBranchSequenceTracer(java.lang.String[] argv, java.io.PrintStream sbjout, java.io.PrintStream stdout, java.io.PrintStream stderr) throws AbstractEventDispatcher.CreateException
BranchSequenceFilter
class.
argv
- Array of command line parameters.sbjout
- Output stream to which subject's outputs are to be
written. If null
, System.out
is used by
default.stdout
- Output stream to which the event dispatcher's normal
outputs are to be written. If null
, System.out
is used by default. When the dispatcher is compiled in
DEBUG
mode, debug information is also printed to
this stream.stderr
- Output stream to which the event dispatcher's error
outputs are to be written. If null
, System.err
is used by default.
CreateException
- If the commons-collections library could not be
found by the static initializer.
AbstractEventDispatcher.CreateException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |