Search in sources :

Example 16 with TraceEvent

use of org.kie.kogito.tracing.event.trace.TraceEvent in project kogito-runtimes by kiegroup.

the class DefaultAggregatorTest method testAggregateOnEvaluateAllWithListWithMissingLastAfterEvaluateDecisionEventReturnsNoExecutionStepHierarchy.

@Test
void testAggregateOnEvaluateAllWithListWithMissingLastAfterEvaluateDecisionEventReturnsNoExecutionStepHierarchy() throws IOException {
    final DefaultAggregator aggregator = new DefaultAggregator();
    final List<EvaluateEvent> events = DecisionTracingTestUtils.readEvaluateEventsFromJsonResource(EVALUATE_ALL_JSON_RESOURCE).stream().filter(e -> !(e.getType() == EvaluateEventType.AFTER_EVALUATE_DECISION && LAST_DECISION_NODE_ID.equals(e.getNodeId()))).collect(Collectors.toList());
    CloudEvent cloudEvent = aggregator.aggregate(model, EVALUATE_ALL_EXECUTION_ID, events, configBean).orElseThrow(IllegalStateException::new);
    TraceEvent traceEvent = assertValidCloudEventAndGetData(cloudEvent, EVALUATE_ALL_EXECUTION_ID);
    assertTraceEventWithNoExecutionStepsHierarchy(traceEvent, 2, 2, 5);
}
Also used : TraceEventType(org.kie.kogito.tracing.event.trace.TraceEventType) Assertions.fail(org.junit.jupiter.api.Assertions.fail) DecisionTestUtils.createDMNModel(org.kie.kogito.dmn.DecisionTestUtils.createDMNModel) CloudEvent(io.cloudevents.CloudEvent) MessageCategory(org.kie.kogito.tracing.event.message.MessageCategory) Assertions.assertNull(org.junit.jupiter.api.Assertions.assertNull) EVALUATE_DECISION_SERVICE_JSON_RESOURCE(org.kie.kogito.tracing.decision.DecisionTracingTestUtils.EVALUATE_DECISION_SERVICE_JSON_RESOURCE) EVALUATE_ALL_JSON_RESOURCE(org.kie.kogito.tracing.decision.DecisionTracingTestUtils.EVALUATE_ALL_JSON_RESOURCE) EVALUATE_DECISION_SERVICE_EXECUTION_ID(org.kie.kogito.dmn.DecisionTestUtils.EVALUATE_DECISION_SERVICE_EXECUTION_ID) DMNModel(org.kie.dmn.api.core.DMNModel) BeforeAll(org.junit.jupiter.api.BeforeAll) DECISION_SERVICE_DECISION_ID(org.kie.kogito.dmn.DecisionTestUtils.DECISION_SERVICE_DECISION_ID) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) InternalMessageType(org.kie.kogito.tracing.decision.message.InternalMessageType) EvaluateEventType(org.kie.kogito.tracing.decision.event.evaluate.EvaluateEventType) TraceEvent(org.kie.kogito.tracing.event.trace.TraceEvent) EvaluateEvent(org.kie.kogito.tracing.decision.event.evaluate.EvaluateEvent) FIRST_DECISION_NODE_ID(org.kie.kogito.dmn.DecisionTestUtils.FIRST_DECISION_NODE_ID) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) Assertions.assertSame(org.junit.jupiter.api.Assertions.assertSame) Test(org.junit.jupiter.api.Test) List(java.util.List) DecisionTestUtils(org.kie.kogito.dmn.DecisionTestUtils) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) Collections(java.util.Collections) EVALUATE_ALL_EXECUTION_ID(org.kie.kogito.dmn.DecisionTestUtils.EVALUATE_ALL_EXECUTION_ID) LAST_DECISION_NODE_ID(org.kie.kogito.dmn.DecisionTestUtils.LAST_DECISION_NODE_ID) DecisionTracingTestUtils(org.kie.kogito.tracing.decision.DecisionTracingTestUtils) StaticConfigBean(org.kie.kogito.conf.StaticConfigBean) CloudEvent(io.cloudevents.CloudEvent) EvaluateEvent(org.kie.kogito.tracing.decision.event.evaluate.EvaluateEvent) TraceEvent(org.kie.kogito.tracing.event.trace.TraceEvent) Test(org.junit.jupiter.api.Test)

