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