Search in sources :

Example 81 with Worker

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();
    }
}
Also used : Worker(io.reactivex.rxjava3.core.Scheduler.Worker) Test(org.junit.Test)

Example 82 with Worker

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();
    }
}
Also used : Scheduler(io.reactivex.rxjava3.core.Scheduler) Worker(io.reactivex.rxjava3.core.Scheduler.Worker) Test(org.junit.Test)

Example 83 with Worker

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();
    }
}
Also used : Worker(io.reactivex.rxjava3.core.Scheduler.Worker) CompositeDisposable(io.reactivex.rxjava3.disposables.CompositeDisposable)

Example 84 with Worker

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();
    }
}
Also used : Worker(io.reactivex.rxjava3.core.Scheduler.Worker)

Example 85 with Worker

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();
    }
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Worker(io.reactivex.rxjava3.core.Scheduler.Worker) Test(org.junit.Test)

Aggregations

Worker (io.reactivex.rxjava3.core.Scheduler.Worker)91 Test (org.junit.Test)87 Disposable (io.reactivex.rxjava3.disposables.Disposable)28 CountingRunnable (io.reactivex.rxjava3.android.testutil.CountingRunnable)22 Scheduler (io.reactivex.rxjava3.core.Scheduler)18 EmptyDisposable (io.reactivex.rxjava3.internal.disposables.EmptyDisposable)10 AtomicReference (java.util.concurrent.atomic.AtomicReference)9 Ignore (org.junit.Ignore)7 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)6 RxJavaTest (io.reactivex.rxjava3.core.RxJavaTest)4 TrampolineScheduler (io.reactivex.rxjava3.internal.schedulers.TrampolineScheduler)4 SuppressUndeliverable (io.reactivex.rxjava3.testsupport.SuppressUndeliverable)4 IoScheduler (io.reactivex.rxjava3.internal.schedulers.IoScheduler)3 WorkerCallback (io.reactivex.rxjava3.internal.schedulers.SchedulerMultiWorkerSupport.WorkerCallback)3 CountDownLatch (java.util.concurrent.CountDownLatch)3 ThrowingRunnable (org.junit.function.ThrowingRunnable)3 Message (android.os.Message)2 CompositeDisposable (io.reactivex.rxjava3.disposables.CompositeDisposable)2 TestException (io.reactivex.rxjava3.exceptions.TestException)2 NewThreadWorker (io.reactivex.rxjava3.internal.schedulers.NewThreadWorker)2