Search in sources :

Example 1 with LogTracer

use of ru.fix.completable.reactor.runtime.LogTracer in project completable-reactor by ru-fix.

the class TracingTest method trace_payload_if_payload_contain_special_id.

@Test
public void trace_payload_if_payload_contain_special_id() throws Exception {
    class Config {

        ReactorGraphBuilder graphBuilder = new ReactorGraphBuilder(this);

        Processor<TracablePayload> processor1 = graphBuilder.processor().forPayload(TracablePayload.class).withHandler(new IdProcessor(1)::handle).withMerger((payload, any) -> Status.OK).buildProcessor();

        Processor<TracablePayload> processor2 = graphBuilder.processor().forPayload(TracablePayload.class).withHandler(new IdProcessor(2)::handle).withMerger((payload, any) -> Status.OK).buildProcessor();

        Processor<TracablePayload> processor3 = graphBuilder.processor().forPayload(TracablePayload.class).withHandler(new IdProcessor(3)::handle).withMerger((payload, any) -> Status.OK).buildProcessor();

        ReactorGraph<TracablePayload> graph() {
            return graphBuilder.payload(TracablePayload.class).handle(processor1).handle(processor2).mergePoint(processor1).onAny().merge(processor2).mergePoint(processor2).onAny().handle(processor3).mergePoint(processor3).onAny().complete().coordinates().buildGraph();
        }
    }
    val graph = new Config().graph();
    completableReactor.registerReactorGraph(graph);
    val beforeHandle = new AtomicBoolean();
    val beforeMerge = new AtomicBoolean();
    val tracer = new LogTracer() {

        @Override
        public boolean isTraceable(Object payload) {
            if (payload instanceof TracablePayload) {
                return ((TracablePayload) payload).getNumber() == 42;
            } else {
                return false;
            }
        }

        @Override
        public Object beforeHandle(String identity, Object payload) {
            if (((TracablePayload) payload).getNumber() == 42) {
                beforeHandle.set(true);
            }
            return super.beforeHandle(identity, payload);
        }

        @Override
        public Object beforeMerge(String identity, Object payload, Object handleResult) {
            if (((TracablePayload) payload).getNumber() == 42) {
                beforeMerge.set(true);
            }
            return super.beforeMerge(identity, payload, handleResult);
        }
    };
    completableReactor.setTracer(tracer);
    for (int num = 0; num < 1000; num++) {
        completableReactor.submit(new TracablePayload().setNumber(num));
    }
    completableReactor.close();
    assertTrue(beforeHandle.get());
    assertTrue(beforeMerge.get());
}
Also used : lombok.val(lombok.val) ReactorGraphBuilder(ru.fix.completable.reactor.runtime.ReactorGraphBuilder) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) LogTracer(ru.fix.completable.reactor.runtime.LogTracer) Processor(ru.fix.completable.reactor.runtime.dsl.Processor) Test(org.junit.Test)

Example 2 with LogTracer

use of ru.fix.completable.reactor.runtime.LogTracer in project completable-reactor by ru-fix.

the class GlTracingTest method trace_payload_if_payload_contain_special_id.

@Test
public void trace_payload_if_payload_contain_special_id() throws Exception {
    SimpleGraph graph = new SimpleGraph();
    completableReactor.registerGraph(graph);
    AtomicBoolean beforeHandle = new AtomicBoolean();
    AtomicBoolean beforeMerge = new AtomicBoolean();
    LogTracer tracer = new LogTracer() {

        @Override
        public boolean isTraceable(Object payload) {
            if (payload instanceof TracablePayload) {
                return ((TracablePayload) payload).getNumber() == 42;
            } else {
                return false;
            }
        }

        @Override
        public Object beforeHandle(String identity, Object payload) {
            if (((TracablePayload) payload).getNumber() == 42) {
                beforeHandle.set(true);
            }
            return super.beforeHandle(identity, payload);
        }

        @Override
        public Object beforeMerge(String identity, Object payload, Object handleResult) {
            if (((TracablePayload) payload).getNumber() == 42) {
                beforeMerge.set(true);
            }
            return super.beforeMerge(identity, payload, handleResult);
        }
    };
    completableReactor.setTracer(tracer);
    for (int num = 0; num < 1000; num++) {
        completableReactor.submit(new TracablePayload().setNumber(num));
    }
    completableReactor.close();
    assertTrue(beforeHandle.get());
    assertTrue(beforeMerge.get());
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) LogTracer(ru.fix.completable.reactor.runtime.LogTracer) Test(org.junit.Test)

Aggregations

AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)2 Test (org.junit.Test)2 LogTracer (ru.fix.completable.reactor.runtime.LogTracer)2 lombok.val (lombok.val)1 ReactorGraphBuilder (ru.fix.completable.reactor.runtime.ReactorGraphBuilder)1 Processor (ru.fix.completable.reactor.runtime.dsl.Processor)1