Example 17 with TraceEvent

use of org.kie.kogito.tracing.event.trace.TraceEvent in project kogito-runtimes by kiegroup.

the class DefaultAggregatorTest method testAggregateOnEvaluateDecisionServiceWithNullModelReturnsDmnModelNotFound.

@Test
void testAggregateOnEvaluateDecisionServiceWithNullModelReturnsDmnModelNotFound() throws IOException {
    final DefaultAggregator aggregator = new DefaultAggregator();
    List<EvaluateEvent> events = DecisionTracingTestUtils.readEvaluateEventsFromJsonResource(EVALUATE_DECISION_SERVICE_JSON_RESOURCE);
    CloudEvent cloudEvent = aggregator.aggregate(null, EVALUATE_DECISION_SERVICE_EXECUTION_ID, events, configBean).orElseThrow(IllegalStateException::new);
    TraceEvent traceEvent = assertValidCloudEventAndGetData(cloudEvent, EVALUATE_DECISION_SERVICE_EXECUTION_ID);
    assertTraceEvent(traceEvent, 1, 1, 1);
    assertTraceEventInternalMessage(traceEvent, InternalMessageType.DMN_MODEL_NOT_FOUND);
}
Also used : CloudEvent(io.cloudevents.CloudEvent) EvaluateEvent(org.kie.kogito.tracing.decision.event.evaluate.EvaluateEvent) TraceEvent(org.kie.kogito.tracing.event.trace.TraceEvent) Test(org.junit.jupiter.api.Test)

Example 18 with TraceEvent

use of org.kie.kogito.tracing.event.trace.TraceEvent in project kogito-runtimes by kiegroup.

the class DefaultAggregatorTest method testAggregateOnEvaluateDecisionServiceWithListWithMissingBeforeEvaluateDecisionEventReturnsNoExecutionStepHierarchy.

@Test
void testAggregateOnEvaluateDecisionServiceWithListWithMissingBeforeEvaluateDecisionEventReturnsNoExecutionStepHierarchy() throws IOException {
    final DefaultAggregator aggregator = new DefaultAggregator();
    final List<EvaluateEvent> events = DecisionTracingTestUtils.readEvaluateEventsFromJsonResource(EVALUATE_DECISION_SERVICE_JSON_RESOURCE).stream().filter(e -> !(e.getType() == EvaluateEventType.BEFORE_EVALUATE_DECISION && DECISION_SERVICE_DECISION_ID.equals(e.getNodeId()))).collect(Collectors.toList());
    CloudEvent cloudEvent = aggregator.aggregate(model, EVALUATE_DECISION_SERVICE_EXECUTION_ID, events, configBean).orElseThrow(IllegalStateException::new);
    TraceEvent traceEvent = assertValidCloudEventAndGetData(cloudEvent, EVALUATE_DECISION_SERVICE_EXECUTION_ID);
    assertTraceEventWithNoExecutionStepsHierarchy(traceEvent, 1, 1, 3);
}
Also used : TraceEventType(org.kie.kogito.tracing.event.trace.TraceEventType) Assertions.fail(org.junit.jupiter.api.Assertions.fail) DecisionTestUtils.createDMNModel(org.kie.kogito.dmn.DecisionTestUtils.createDMNModel) CloudEvent(io.cloudevents.CloudEvent) MessageCategory(org.kie.kogito.tracing.event.message.MessageCategory) Assertions.assertNull(org.junit.jupiter.api.Assertions.assertNull) EVALUATE_DECISION_SERVICE_JSON_RESOURCE(org.kie.kogito.tracing.decision.DecisionTracingTestUtils.EVALUATE_DECISION_SERVICE_JSON_RESOURCE) EVALUATE_ALL_JSON_RESOURCE(org.kie.kogito.tracing.decision.DecisionTracingTestUtils.EVALUATE_ALL_JSON_RESOURCE) EVALUATE_DECISION_SERVICE_EXECUTION_ID(org.kie.kogito.dmn.DecisionTestUtils.EVALUATE_DECISION_SERVICE_EXECUTION_ID) DMNModel(org.kie.dmn.api.core.DMNModel) BeforeAll(org.junit.jupiter.api.BeforeAll) DECISION_SERVICE_DECISION_ID(org.kie.kogito.dmn.DecisionTestUtils.DECISION_SERVICE_DECISION_ID) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) InternalMessageType(org.kie.kogito.tracing.decision.message.InternalMessageType) EvaluateEventType(org.kie.kogito.tracing.decision.event.evaluate.EvaluateEventType) TraceEvent(org.kie.kogito.tracing.event.trace.TraceEvent) EvaluateEvent(org.kie.kogito.tracing.decision.event.evaluate.EvaluateEvent) FIRST_DECISION_NODE_ID(org.kie.kogito.dmn.DecisionTestUtils.FIRST_DECISION_NODE_ID) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) Assertions.assertSame(org.junit.jupiter.api.Assertions.assertSame) Test(org.junit.jupiter.api.Test) List(java.util.List) DecisionTestUtils(org.kie.kogito.dmn.DecisionTestUtils) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) Collections(java.util.Collections) EVALUATE_ALL_EXECUTION_ID(org.kie.kogito.dmn.DecisionTestUtils.EVALUATE_ALL_EXECUTION_ID) LAST_DECISION_NODE_ID(org.kie.kogito.dmn.DecisionTestUtils.LAST_DECISION_NODE_ID) DecisionTracingTestUtils(org.kie.kogito.tracing.decision.DecisionTracingTestUtils) StaticConfigBean(org.kie.kogito.conf.StaticConfigBean) CloudEvent(io.cloudevents.CloudEvent) EvaluateEvent(org.kie.kogito.tracing.decision.event.evaluate.EvaluateEvent) TraceEvent(org.kie.kogito.tracing.event.trace.TraceEvent) Test(org.junit.jupiter.api.Test)

