@Test public void scanExpandDepthSubscriberError() { CoreSubscriber<Integer> parentActual = new LambdaSubscriber<>(null, Throwable::printStackTrace, null,null); ExpandDepthSubscription<Integer> eds = new ExpandDepthSubscription<>( parentActual, i -> i > 5 ? Mono.empty() : Mono.just(i + 1), 123); ExpandDepthSubscriber<Integer> test = new ExpandDepthSubscriber<>(eds); assertThat(test.scan(Scannable.Attr.TERMINATED)).isFalse(); test.onError(new IllegalStateException("boom")); assertThat(test.scan(Scannable.Attr.TERMINATED)).isTrue(); }
@Test public void scanExpandDepthSubscription() { CoreSubscriber<Integer> parentActual = new LambdaSubscriber<>(null, Throwable::printStackTrace, null,null); ExpandDepthSubscription<Integer> test = new ExpandDepthSubscription<>( parentActual, i -> i > 5 ? Mono.empty() : Mono.just(i + 1), 123); assertThat(test.scan(Scannable.Attr.ACTUAL)).isSameAs(parentActual); assertThat(test.scan(Scannable.Attr.ERROR)).isNull(); test.error = new IllegalStateException("boom"); assertThat(test.scan(Scannable.Attr.ERROR)).isSameAs(test.error); test.request(20); assertThat(test.scan(Scannable.Attr.REQUESTED_FROM_DOWNSTREAM)).isEqualTo(20); assertThat(test.scan(Scannable.Attr.CANCELLED)).isFalse(); test.cancel(); assertThat(test.scan(Scannable.Attr.CANCELLED)).isTrue(); } }
@Test public void scanExpandDepthSubscriber() { CoreSubscriber<Integer> parentActual = new LambdaSubscriber<>(null, Throwable::printStackTrace, null,null); ExpandDepthSubscription<Integer> eds = new ExpandDepthSubscription<>( parentActual, i -> i > 5 ? Mono.empty() : Mono.just(i + 1), 123); ExpandDepthSubscriber<Integer> test = new ExpandDepthSubscriber<>(eds); Subscription s = Operators.emptySubscription(); test.onSubscribe(s); assertThat(test.scan(Scannable.Attr.PARENT)).isSameAs(s); assertThat(test.scan(Scannable.Attr.ACTUAL)).isSameAs(parentActual); assertThat(test.scan(Scannable.Attr.TERMINATED)).isFalse(); test.onComplete(); assertThat(test.scan(Scannable.Attr.TERMINATED)).isTrue(); }
@Override public void subscribe(CoreSubscriber<? super T> s) { if (breadthFirst) { FluxExpand.ExpandBreathSubscriber<T> parent = new FluxExpand.ExpandBreathSubscriber<>(s, expander, capacityHint); parent.queue.offer(source); s.onSubscribe(parent); parent.drainQueue(); } else { FluxExpand.ExpandDepthSubscription<T> parent = new FluxExpand.ExpandDepthSubscription<>(s, expander, capacityHint); parent.source = source; s.onSubscribe(parent); } }
@Override public void subscribe(CoreSubscriber<? super T> s) { if (breadthFirst) { ExpandBreathSubscriber<T> parent = new ExpandBreathSubscriber<>(s, expander, capacityHint); parent.queue.offer(source); s.onSubscribe(parent); parent.drainQueue(); } else { ExpandDepthSubscription<T> parent = new ExpandDepthSubscription<>(s, expander, capacityHint); parent.source = source; s.onSubscribe(parent); } }
@Override public void subscribe(CoreSubscriber<? super T> s) { if (breadthFirst) { FluxExpand.ExpandBreathSubscriber<T> parent = new FluxExpand.ExpandBreathSubscriber<>(s, expander, capacityHint); parent.queue.offer(source); s.onSubscribe(parent); parent.drainQueue(); } else { FluxExpand.ExpandDepthSubscription<T> parent = new FluxExpand.ExpandDepthSubscription<>(s, expander, capacityHint); parent.source = source; s.onSubscribe(parent); } }
@Override public void subscribe(CoreSubscriber<? super T> s) { if (breadthFirst) { ExpandBreathSubscriber<T> parent = new ExpandBreathSubscriber<>(s, expander, capacityHint); parent.queue.offer(source); s.onSubscribe(parent); parent.drainQueue(); } else { ExpandDepthSubscription<T> parent = new ExpandDepthSubscription<>(s, expander, capacityHint); parent.source = source; s.onSubscribe(parent); } }
@Test public void currentContextForExpandDepthSubscriber() { final Context context = Context.of("foo", "bar"); CoreSubscriber<Integer> parentActual = new BaseSubscriber<Integer>() { @Override public Context currentContext() { return context; } }; ExpandDepthSubscription<Integer> expandDepthSubscription = new ExpandDepthSubscription<>( parentActual, i -> i > 5 ? Mono.empty() : Mono.just(i + 1), 123); ExpandDepthSubscriber<Integer> test = new ExpandDepthSubscriber<>(expandDepthSubscription); assertThat(test.currentContext()).isSameAs(context); }