use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxJava by ReactiveX.
the class ExecutorSchedulerInterruptibleTest method rejectingExecutorWorker.
@Test
public void rejectingExecutorWorker() {
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.shutdown();
List<Throwable> errors = TestHelper.trackPluginErrors();
try {
Worker s = Schedulers.from(exec, true).createWorker();
assertSame(EmptyDisposable.INSTANCE, s.schedule(Functions.EMPTY_RUNNABLE));
s = Schedulers.from(exec, true).createWorker();
assertSame(EmptyDisposable.INSTANCE, s.schedule(Functions.EMPTY_RUNNABLE, 10, TimeUnit.MILLISECONDS));
s = Schedulers.from(exec, 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 RxJava by ReactiveX.
the class ExecutorSchedulerInterruptibleTest method disposeRace.
@Test
public void disposeRace() {
ExecutorService exec = Executors.newSingleThreadExecutor();
final Scheduler s = Schedulers.from(exec, true);
try {
for (int i = 0; i < 500; i++) {
final Worker w = s.createWorker();
final AtomicInteger c = new AtomicInteger(2);
w.schedule(new Runnable() {
@Override
public void run() {
c.decrementAndGet();
while (c.get() != 0) {
}
}
});
c.decrementAndGet();
while (c.get() != 0) {
}
w.dispose();
}
} finally {
exec.shutdownNow();
}
}
use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxJava by ReactiveX.
the class SchedulerLifecycleTest method tryOutSchedulers.
private void tryOutSchedulers() throws InterruptedException {
final CountDownLatch cdl = new CountDownLatch(4);
final Runnable countAction = new Runnable() {
@Override
public void run() {
cdl.countDown();
}
};
CompositeDisposable cd = new CompositeDisposable();
try {
Worker w1 = Schedulers.computation().createWorker();
cd.add(w1);
w1.schedule(countAction);
Worker w2 = Schedulers.io().createWorker();
cd.add(w2);
w2.schedule(countAction);
Worker w3 = Schedulers.newThread().createWorker();
cd.add(w3);
w3.schedule(countAction);
Worker w4 = Schedulers.single().createWorker();
cd.add(w4);
w4.schedule(countAction);
if (!cdl.await(3, TimeUnit.SECONDS)) {
fail("countAction was not run by every worker");
}
} finally {
cd.dispose();
}
}
use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxJava by ReactiveX.
the class RxJavaPluginsTest method verifyThread.
private static void verifyThread(Scheduler scheduler, String expectedThreadName) throws AssertionError {
assertNotNull(scheduler);
Worker w = scheduler.createWorker();
try {
final AtomicReference<Thread> value = new AtomicReference<>();
final CountDownLatch cdl = new CountDownLatch(1);
w.schedule(new Runnable() {
@Override
public void run() {
value.set(Thread.currentThread());
cdl.countDown();
}
});
cdl.await();
Thread t = value.get();
assertNotNull(t);
assertEquals(expectedThreadName, t.getName());
} catch (Exception e) {
fail();
} finally {
w.dispose();
}
}
use of io.reactivex.rxjava3.core.Scheduler.Worker in project RxJava by ReactiveX.
the class ExecutorSchedulerFairTest method disposeRace.
@Test
public void disposeRace() {
ExecutorService exec = Executors.newSingleThreadExecutor();
final Scheduler s = Schedulers.from(exec, false, true);
try {
for (int i = 0; i < 500; i++) {
final Worker w = s.createWorker();
final AtomicInteger c = new AtomicInteger(2);
w.schedule(new Runnable() {
@Override
public void run() {
c.decrementAndGet();
while (c.get() != 0) {
}
}
});
c.decrementAndGet();
while (c.get() != 0) {
}
w.dispose();
}
} finally {
exec.shutdownNow();
}
}
Aggregations