Example 19 with TraceEvent

use of org.kie.kogito.tracing.event.trace.TraceEvent in project kogito-runtimes by kiegroup.

the class DefaultAggregator method buildDefaultCloudEvent.

private static Optional<CloudEvent> buildDefaultCloudEvent(DMNModel model, String executionId, List<EvaluateEvent> events, ConfigBean configBean) {
    EvaluateEvent firstEvent = events.get(0);
    EvaluateEvent lastEvent = events.get(events.size() - 1);
    List<TraceInputValue> inputs = buildTraceInputValues(model, firstEvent);
    List<TraceOutputValue> outputs = buildTraceOutputValues(model, lastEvent);
    Pair<List<TraceExecutionStep>, List<Message>> executionStepsPair = buildTraceExecutionSteps(model, executionId, events);
    TraceHeader header = new TraceHeader(TraceEventType.DMN, executionId, firstEvent.getTimestamp(), lastEvent.getTimestamp(), computeDurationMillis(firstEvent, lastEvent), firstEvent.toTraceResourceId(configBean.getServiceUrl()), Stream.of(model == null ? Stream.of(EventUtils.messageFrom(InternalMessageType.DMN_MODEL_NOT_FOUND)) : Stream.<Message>empty(), executionStepsPair.getRight().stream(), lastEvent.getResult().getMessages().stream().filter(m -> m.getSourceId() == null || m.getSourceId().isEmpty())).flatMap(Function.identity()).collect(Collectors.toList()));
    // complete event
    TraceEvent event = new TraceEvent(header, inputs, outputs, executionStepsPair.getLeft());
    return CloudEventUtils.build(executionId, buildSource(configBean.getServiceUrl(), firstEvent), event, TraceEvent.class);
}
Also used : TraceOutputValue(org.kie.kogito.tracing.event.trace.TraceOutputValue) TraceHeader(org.kie.kogito.tracing.event.trace.TraceHeader) ArrayList(java.util.ArrayList) List(java.util.List) TraceInputValue(org.kie.kogito.tracing.event.trace.TraceInputValue) EvaluateEvent(org.kie.kogito.tracing.decision.event.evaluate.EvaluateEvent) TraceEvent(org.kie.kogito.tracing.event.trace.TraceEvent)

