Search in sources :

Example 1 with WorkerCallback

use of io.reactivex.rxjava3.internal.schedulers.SchedulerMultiWorkerSupport.WorkerCallback in project RxJava by ReactiveX.

the class SchedulerMultiWorkerSupportTest method getShutdownWorkers.

@Test
public void getShutdownWorkers() {
    final List<Worker> list = new ArrayList<>();
    ComputationScheduler.NONE.createWorkers(max * 2, new WorkerCallback() {

        @Override
        public void onWorker(int i, Worker w) {
            list.add(w);
        }
    });
    assertEquals(max * 2, list.size());
    for (Worker w : list) {
        assertEquals(ComputationScheduler.SHUTDOWN_WORKER, w);
    }
}
Also used : WorkerCallback(io.reactivex.rxjava3.internal.schedulers.SchedulerMultiWorkerSupport.WorkerCallback) Worker(io.reactivex.rxjava3.core.Scheduler.Worker) RxJavaTest(io.reactivex.rxjava3.core.RxJavaTest) Test(org.junit.Test)

Example 2 with WorkerCallback

use of io.reactivex.rxjava3.internal.schedulers.SchedulerMultiWorkerSupport.WorkerCallback in project RxJava by ReactiveX.

the class SchedulerMultiWorkerSupportTest method moreThanMaxWorkers.

@Test
public void moreThanMaxWorkers() {
    final List<Worker> list = new ArrayList<>();
    SchedulerMultiWorkerSupport mws = (SchedulerMultiWorkerSupport) Schedulers.computation();
    mws.createWorkers(max * 2, new WorkerCallback() {

        @Override
        public void onWorker(int i, Worker w) {
            list.add(w);
        }
    });
    assertEquals(max * 2, list.size());
}
Also used : WorkerCallback(io.reactivex.rxjava3.internal.schedulers.SchedulerMultiWorkerSupport.WorkerCallback) Worker(io.reactivex.rxjava3.core.Scheduler.Worker) RxJavaTest(io.reactivex.rxjava3.core.RxJavaTest) Test(org.junit.Test)

Example 3 with WorkerCallback

use of io.reactivex.rxjava3.internal.schedulers.SchedulerMultiWorkerSupport.WorkerCallback in project RxJava by ReactiveX.

the class SchedulerMultiWorkerSupportTest method distinctThreads.

@Test
public void distinctThreads() throws Exception {
    for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) {
        final CompositeDisposable composite = new CompositeDisposable();
        try {
            final CountDownLatch cdl = new CountDownLatch(max * 2);
            final Set<String> threads1 = Collections.synchronizedSet(new HashSet<>());
            final Set<String> threads2 = Collections.synchronizedSet(new HashSet<>());
            Runnable parallel1 = new Runnable() {

                @Override
                public void run() {
                    final List<Worker> list1 = new ArrayList<>();
                    SchedulerMultiWorkerSupport mws = (SchedulerMultiWorkerSupport) Schedulers.computation();
                    mws.createWorkers(max, new WorkerCallback() {

                        @Override
                        public void onWorker(int i, Worker w) {
                            list1.add(w);
                            composite.add(w);
                        }
                    });
                    Runnable run = new Runnable() {

                        @Override
                        public void run() {
                            threads1.add(Thread.currentThread().getName());
                            cdl.countDown();
                        }
                    };
                    for (Worker w : list1) {
                        w.schedule(run);
                    }
                }
            };
            Runnable parallel2 = new Runnable() {

                @Override
                public void run() {
                    final List<Worker> list2 = new ArrayList<>();
                    SchedulerMultiWorkerSupport mws = (SchedulerMultiWorkerSupport) Schedulers.computation();
                    mws.createWorkers(max, new WorkerCallback() {

                        @Override
                        public void onWorker(int i, Worker w) {
                            list2.add(w);
                            composite.add(w);
                        }
                    });
                    Runnable run = new Runnable() {

                        @Override
                        public void run() {
                            threads2.add(Thread.currentThread().getName());
                            cdl.countDown();
                        }
                    };
                    for (Worker w : list2) {
                        w.schedule(run);
                    }
                }
            };
            TestHelper.race(parallel1, parallel2);
            assertTrue(cdl.await(5, TimeUnit.SECONDS));
            assertEquals(threads1.toString(), max, threads1.size());
            assertEquals(threads2.toString(), max, threads2.size());
        } finally {
            composite.dispose();
        }
    }
}
Also used : WorkerCallback(io.reactivex.rxjava3.internal.schedulers.SchedulerMultiWorkerSupport.WorkerCallback) Worker(io.reactivex.rxjava3.core.Scheduler.Worker) CompositeDisposable(io.reactivex.rxjava3.disposables.CompositeDisposable) RxJavaTest(io.reactivex.rxjava3.core.RxJavaTest) Test(org.junit.Test)

Aggregations

RxJavaTest (io.reactivex.rxjava3.core.RxJavaTest)3 Worker (io.reactivex.rxjava3.core.Scheduler.Worker)3 WorkerCallback (io.reactivex.rxjava3.internal.schedulers.SchedulerMultiWorkerSupport.WorkerCallback)3 Test (org.junit.Test)3 CompositeDisposable (io.reactivex.rxjava3.disposables.CompositeDisposable)1