use of reactor.test.subscriber.AssertSubscriber in project reactor-core by reactor.
the class FluxGroupByTest method twoGroupsConsumeWithSubscribePrefetchBigger.
@Test
public void twoGroupsConsumeWithSubscribePrefetchBigger() {
ForkJoinPool forkJoinPool = new ForkJoinPool();
AssertSubscriber<Integer> ts1 = AssertSubscriber.create();
AssertSubscriber<Integer> ts2 = AssertSubscriber.create();
AssertSubscriber<Integer> ts3 = AssertSubscriber.create();
ts3.onSubscribe(Operators.emptySubscription());
Flux.range(0, 1_000_000).groupBy(v -> v & 1).subscribe(new CoreSubscriber<GroupedFlux<Integer, Integer>>() {
@Override
public void onSubscribe(Subscription s) {
s.request(Long.MAX_VALUE);
}
@Override
public void onNext(GroupedFlux<Integer, Integer> t) {
if (t.key() == 0) {
t.publishOn(Schedulers.fromExecutorService(forkJoinPool), 1024).subscribe(ts1);
} else {
t.publishOn(Schedulers.fromExecutorService(forkJoinPool), 1024).subscribe(ts2);
}
}
@Override
public void onError(Throwable t) {
ts3.onError(t);
}
@Override
public void onComplete() {
ts3.onComplete();
}
});
if (!ts1.await(Duration.ofSeconds(5)).isTerminated()) {
Assert.fail("main subscriber timed out");
}
if (!ts2.await(Duration.ofSeconds(5)).isTerminated()) {
Assert.fail("group 0 subscriber timed out");
}
if (!ts3.await(Duration.ofSeconds(5)).isTerminated()) {
Assert.fail("group 1 subscriber timed out");
}
ts1.assertValueCount(500_000).assertNoError().assertComplete();
ts2.assertValueCount(500_000).assertNoError().assertComplete();
ts3.assertNoValues().assertNoError().assertComplete();
}
use of reactor.test.subscriber.AssertSubscriber in project reactor-core by reactor.
the class FluxGroupByTest method twoGroupsFullAsyncFullHide.
@Test
@Ignore("temporarily disabled, see gh-1028")
public void twoGroupsFullAsyncFullHide() {
ForkJoinPool forkJoinPool = new ForkJoinPool();
AssertSubscriber<Integer> ts1 = AssertSubscriber.create();
AssertSubscriber<Integer> ts2 = AssertSubscriber.create();
AssertSubscriber<Integer> ts3 = AssertSubscriber.create();
ts3.onSubscribe(Operators.emptySubscription());
Flux.range(0, 1_000_000).hide().publishOn(Schedulers.fromExecutorService(forkJoinPool)).groupBy(v -> v & 1).subscribe(new CoreSubscriber<GroupedFlux<Integer, Integer>>() {
@Override
public void onSubscribe(Subscription s) {
s.request(Long.MAX_VALUE);
}
@Override
public void onNext(GroupedFlux<Integer, Integer> t) {
if (t.key() == 0) {
t.hide().publishOn(Schedulers.fromExecutorService(forkJoinPool)).subscribe(ts1);
} else {
t.hide().publishOn(Schedulers.fromExecutorService(forkJoinPool)).subscribe(ts2);
}
}
@Override
public void onError(Throwable t) {
ts3.onError(t);
}
@Override
public void onComplete() {
ts3.onComplete();
}
});
ts1.await(Duration.ofSeconds(5));
ts2.await(Duration.ofSeconds(5));
ts3.await(Duration.ofSeconds(5));
ts1.assertValueCount(500_000).assertNoError().assertComplete();
ts2.assertValueCount(500_000).assertNoError().assertComplete();
ts3.assertNoValues().assertNoError().assertComplete();
}
use of reactor.test.subscriber.AssertSubscriber in project reactor-core by reactor.
the class FluxGroupByTest method twoGroupsConsumeWithSubscribe.
@Test
public void twoGroupsConsumeWithSubscribe() {
ForkJoinPool forkJoinPool = new ForkJoinPool();
AssertSubscriber<Integer> ts1 = AssertSubscriber.create();
AssertSubscriber<Integer> ts2 = AssertSubscriber.create();
AssertSubscriber<Integer> ts3 = AssertSubscriber.create();
ts3.onSubscribe(Operators.emptySubscription());
Flux.range(0, 1_000_000).groupBy(v -> v & 1).subscribe(new CoreSubscriber<GroupedFlux<Integer, Integer>>() {
@Override
public void onSubscribe(Subscription s) {
s.request(Long.MAX_VALUE);
}
@Override
public void onNext(GroupedFlux<Integer, Integer> t) {
if (t.key() == 0) {
t.publishOn(Schedulers.fromExecutorService(forkJoinPool)).subscribe(ts1);
} else {
t.publishOn(Schedulers.fromExecutorService(forkJoinPool)).subscribe(ts2);
}
}
@Override
public void onError(Throwable t) {
ts3.onError(t);
}
@Override
public void onComplete() {
ts3.onComplete();
}
});
ts1.await(Duration.ofSeconds(5));
ts2.await(Duration.ofSeconds(5));
ts3.await(Duration.ofSeconds(5));
ts1.assertValueCount(500_000).assertNoError().assertComplete();
ts2.assertValueCount(500_000).assertNoError().assertComplete();
ts3.assertNoValues().assertNoError().assertComplete();
}
use of reactor.test.subscriber.AssertSubscriber in project reactor-core by reactor.
the class FluxGroupByTest method twoGroupsConsumeWithSubscribeHide.
@Test
public void twoGroupsConsumeWithSubscribeHide() {
ForkJoinPool forkJoinPool = new ForkJoinPool();
AssertSubscriber<Integer> ts1 = AssertSubscriber.create();
AssertSubscriber<Integer> ts2 = AssertSubscriber.create();
AssertSubscriber<Integer> ts3 = AssertSubscriber.create();
ts3.onSubscribe(Operators.emptySubscription());
Flux.range(0, 1_000_000).groupBy(v -> v & 1).subscribe(new CoreSubscriber<GroupedFlux<Integer, Integer>>() {
@Override
public void onSubscribe(Subscription s) {
s.request(Long.MAX_VALUE);
}
@Override
public void onNext(GroupedFlux<Integer, Integer> t) {
if (t.key() == 0) {
t.hide().publishOn(Schedulers.fromExecutorService(forkJoinPool)).subscribe(ts1);
} else {
t.hide().publishOn(Schedulers.fromExecutorService(forkJoinPool)).subscribe(ts2);
}
}
@Override
public void onError(Throwable t) {
ts3.onError(t);
}
@Override
public void onComplete() {
ts3.onComplete();
}
});
ts1.await(Duration.ofSeconds(5));
ts2.await(Duration.ofSeconds(5));
ts3.await(Duration.ofSeconds(5));
ts1.assertValueCount(500_000).assertNoError().assertComplete();
ts2.assertValueCount(500_000).assertNoError().assertComplete();
ts3.assertNoValues().assertNoError().assertComplete();
}
use of reactor.test.subscriber.AssertSubscriber in project reactor-core by reactor.
the class FluxGroupByTest method twoGroupsLongAsyncMergeHidden.
@Test
public void twoGroupsLongAsyncMergeHidden() {
ForkJoinPool forkJoinPool = new ForkJoinPool();
AssertSubscriber<Integer> ts = AssertSubscriber.create();
Flux.range(1, 1_000_000).groupBy(v -> (v & 1)).flatMap(g -> g.hide()).publishOn(Schedulers.fromExecutorService(forkJoinPool)).subscribe(ts);
ts.await(Duration.ofSeconds(5));
ts.assertValueCount(1_000_000).assertNoError().assertComplete();
}
Aggregations