use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxJava by ReactiveX.
the class ExecutorSchedulerFairTest method reuseScheduledExecutorAsWorker.
@Test
public void reuseScheduledExecutorAsWorker() throws Exception {
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
Worker s = Schedulers.from(exec, false, true).createWorker();
assertFalse(s.isDisposed());
try {
final CountDownLatch cdl = new CountDownLatch(8);
Runnable r = new Runnable() {
@Override
public void run() {
cdl.countDown();
}
};
s.schedule(r);
s.schedule(r, 10, TimeUnit.MILLISECONDS);
Disposable d = s.schedulePeriodically(r, 10, 10, TimeUnit.MILLISECONDS);
try {
assertTrue(cdl.await(5, TimeUnit.SECONDS));
} finally {
d.dispose();
}
} finally {
s.dispose();
exec.shutdown();
}
assertTrue(s.isDisposed());
}
use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxJava by ReactiveX.
the class ExecutorSchedulerFairTest method cancelledTasksDontRun.
@Test
public void cancelledTasksDontRun() {
final AtomicInteger calls = new AtomicInteger();
Runnable task = new Runnable() {
@Override
public void run() {
calls.getAndIncrement();
}
};
TestExecutor exec = new TestExecutor();
Scheduler custom = Schedulers.from(exec, false, true);
Worker w = custom.createWorker();
try {
Disposable d1 = w.schedule(task);
Disposable d2 = w.schedule(task);
Disposable d3 = w.schedule(task);
d1.dispose();
d2.dispose();
d3.dispose();
exec.executeAll();
assertEquals(0, calls.get());
} finally {
w.dispose();
}
}
use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxJava by ReactiveX.
the class ExecutorSchedulerFairTest method rejectingExecutorWorker.
@Test
public void rejectingExecutorWorker() {
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.shutdown();
List<Throwable> errors = TestHelper.trackPluginErrors();
try {
Worker s = Schedulers.from(exec, false, true).createWorker();
assertSame(EmptyDisposable.INSTANCE, s.schedule(Functions.EMPTY_RUNNABLE));
s = Schedulers.from(exec, false, true).createWorker();
assertSame(EmptyDisposable.INSTANCE, s.schedule(Functions.EMPTY_RUNNABLE, 10, TimeUnit.MILLISECONDS));
s = Schedulers.from(exec, false, true).createWorker();
assertSame(EmptyDisposable.INSTANCE, s.schedulePeriodically(Functions.EMPTY_RUNNABLE, 10, 10, TimeUnit.MILLISECONDS));
TestHelper.assertUndeliverable(errors, 0, RejectedExecutionException.class);
TestHelper.assertUndeliverable(errors, 1, RejectedExecutionException.class);
TestHelper.assertUndeliverable(errors, 2, RejectedExecutionException.class);
} finally {
RxJavaPlugins.reset();
}
}
use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxAndroid by ReactiveX.
the class HandlerSchedulerTest method workerSchedulePeriodicallyInputValidation.
@Test
@Ignore("Implementation delegated to default RxJava implementation")
public void workerSchedulePeriodicallyInputValidation() {
Worker worker = scheduler.createWorker();
try {
worker.schedulePeriodically(null, 1, 1, MINUTES);
fail();
} catch (NullPointerException e) {
assertEquals("run == null", e.getMessage());
}
try {
worker.schedulePeriodically(new CountingRunnable(), 1, -1, MINUTES);
fail();
} catch (IllegalArgumentException e) {
assertEquals("period < 0: -1", e.getMessage());
}
try {
worker.schedulePeriodically(new CountingRunnable(), 1, 1, null);
fail();
} catch (NullPointerException e) {
assertEquals("unit == null", e.getMessage());
}
}
use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxAndroid by ReactiveX.
the class HandlerSchedulerTest method workerScheduleSetAsync.
@Test
public void workerScheduleSetAsync() {
ShadowMessageQueue mainMessageQueue = shadowOf(Looper.getMainLooper().getQueue());
Worker worker = scheduler.createWorker();
worker.schedule(new Runnable() {
@Override
public void run() {
}
});
Message message = mainMessageQueue.getHead();
assertEquals(async, message.isAsynchronous());
}
Aggregations