use of org.mule.runtime.core.api.construct.Flow in project mule by mulesoft.
the class AggregatorTestCase method testMessageAggregator.
@Test
public void testMessageAggregator() throws Exception {
Flow flow = createAndRegisterFlow(muleContext, APPLE_FLOW, componentLocator);
MuleSession session = new DefaultMuleSession();
TestEventAggregator router = new TestEventAggregator(3);
router.setAnnotations(getAppleFlowComponentLocationAnnotations());
initialiseIfNeeded(router, true, muleContext);
EventContext context = create(flow, TEST_CONNECTOR_LOCATION, "foo");
Message message1 = Message.of("test event A");
Message message2 = Message.of("test event B");
Message message3 = Message.of("test event C");
CoreEvent event1 = InternalEvent.builder(context).message(message1).session(session).build();
CoreEvent event2 = InternalEvent.builder(context).message(message2).session(session).build();
CoreEvent event3 = InternalEvent.builder(context).message(message3).session(session).build();
assertNull(router.process(event1));
assertNull(router.process(event2));
CoreEvent result = router.process(event3);
assertNotNull(result);
PrivilegedEvent privilegedResult = (PrivilegedEvent) result;
assertTrue(privilegedResult.getMessageAsString(muleContext).contains("test event A"));
assertTrue(privilegedResult.getMessageAsString(muleContext).contains("test event B"));
assertTrue(privilegedResult.getMessageAsString(muleContext).contains("test event C"));
assertTrue(privilegedResult.getMessageAsString(muleContext).matches("test event [A,B,C] test event [A,B,C] test event [A,B,C] "));
}
use of org.mule.runtime.core.api.construct.Flow in project mule by mulesoft.
the class RegistryTransformerLifecycleTestCase method testLifecycleInFlowTransientRegistry.
@Test
public void testLifecycleInFlowTransientRegistry() throws Exception {
TransformerLifecycleTracker transformer = new TransformerLifecycleTracker();
transformer.setProperty("foo");
Flow flow = builder("flow", muleContext).processors(transformer).build();
((MuleContextWithRegistries) muleContext).getRegistry().registerFlowConstruct(flow);
muleContext.dispose();
assertLifecycle(transformer);
}
use of org.mule.runtime.core.api.construct.Flow in project mule by mulesoft.
the class MessageProcessorsTestCase method setup.
@Before
public void setup() throws MuleException {
flow = mock(Flow.class, RETURNS_DEEP_STUBS);
OnErrorPropagateHandler exceptionHandler = new OnErrorPropagateHandler();
exceptionHandler.setMuleContext(muleContext);
exceptionHandler.setNotificationFirer(((MuleContextWithRegistries) muleContext).getRegistry().lookupObject(NotificationDispatcher.class));
exceptionHandler.initialise();
when(flow.getExceptionListener()).thenReturn(exceptionHandler);
eventContext = (BaseEventContext) create(flow, TEST_CONNECTOR_LOCATION);
input = builder(eventContext).message(of(TEST_MESSAGE)).build();
output = builder(eventContext).message(of(TEST_MESSAGE)).build();
response = builder(eventContext).message(of(TEST_MESSAGE)).build();
responsePublisher = eventContext.getResponsePublisher();
}
use of org.mule.runtime.core.api.construct.Flow in project mule by mulesoft.
the class ReactiveInterceptorAdapterTestCase method interceptorThrowsExceptionAroundAfterProceedInCallbackChained.
@Test
public void interceptorThrowsExceptionAroundAfterProceedInCallbackChained() throws Exception {
RuntimeException expectedException = new RuntimeException("Some Error");
ProcessorInterceptor interceptor = prepareInterceptor(new ProcessorInterceptor() {
@Override
public CompletableFuture<InterceptionEvent> around(ComponentLocation location, Map<String, ProcessorParameterValue> parameters, InterceptionEvent event, InterceptionAction action) {
return action.proceed().thenApplyAsync(e -> {
throw expectedException;
});
}
});
startFlowWithInterceptors(interceptor);
expected.expect(MessagingException.class);
expected.expect(withEventThat(hasErrorType(UNKNOWN.getNamespace(), UNKNOWN.getName())));
expected.expectCause(sameInstance(expectedException));
try {
process(flow, eventBuilder(muleContext).message(Message.of("")).build());
} finally {
if (useMockInterceptor) {
InOrder inOrder = inOrder(processor, interceptor);
inOrder.verify(interceptor).before(any(), any(), any());
inOrder.verify(interceptor).around(any(), any(), any(), any());
inOrder.verify(processor).process(any());
inOrder.verify(interceptor).after(any(), any(), eq(of(expectedException)));
verifyParametersResolvedAndDisposed(times(1));
}
}
}
use of org.mule.runtime.core.api.construct.Flow in project mule by mulesoft.
the class AbstractProcessingStrategyTestCase method testAsyncCpuLightNotificationThreads.
protected void testAsyncCpuLightNotificationThreads(AtomicReference<Thread> beforeThread, AtomicReference<Thread> afterThread) throws Exception {
muleContext.getNotificationManager().addInterfaceToType(MessageProcessorNotificationListener.class, MessageProcessorNotification.class);
muleContext.getNotificationManager().addListener((MessageProcessorNotificationListener) notification -> {
if (new IntegerAction(MESSAGE_PROCESSOR_PRE_INVOKE).equals(notification.getAction())) {
beforeThread.set(currentThread());
} else if (new IntegerAction(MESSAGE_PROCESSOR_POST_INVOKE).equals(notification.getAction())) {
afterThread.set(currentThread());
}
});
flow = flowBuilder.get().processors(annotatedAsyncProcessor).build();
flow.initialise();
flow.start();
processFlow(testEvent());
}
Aggregations