Package io.reactivex.rxjava3.schedulers
Class TestScheduler
java.lang.Object
io.reactivex.rxjava3.core.Scheduler
io.reactivex.rxjava3.schedulers.TestScheduler
A special, non thread-safe scheduler for testing operators that require
a scheduler without introducing real concurrency and allows manually advancing
a virtual time.
By default, the tasks submitted via the various schedule
methods are not
wrapped by the RxJavaPlugins.onSchedule(Runnable)
hook. To enable this behavior,
create a TestScheduler
via TestScheduler(boolean)
or TestScheduler(long, TimeUnit, boolean)
.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) final class
(package private) static final class
Nested classes/interfaces inherited from class io.reactivex.rxjava3.core.Scheduler
Scheduler.Worker
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) long
The per-scheduler global order counter.(package private) final Queue
<TestScheduler.TimedRunnable> The ordered queue for the runnable tasks.(package private) long
(package private) final boolean
Use theRxJavaPlugins.onSchedule(Runnable)
hook when scheduling tasks. -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new TestScheduler with initial virtual time of zero.TestScheduler
(boolean useOnScheduleHook) Creates a new TestScheduler with the option to use theRxJavaPlugins.onSchedule(Runnable)
hook when scheduling tasks.TestScheduler
(long delayTime, TimeUnit unit) Creates a new TestScheduler with the specified initial virtual time.TestScheduler
(long delayTime, TimeUnit unit, boolean useOnScheduleHook) Creates a new TestScheduler with the specified initial virtual time and with the option to use theRxJavaPlugins.onSchedule(Runnable)
hook when scheduling tasks. -
Method Summary
Modifier and TypeMethodDescriptionvoid
advanceTimeBy
(long delayTime, TimeUnit unit) Moves the Scheduler's clock forward by a specified amount of time.void
advanceTimeTo
(long delayTime, TimeUnit unit) Moves the Scheduler's clock to a particular moment in time.Retrieves or creates a newScheduler.Worker
that represents sequential execution of actions.long
Returns the 'current time' of the Scheduler in the specified time unit.void
Triggers any actions that have not yet been triggered and that are scheduled to be triggered at or before this Scheduler's present time.private void
triggerActions
(long targetTimeInNanoseconds) Methods inherited from class io.reactivex.rxjava3.core.Scheduler
clockDriftTolerance, scheduleDirect, scheduleDirect, schedulePeriodicallyDirect, shutdown, start, when
-
Field Details
-
queue
The ordered queue for the runnable tasks. -
useOnScheduleHook
final boolean useOnScheduleHookUse theRxJavaPlugins.onSchedule(Runnable)
hook when scheduling tasks. -
counter
long counterThe per-scheduler global order counter. -
time
volatile long time
-
-
Constructor Details
-
TestScheduler
public TestScheduler()Creates a new TestScheduler with initial virtual time of zero. -
TestScheduler
public TestScheduler(boolean useOnScheduleHook) Creates a new TestScheduler with the option to use theRxJavaPlugins.onSchedule(Runnable)
hook when scheduling tasks.History: 3.0.10 - experimental
- Parameters:
useOnScheduleHook
- iftrue
, the tasks submitted to this TestScheduler is wrapped via theRxJavaPlugins.onSchedule(Runnable)
hook- Since:
- 3.1.0
-
TestScheduler
Creates a new TestScheduler with the specified initial virtual time.- Parameters:
delayTime
- the point in time to move the Scheduler's clock tounit
- the units of time thatdelayTime
is expressed in
-
TestScheduler
Creates a new TestScheduler with the specified initial virtual time and with the option to use theRxJavaPlugins.onSchedule(Runnable)
hook when scheduling tasks.History: 3.0.10 - experimental
- Parameters:
delayTime
- the point in time to move the Scheduler's clock tounit
- the units of time thatdelayTime
is expressed inuseOnScheduleHook
- iftrue
, the tasks submitted to this TestScheduler is wrapped via theRxJavaPlugins.onSchedule(Runnable)
hook- Since:
- 3.1.0
-
-
Method Details
-
now
Description copied from class:Scheduler
Returns the 'current time' of the Scheduler in the specified time unit. -
advanceTimeBy
Moves the Scheduler's clock forward by a specified amount of time.- Parameters:
delayTime
- the amount of time to move the Scheduler's clock forwardunit
- the units of time thatdelayTime
is expressed in
-
advanceTimeTo
Moves the Scheduler's clock to a particular moment in time.- Parameters:
delayTime
- the point in time to move the Scheduler's clock tounit
- the units of time thatdelayTime
is expressed in
-
triggerActions
public void triggerActions()Triggers any actions that have not yet been triggered and that are scheduled to be triggered at or before this Scheduler's present time. -
triggerActions
private void triggerActions(long targetTimeInNanoseconds) -
createWorker
Description copied from class:Scheduler
Retrieves or creates a newScheduler.Worker
that represents sequential execution of actions.When work is completed, the
Worker
instance should be released by callingDisposable.dispose()
to avoid potential resource leaks in the underlying task-execution scheme.Work on a
Scheduler.Worker
is guaranteed to be sequential and non-overlapping.- Specified by:
createWorker
in classScheduler
- Returns:
- a Worker representing a serial queue of actions to be executed
-