Example 20 with TraceEvent

use of org.kie.kogito.tracing.event.trace.TraceEvent in project kogito-runtimes by kiegroup.

the class BaseQuarkusDecisionTracingTest method testCollector.

private void testCollector(List<EvaluateEvent> events, DecisionModel model) throws IOException {
    AssertSubscriber<String> subscriber = AssertSubscriber.create(1);
    final DecisionModels mockedDecisionModels = mock(DecisionModels.class);
    when(mockedDecisionModels.getDecisionModel(getTestModelNameSpace(), getTestModelName())).thenReturn(model);
    final Application mockedApplication = mock(Application.class);
    when(mockedApplication.get(any())).thenReturn(mockedDecisionModels);
    final ConfigBean configBean = new StaticConfigBean(TEST_SERVICE_URL, true, null);
    final QuarkusTraceEventEmitter eventEmitter = new QuarkusTraceEventEmitter();
    QuarkusDecisionTracingCollector collector = new QuarkusDecisionTracingCollector(eventEmitter, configBean, mockedApplication);
    eventEmitter.getEventPublisher().subscribe(subscriber);
    events.forEach(collector::onEvent);
    subscriber.assertNotTerminated();
    List<String> items = subscriber.getItems();
    assertEquals(1, items.size());
    CloudEvent cloudEvent = CloudEventUtils.decode(items.get(0)).orElseThrow(() -> new IllegalStateException("Can't decode CloudEvent"));
    assertEquals(TEST_EXECUTION_ID, cloudEvent.getId());
    assertNotNull(cloudEvent.getData());
    TraceEvent traceEvent = MAPPER.readValue(cloudEvent.getData().toBytes(), TraceEvent.class);
    assertNotNull(traceEvent);
    assertEquals(TEST_SERVICE_URL, traceEvent.getHeader().getResourceId().getServiceUrl());
}
Also used : StaticConfigBean(org.kie.kogito.conf.StaticConfigBean) ConfigBean(org.kie.kogito.conf.ConfigBean) StaticConfigBean(org.kie.kogito.conf.StaticConfigBean) DecisionModels(org.kie.kogito.decision.DecisionModels) Application(org.kie.kogito.Application) CloudEvent(io.cloudevents.CloudEvent) TraceEvent(org.kie.kogito.tracing.event.trace.TraceEvent)

Aggregations

TraceEvent (org.kie.kogito.tracing.event.trace.TraceEvent)20 CloudEvent (io.cloudevents.CloudEvent)16 Test (org.junit.jupiter.api.Test)14 EvaluateEvent (org.kie.kogito.tracing.decision.event.evaluate.EvaluateEvent)13 StaticConfigBean (org.kie.kogito.conf.StaticConfigBean)8 List (java.util.List)7 IOException (java.io.IOException)6 Collections (java.util.Collections)6 Collectors (java.util.stream.Collectors)6 Assertions.assertEquals (org.junit.jupiter.api.Assertions.assertEquals)6 Assertions.assertNull (org.junit.jupiter.api.Assertions.assertNull)6 Assertions.assertSame (org.junit.jupiter.api.Assertions.assertSame)6 Assertions.assertTrue (org.junit.jupiter.api.Assertions.assertTrue)6 Assertions.fail (org.junit.jupiter.api.Assertions.fail)6 BeforeAll (org.junit.jupiter.api.BeforeAll)6 DMNModel (org.kie.dmn.api.core.DMNModel)6 DecisionTestUtils (org.kie.kogito.dmn.DecisionTestUtils)6 DECISION_SERVICE_DECISION_ID (org.kie.kogito.dmn.DecisionTestUtils.DECISION_SERVICE_DECISION_ID)6 EVALUATE_ALL_EXECUTION_ID (org.kie.kogito.dmn.DecisionTestUtils.EVALUATE_ALL_EXECUTION_ID)6 EVALUATE_DECISION_SERVICE_EXECUTION_ID (org.kie.kogito.dmn.DecisionTestUtils.EVALUATE_DECISION_SERVICE_EXECUTION_ID)6