Search in sources :

Example 26 with Disposable

use of reactor.core.Disposable in project reactor-core by reactor.

the class UnicastProcessorTest method subscriptionCancelUpdatesDownstreamCount.

@Test
public void subscriptionCancelUpdatesDownstreamCount() {
    UnicastProcessor<String> processor = UnicastProcessor.create();
    assertThat(processor.currentSubscriberCount()).as("before subscribe").isZero();
    LambdaSubscriber<String> subscriber = new LambdaSubscriber<>(null, null, null, null);
    Disposable subscription = processor.subscribeWith(subscriber);
    assertThat(processor.currentSubscriberCount()).as("after subscribe").isPositive();
    assertThat(processor.actual()).as("after subscribe has actual").isSameAs(subscriber);
    subscription.dispose();
    assertThat(processor.currentSubscriberCount()).as("after subscription cancel").isZero();
}
Also used : Disposable(reactor.core.Disposable) Test(org.junit.jupiter.api.Test)

Example 27 with Disposable

use of reactor.core.Disposable in project reactor-core by reactor.

the class UnicastProcessorTest method createOverrideAll.

@Test
public void createOverrideAll() {
    Disposable onTerminate = () -> {
    };
    Consumer<? super Integer> onOverflow = t -> {
    };
    Queue<Integer> queue = Queues.<Integer>get(10).get();
    UnicastProcessor<Integer> processor = UnicastProcessor.create(queue, onOverflow, onTerminate);
    assertProcessor(processor, queue, onOverflow, onTerminate);
}
Also used : Disposable(reactor.core.Disposable) TestPublisher(reactor.test.publisher.TestPublisher) Disposable(reactor.core.Disposable) StepVerifier(reactor.test.StepVerifier) PriorityQueue(java.util.PriorityQueue) Scannable(reactor.core.Scannable) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) MemoryUtils(reactor.test.MemoryUtils) Nullable(reactor.util.annotation.Nullable) Queues(reactor.util.concurrent.Queues) CoreSubscriber(reactor.core.CoreSubscriber) Duration(java.time.Duration) Disposables(reactor.core.Disposables) RaceTestUtils(reactor.test.util.RaceTestUtils) ExecutorService(java.util.concurrent.ExecutorService) CancellationException(java.util.concurrent.CancellationException) LinkedBlockingQueue(java.util.concurrent.LinkedBlockingQueue) Executors(java.util.concurrent.Executors) LockSupport(java.util.concurrent.locks.LockSupport) Consumer(java.util.function.Consumer) Test(org.junit.jupiter.api.Test) List(java.util.List) FAIL_FAST(reactor.core.publisher.Sinks.EmitFailureHandler.FAIL_FAST) AssertSubscriber(reactor.test.subscriber.AssertSubscriber) Queue(java.util.Queue) Exceptions(reactor.core.Exceptions) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) Test(org.junit.jupiter.api.Test)

Example 28 with Disposable

use of reactor.core.Disposable in project reactor-core by reactor.

the class MonoUsingWhenTest method blockOnNeverResourceCanBeCancelled.

@Test
public void blockOnNeverResourceCanBeCancelled() throws InterruptedException {
    CountDownLatch latch = new CountDownLatch(1);
    Disposable disposable = Mono.usingWhen(Mono.<String>never(), Mono::just, Flux::just, (res, err) -> Flux.just(res), Flux::just).doFinally(f -> latch.countDown()).subscribe();
    assertThat(latch.await(500, TimeUnit.MILLISECONDS)).as("hangs before dispose").isFalse();
    disposable.dispose();
    assertThat(latch.await(100, TimeUnit.MILLISECONDS)).as("terminates after dispose").isTrue();
}
Also used : Disposable(reactor.core.Disposable) TestPublisher(reactor.test.publisher.TestPublisher) Disposable(reactor.core.Disposable) StepVerifier(reactor.test.StepVerifier) Assertions.assertThatNullPointerException(org.assertj.core.api.Assertions.assertThatNullPointerException) Context(reactor.util.context.Context) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Random(java.util.Random) CompletableFuture(java.util.concurrent.CompletableFuture) ResourceSubscriber(reactor.core.publisher.MonoUsingWhen.ResourceSubscriber) AtomicReference(java.util.concurrent.atomic.AtomicReference) TimeUnit(java.util.concurrent.TimeUnit) Test(org.junit.jupiter.api.Test) CountDownLatch(java.util.concurrent.CountDownLatch) CoreSubscriber(reactor.core.CoreSubscriber) Loggers(reactor.util.Loggers) Attr(reactor.core.Scannable.Attr) Duration(java.time.Duration) Subscription(org.reactivestreams.Subscription) Logger(reactor.util.Logger) Schedulers(reactor.core.scheduler.Schedulers) Tag(org.junit.jupiter.api.Tag) Awaitility(org.awaitility.Awaitility) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.jupiter.api.Test)

Example 29 with Disposable

use of reactor.core.Disposable in project reactor-core by reactor.

the class OperatorDisposablesTest method dispose.

@Test
public void dispose() {
    Disposable u = Disposables.single();
    TestDisposable r = new TestDisposable(u);
    OperatorDisposables.dispose(DISPOSABLE_UPDATER, r);
    assertThat(u.isDisposed()).isTrue();
}
Also used : Disposable(reactor.core.Disposable) Test(org.junit.jupiter.api.Test) RepeatedTest(org.junit.jupiter.api.RepeatedTest)

Example 30 with Disposable

use of reactor.core.Disposable in project reactor-core by reactor.

the class ParallelFluxTest method parallelSubscribeAndDispose.

@Test
public void parallelSubscribeAndDispose() throws InterruptedException {
    AtomicInteger nextCount = new AtomicInteger();
    CountDownLatch cancelLatch = new CountDownLatch(1);
    TestPublisher<Integer> source = TestPublisher.create();
    Disposable d = source.flux().parallel(3).doOnCancel(cancelLatch::countDown).subscribe(i -> nextCount.incrementAndGet());
    source.next(1, 2, 3);
    d.dispose();
    source.emit(4, 5, 6);
    boolean finished = cancelLatch.await(300, TimeUnit.MILLISECONDS);
    assertThat(finished).as("cancelled latch").isTrue();
    assertThat(d.isDisposed()).as("disposed").isTrue();
    assertThat(nextCount.get()).as("received count").isEqualTo(3);
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Disposable(reactor.core.Disposable) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.jupiter.api.Test)

Aggregations

Disposable (reactor.core.Disposable)120 Test (org.junit.jupiter.api.Test)101 CountDownLatch (java.util.concurrent.CountDownLatch)33 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)32 StepVerifier (reactor.test.StepVerifier)29 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)25 AtomicReference (java.util.concurrent.atomic.AtomicReference)18 Duration (java.time.Duration)15 List (java.util.List)15 LinkedBlockingQueue (java.util.concurrent.LinkedBlockingQueue)15 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)15 Subscription (org.reactivestreams.Subscription)15 TimeUnit (java.util.concurrent.TimeUnit)14 Timeout (org.junit.jupiter.api.Timeout)13 CoreSubscriber (reactor.core.CoreSubscriber)12 ArrayList (java.util.ArrayList)11 Arrays (java.util.Arrays)11 Disabled (org.junit.jupiter.api.Disabled)11 Scannable (reactor.core.Scannable)11 Fuseable (reactor.core.Fuseable)10