Run the Processor
After configuring the Controller Services and enqueuing the necessary FlowFiles, the
Processor can be triggered to run by calling the run
method of
TestRunner
. If this method is called without any arguments, it will
invoke any method in the Processor with an @OnScheduled
annotation,
call the Processor's onTrigger
method once, and then run the
@OnUnscheduled
and finally @OnStopped
methods.
If it is desirable to run several iterations of the onTrigger
method before the other @OnUnscheduled
and
@OnStopped
life-cycle events are triggered, the
run(int)
method can be used to specify now many iterations of
onTrigger
should be called.
There are times when we want to trigger the Processor to run but not trigger the
@OnUnscheduled
and @OnStopped
life-cycle events.
This is useful, for instance, to inspect the Processor's state before these events
occur. This can be achieved using the run(int, boolean)
and passing
false
as the second argument. After doing this, though, calling the
@OnScheduled
life-cycle methods could cause an issue. As a result, we
can now run onTrigger
again without causing these events to occur by
using the run(int,boolean,boolean)
version of the
run
method and passing false
as the third
argument.
If it is useful to test behavior that occurs with multiple threads, this can also be
achieved by calling the setThreadCount
method of
TestRunner
. The default is 1 thread. If using multiple threads, it is
important to remember that the run
call of
TestRunner
specifies how many times the Processor should be
triggered, not the number of times that the Processor should be triggered per thread. So,
if the thread count is set to 2 but run(1)
is called, only a single
thread will be used.