Search in sources :

Example 26 with Multi

use of io.smallrye.mutiny.Multi in project smallrye-mutiny by smallrye.

the class MultiToHotStreamTest method testResubscriptionAfterFailure.

@Test
public void testResubscriptionAfterFailure() {
    BroadcastProcessor<String> processor = BroadcastProcessor.create();
    Multi<String> multi = processor.map(s -> s).toHotStream();
    AssertSubscriber<String> subscriber1 = multi.subscribe().withSubscriber(AssertSubscriber.create(10));
    processor.onNext("one");
    subscriber1.assertItems("one");
    subscriber1.cancel();
    processor.onNext("two");
    processor.onError(new IOException("boom"));
    processor.subscribe(subscriber1);
    subscriber1.assertItems("one").assertFailedWith(IOException.class, "boom");
}
Also used : AssertSubscriber(io.smallrye.mutiny.helpers.test.AssertSubscriber) BroadcastProcessor(io.smallrye.mutiny.operators.multi.processors.BroadcastProcessor) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) IOException(java.io.IOException) ResourceLock(org.junit.jupiter.api.parallel.ResourceLock) InfrastructureResource(junit5.support.InfrastructureResource) Multi(io.smallrye.mutiny.Multi) Test(org.junit.jupiter.api.Test) List(java.util.List) BackPressureFailure(io.smallrye.mutiny.subscription.BackPressureFailure) UnicastProcessor(io.smallrye.mutiny.operators.multi.processors.UnicastProcessor) Duration(java.time.Duration) ResourceAccessMode(org.junit.jupiter.api.parallel.ResourceAccessMode) IOException(java.io.IOException) Test(org.junit.jupiter.api.Test)

Example 27 with Multi

use of io.smallrye.mutiny.Multi in project smallrye-mutiny by smallrye.

the class MultiToHotStreamTest method testFailureAfterCompletion.

@Test
public void testFailureAfterCompletion() {
    BroadcastProcessor<Integer> processor = BroadcastProcessor.create();
    Multi<Integer> multi = processor.map(s -> s).toHotStream();
    AssertSubscriber<Integer> subscriber = multi.subscribe().withSubscriber(AssertSubscriber.create(10));
    processor.onNext(1);
    processor.onNext(2);
    processor.onComplete();
    processor.onError(new Exception("boom"));
    subscriber.assertCompleted().assertItems(1, 2);
}
Also used : AssertSubscriber(io.smallrye.mutiny.helpers.test.AssertSubscriber) BroadcastProcessor(io.smallrye.mutiny.operators.multi.processors.BroadcastProcessor) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) IOException(java.io.IOException) ResourceLock(org.junit.jupiter.api.parallel.ResourceLock) InfrastructureResource(junit5.support.InfrastructureResource) Multi(io.smallrye.mutiny.Multi) Test(org.junit.jupiter.api.Test) List(java.util.List) BackPressureFailure(io.smallrye.mutiny.subscription.BackPressureFailure) UnicastProcessor(io.smallrye.mutiny.operators.multi.processors.UnicastProcessor) Duration(java.time.Duration) ResourceAccessMode(org.junit.jupiter.api.parallel.ResourceAccessMode) IOException(java.io.IOException) Test(org.junit.jupiter.api.Test)

Example 28 with Multi

use of io.smallrye.mutiny.Multi in project smallrye-mutiny by smallrye.

the class MultiToHotStreamTest method testSubscriptionAfterFailure.

@Test
public void testSubscriptionAfterFailure() {
    BroadcastProcessor<String> processor = BroadcastProcessor.create();
    Multi<String> multi = processor.map(s -> s).toHotStream();
    AssertSubscriber<String> subscriber1 = multi.subscribe().withSubscriber(AssertSubscriber.create(10));
    processor.onNext("one");
    processor.onNext("two");
    processor.onNext("three");
    AssertSubscriber<String> subscriber2 = multi.subscribe().withSubscriber(AssertSubscriber.create(10));
    processor.onError(new Exception("boom"));
    AssertSubscriber<String> subscriber3 = multi.subscribe().withSubscriber(AssertSubscriber.create(10));
    subscriber1.assertItems("one", "two", "three").assertFailedWith(Exception.class, "boom");
    subscriber2.assertHasNotReceivedAnyItem().assertFailedWith(Exception.class, "boom");
    subscriber3.assertHasNotReceivedAnyItem().assertFailedWith(Exception.class, "boom");
}
Also used : AssertSubscriber(io.smallrye.mutiny.helpers.test.AssertSubscriber) BroadcastProcessor(io.smallrye.mutiny.operators.multi.processors.BroadcastProcessor) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) IOException(java.io.IOException) ResourceLock(org.junit.jupiter.api.parallel.ResourceLock) InfrastructureResource(junit5.support.InfrastructureResource) Multi(io.smallrye.mutiny.Multi) Test(org.junit.jupiter.api.Test) List(java.util.List) BackPressureFailure(io.smallrye.mutiny.subscription.BackPressureFailure) UnicastProcessor(io.smallrye.mutiny.operators.multi.processors.UnicastProcessor) Duration(java.time.Duration) ResourceAccessMode(org.junit.jupiter.api.parallel.ResourceAccessMode) IOException(java.io.IOException) Test(org.junit.jupiter.api.Test)

Example 29 with Multi

use of io.smallrye.mutiny.Multi in project smallrye-mutiny by smallrye.

