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");
}
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);
}
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");
}
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);
}
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);
}
Aggregations