use of io.reactivex.Scheduler.Worker in project RxJava by ReactiveX.
the class TestSubscriberTest method testInterruptTerminalEventAwait.
@Test
public void testInterruptTerminalEventAwait() {
TestSubscriber<Integer> ts = new TestSubscriber<Integer>();
final Thread t0 = Thread.currentThread();
Worker w = Schedulers.computation().createWorker();
try {
w.schedule(new Runnable() {
@Override
public void run() {
t0.interrupt();
}
}, 200, TimeUnit.MILLISECONDS);
try {
if (ts.awaitTerminalEvent()) {
fail("Did not interrupt wait!");
}
} catch (RuntimeException ex) {
if (!(ex.getCause() instanceof InterruptedException)) {
fail("The cause is not InterruptedException! " + ex.getCause());
}
}
} finally {
w.dispose();
}
}
use of io.reactivex.Scheduler.Worker in project RxJava by ReactiveX.
the class ParallelRunOn method subscribe.
@Override
public void subscribe(Subscriber<? super T>[] subscribers) {
if (!validate(subscribers)) {
return;
}
int n = subscribers.length;
@SuppressWarnings("unchecked") Subscriber<T>[] parents = new Subscriber[n];
int prefetch = this.prefetch;
for (int i = 0; i < n; i++) {
Subscriber<? super T> a = subscribers[i];
Worker w = scheduler.createWorker();
SpscArrayQueue<T> q = new SpscArrayQueue<T>(prefetch);
if (a instanceof ConditionalSubscriber) {
parents[i] = new RunOnConditionalSubscriber<T>((ConditionalSubscriber<? super T>) a, prefetch, q, w);
} else {
parents[i] = new RunOnSubscriber<T>(a, prefetch, q, w);
}
}
source.subscribe(parents);
}
use of io.reactivex.Scheduler.Worker in project RxAndroid by ReactiveX.
the class HandlerSchedulerTest method workerSchedulePeriodicallyDisposedDuringRunDoesNotReschedule.
@Test
@Ignore("Implementation delegated to default RxJava implementation")
public void workerSchedulePeriodicallyDisposedDuringRunDoesNotReschedule() {
Worker worker = scheduler.createWorker();
final AtomicReference<Disposable> disposableRef = new AtomicReference<>();
CountingRunnable counter = new CountingRunnable() {
@Override
public void run() {
super.run();
if (get() == 2) {
disposableRef.get().dispose();
}
}
};
Disposable disposable = worker.schedulePeriodically(counter, 1, 1, MINUTES);
disposableRef.set(disposable);
runUiThreadTasks();
assertEquals(0, counter.get());
idleMainLooper(1, MINUTES);
runUiThreadTasks();
assertEquals(1, counter.get());
idleMainLooper(1, MINUTES);
runUiThreadTasks();
assertEquals(2, counter.get());
// Dispose will have happened here during the last run() execution.
idleMainLooper(1, MINUTES);
runUiThreadTasks();
assertEquals(2, counter.get());
}
use of io.reactivex.Scheduler.Worker in project RxAndroid by ReactiveX.
the class HandlerSchedulerTest method disposedWorkerReturnsDisposedDisposables.
@Test
public void disposedWorkerReturnsDisposedDisposables() {
Worker worker = scheduler.createWorker();
worker.dispose();
Disposable disposable = worker.schedule(new CountingRunnable());
assertTrue(disposable.isDisposed());
}
use of io.reactivex.Scheduler.Worker in project RxAndroid by ReactiveX.
the class HandlerSchedulerTest method workerSchedulePeriodicallyThrowingDoesNotReschedule.
@Test
@Ignore("Implementation delegated to default RxJava implementation")
public void workerSchedulePeriodicallyThrowingDoesNotReschedule() {
Worker worker = scheduler.createWorker();
CountingRunnable counter = new CountingRunnable() {
@Override
public void run() {
super.run();
if (get() == 2) {
throw new RuntimeException("Broken!");
}
}
};
worker.schedulePeriodically(counter, 1, 1, MINUTES);
runUiThreadTasks();
assertEquals(0, counter.get());
idleMainLooper(1, MINUTES);
runUiThreadTasks();
assertEquals(1, counter.get());
idleMainLooper(1, MINUTES);
runUiThreadTasks();
assertEquals(2, counter.get());
// Exception will have happened here during the last run() execution.
idleMainLooper(1, MINUTES);
runUiThreadTasks();
assertEquals(2, counter.get());
}
Aggregations