the class MultiFromResourceTest method simpleSynchronousTestWithMultipleSubscribers.

@Test
public void simpleSynchronousTestWithMultipleSubscribers() {
    AssertSubscriber<Integer> subscriber1 = AssertSubscriber.create(10);
    AssertSubscriber<Integer> subscriber2 = AssertSubscriber.create(10);
    List<Integer> list = new ArrayList<>();
    AtomicInteger count = new AtomicInteger();
    Multi<Integer> multi = Multi.createFrom().resource(count::incrementAndGet, r -> Multi.createFrom().range(r, 11)).withFinalizer((Consumer<Integer>) list::add);
    multi.subscribe(subscriber1);
    multi.subscribe(subscriber2);
    subscriber1.assertItems(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).assertCompleted();
    subscriber2.assertItems(2, 3, 4, 5, 6, 7, 8, 9, 10).assertCompleted();
    assertThat(list).containsExactly(1, 2);
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Assertions.assertThrows(org.junit.jupiter.api.Assertions.assertThrows) AssertSubscriber(io.smallrye.mutiny.helpers.test.AssertSubscriber) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) BiFunction(java.util.function.BiFunction) Publisher(org.reactivestreams.Publisher) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) IOException(java.io.IOException) ResourceLock(org.junit.jupiter.api.parallel.ResourceLock) AtomicReference(java.util.concurrent.atomic.AtomicReference) Function(java.util.function.Function) Supplier(java.util.function.Supplier) InfrastructureResource(junit5.support.InfrastructureResource) Multi(io.smallrye.mutiny.Multi) ArrayList(java.util.ArrayList) Uni(io.smallrye.mutiny.Uni) Consumer(java.util.function.Consumer) Test(org.junit.jupiter.api.Test) CompositeException(io.smallrye.mutiny.CompositeException) List(java.util.List) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Duration(java.time.Duration) ResourceAccessMode(org.junit.jupiter.api.parallel.ResourceAccessMode) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ArrayList(java.util.ArrayList) Test(org.junit.jupiter.api.Test)

Example 30 with Multi

use of io.smallrye.mutiny.Multi in project smallrye-mutiny by smallrye.

the class MultiFromResourceTest method testThatOnFailureFailureArePropagated.

@Test
public void testThatOnFailureFailureArePropagated() {
    FakeTransactionalResource resource = new FakeTransactionalResource();
    Multi<String> multi = Multi.createFrom().resource(() -> resource, r -> r.data().onCompletion().failWith(new IOException("boom"))).withFinalizer(FakeTransactionalResource::commit, FakeTransactionalResource::rollbackFailure, FakeTransactionalResource::cancel);
    multi.subscribe().withSubscriber(AssertSubscriber.create(20)).awaitFailure().assertFailedWith(CompositeException.class, "boom").assertFailedWith(CompositeException.class, "rollback failed");
    assertThat(resource.subscribed).isTrue();
    assertThat(resource.onCompleteSubscribed).isFalse();
    assertThat(resource.onCancelSubscribed).isFalse();
    assertThat(resource.onFailureSubscribed).isTrue();
    assertThat(resource.failure.get()).isInstanceOf(IOException.class);
}
Also used : Assertions.assertThrows(org.junit.jupiter.api.Assertions.assertThrows) AssertSubscriber(io.smallrye.mutiny.helpers.test.AssertSubscriber) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) BiFunction(java.util.function.BiFunction) Publisher(org.reactivestreams.Publisher) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) IOException(java.io.IOException) ResourceLock(org.junit.jupiter.api.parallel.ResourceLock) AtomicReference(java.util.concurrent.atomic.AtomicReference) Function(java.util.function.Function) Supplier(java.util.function.Supplier) InfrastructureResource(junit5.support.InfrastructureResource) Multi(io.smallrye.mutiny.Multi) ArrayList(java.util.ArrayList) Uni(io.smallrye.mutiny.Uni) Consumer(java.util.function.Consumer) Test(org.junit.jupiter.api.Test) CompositeException(io.smallrye.mutiny.CompositeException) List(java.util.List) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Duration(java.time.Duration) ResourceAccessMode(org.junit.jupiter.api.parallel.ResourceAccessMode) CompositeException(io.smallrye.mutiny.CompositeException) IOException(java.io.IOException) Test(org.junit.jupiter.api.Test)

Aggregations

Multi (io.smallrye.mutiny.Multi)62 Uni (io.smallrye.mutiny.Uni)43 Test (org.junit.jupiter.api.Test)43 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)42 AssertSubscriber (io.smallrye.mutiny.helpers.test.AssertSubscriber)41 List (java.util.List)36 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)34 IOException (java.io.IOException)33 Assertions.assertThrows (org.junit.jupiter.api.Assertions.assertThrows)31 Function (java.util.function.Function)30 Duration (java.time.Duration)29 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)27 AtomicReference (java.util.concurrent.atomic.AtomicReference)25 Consumer (java.util.function.Consumer)25 InfrastructureResource (junit5.support.InfrastructureResource)22 ResourceAccessMode (org.junit.jupiter.api.parallel.ResourceAccessMode)22 ResourceLock (org.junit.jupiter.api.parallel.ResourceLock)22 Supplier (java.util.function.Supplier)20 CompositeException (io.smallrye.mutiny.CompositeException)19 ArrayList (java.util.ArrayList)18