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.