Search in sources :

Example 6 with Scannable

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

the class FluxMergeOrderedTest method scanOperator.

@Test
public void scanOperator() {
    // scannable
    Flux<Integer> source1 = Flux.just(1).map(Function.identity());
    Flux<Integer> source2 = Flux.just(2);
    // safe varargs
    @SuppressWarnings("unchecked") Scannable fmo = new FluxMergeOrdered<>(123, Queues.small(), Comparator.naturalOrder(), source1, source2);
    assertThat(fmo.scan(Scannable.Attr.PARENT)).isSameAs(source1);
    assertThat(fmo.scan(Scannable.Attr.PREFETCH)).isEqualTo(123);
    assertThat(fmo.scan(Scannable.Attr.DELAY_ERROR)).isTrue();
    // default value
    assertThat(fmo.scan(Scannable.Attr.BUFFERED)).isEqualTo(0);
}
Also used : Scannable(reactor.core.Scannable) Test(org.junit.Test)

Example 7 with Scannable

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

the class BaseOperatorTest method fluxFuseableAsyncState.

@SuppressWarnings("unchecked")
final Flux<O> fluxFuseableAsyncState(OperatorScenario<I, PI, O, PO> scenario, boolean conditional) {
    AtomicReference<Scannable> ref = new AtomicReference<>();
    Flux<I> source = this.fluxFuseableAsync(scenario).doOnSubscribe(s -> Scannable.from(s).actuals().skip(1).findFirst().ifPresent(t -> {
        ref.set(t);
        if (scenario.prefetch() != -1) {
            assertThat(t.scan(Scannable.Attr.PREFETCH)).isEqualTo(scenario.prefetch());
        }
    }));
    if (source.getPrefetch() != -1 && scenario.prefetch() != -1) {
        assertThat(Math.min(source.getPrefetch(), Integer.MAX_VALUE)).isEqualTo(scenario.prefetch());
    }
    PO f;
    f = applyStateScenario(scenario, conditional, source);
    return Flux.from(f).doOnSubscribe(parent -> {
        Scannable t = Scannable.from(parent);
        assertThat(t.scan(Scannable.Attr.ERROR)).isNull();
        assertThat(t.scanOrDefault(Scannable.Attr.TERMINATED, false)).isFalse();
        // noop path
        if (parent instanceof Subscriber) {
            ((Subscriber<I>) parent).onSubscribe(Operators.emptySubscription());
            ((Subscriber<I>) parent).onSubscribe(Operators.cancelledSubscription());
        }
        touchTreeState(parent);
    }).doOnComplete(() -> {
        if (ref.get() != null) {
            Scannable t = ref.get();
            if (scenario.shouldAssertPostTerminateState()) {
                assertThat(t.scanOrDefault(Scannable.Attr.TERMINATED, true)).isTrue();
            }
            touchTreeState(ref.get());
        }
    }).doOnNext(d -> touchTreeState(ref.get()));
}
Also used : UnicastProcessor(reactor.core.publisher.UnicastProcessor) StepVerifier(reactor.test.StepVerifier) Iterator(java.util.Iterator) Operators(reactor.core.publisher.Operators) Scannable(reactor.core.Scannable) Publisher(org.reactivestreams.Publisher) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Hooks(reactor.core.publisher.Hooks) Test(org.junit.Test) ParallelFlux(reactor.core.publisher.ParallelFlux) AtomicReference(java.util.concurrent.atomic.AtomicReference) ReplayProcessor(reactor.core.publisher.ReplayProcessor) Nullable(reactor.util.annotation.Nullable) Queues(reactor.util.concurrent.Queues) Consumer(java.util.function.Consumer) Flux(reactor.core.publisher.Flux) List(java.util.List) Fuseable(reactor.core.Fuseable) After(org.junit.After) Subscription(org.reactivestreams.Subscription) Exceptions(reactor.core.Exceptions) Collections(java.util.Collections) Subscriber(org.reactivestreams.Subscriber) Before(org.junit.Before) Subscriber(org.reactivestreams.Subscriber) Scannable(reactor.core.Scannable) AtomicReference(java.util.concurrent.atomic.AtomicReference)

Example 8 with Scannable

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

the class ImmediateSchedulerTest method scanWorker.

@Test
public void scanWorker() {
    Worker worker = Schedulers.immediate().createWorker();
    Scannable s = (Scannable) worker;
    assertThat(s.scan(Scannable.Attr.TERMINATED)).isFalse();
    assertThat(s.scan(Scannable.Attr.CANCELLED)).isFalse();
    assertThat(s.scan(Scannable.Attr.NAME)).isEqualTo(Schedulers.IMMEDIATE + ".worker");
    worker.dispose();
    assertThat(s.scan(Scannable.Attr.TERMINATED)).isTrue();
    assertThat(s.scan(Scannable.Attr.CANCELLED)).isTrue();
}
Also used : Worker(reactor.core.scheduler.Scheduler.Worker) Scannable(reactor.core.Scannable) Test(org.junit.Test)

Aggregations

Scannable (reactor.core.Scannable)8 Test (org.junit.Test)5 Collections (java.util.Collections)2 Iterator (java.util.Iterator)2 List (java.util.List)2 AtomicReference (java.util.concurrent.atomic.AtomicReference)2 Consumer (java.util.function.Consumer)2 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)2 Subscription (org.reactivestreams.Subscription)2 StepVerifier (reactor.test.StepVerifier)2 IOException (java.io.IOException)1 Duration (java.time.Duration)1 ArrayList (java.util.ArrayList)1 After (org.junit.After)1 Before (org.junit.Before)1 Publisher (org.reactivestreams.Publisher)1 Subscriber (org.reactivestreams.Subscriber)1 CoreSubscriber (reactor.core.CoreSubscriber)1 Exceptions (reactor.core.Exceptions)1 Fuseable (reactor.core.Fuseable)1