use of org.mule.runtime.core.internal.routing.ForkJoinStrategy.RoutingPair in project mule by mulesoft.
the class SplitAggregateScopeTestCase method routingPairs.
@Test
@Description("RoutingPairs are created for each route configured. Each RoutingPair has the same input event.")
public void routingPairs() throws Exception {
CoreEvent event = createListEvent();
MessageProcessorChain nested = mock(MessageProcessorChain.class);
muleContext.getInjector().inject(router);
router.setMessageProcessors(singletonList(nested));
router.setAnnotations(getAppleFlowComponentLocationAnnotations());
router.initialise();
List<RoutingPair> routingPairs = from(router.getRoutingPairs(event)).collectList().block();
assertThat(routingPairs, hasSize(2));
assertThat(routingPairs.get(0).getEvent().getMessage().getPayload().getValue(), equalTo(((List<Message>) event.getMessage().getPayload().getValue()).get(0)));
assertThat(routingPairs.get(0).getRoute(), sameInstance(nested));
assertThat(routingPairs.get(1).getEvent().getMessage().getPayload().getValue(), equalTo(((List<Message>) event.getMessage().getPayload().getValue()).get(1)));
assertThat(routingPairs.get(1).getRoute(), sameInstance(nested));
}
use of org.mule.runtime.core.internal.routing.ForkJoinStrategy.RoutingPair in project mule by mulesoft.
the class AbstractForkJoinStrategyTestCase method errorEager.
@Test
@Description("When configured with delayErrors='false' the first errors causes strategy to throw this exception.")
public void errorEager() throws Throwable {
strategy = createStrategy(processingStrategy, 1, false, MAX_VALUE);
Processor processorSpy = createProcessorSpy(of(1));
RuntimeException exception = new IllegalStateException();
RoutingPair failingPair = of(testEvent(), createFailingRoutingPair(exception));
RoutingPair okPair = of(testEvent(), createChain(processorSpy));
expectedException.expect(instanceOf(MessagingException.class));
expectedException.expectCause(is(exception));
invokeStrategyBlocking(strategy, testEvent(), asList(failingPair, okPair), throwable -> verify(processorSpy, never()).process(any(CoreEvent.class)));
}
use of org.mule.runtime.core.internal.routing.ForkJoinStrategy.RoutingPair in project mule by mulesoft.
the class AbstractForkJoinStrategyTestCase method errorEagerConcurrent.
@Test
@Description("When configured with delayErrors='false' the first errors causes strategy to throw this exception. Other routes may or may not be executed depending on concurrency.")
public void errorEagerConcurrent() throws Throwable {
strategy = createStrategy(processingStrategy, 4, false, MAX_VALUE);
Processor processorSpy = createProcessorSpy(of(1));
Processor processorSpy2 = createProcessorSpy(of(2));
Processor processorSpy3 = createProcessorSpy(of(3));
CoreEvent orignial = testEvent();
RuntimeException exception = new IllegalStateException();
RoutingPair failingPair = of(orignial, createFailingRoutingPair(exception));
RoutingPair okPair = of(orignial, createChain(processorSpy));
RoutingPair okPair2 = of(orignial, createChain(processorSpy2));
RoutingPair okPair3 = of(orignial, createChain(processorSpy3));
expectedException.expect(instanceOf(MessagingException.class));
expectedException.expectCause(is(exception));
invokeStrategyBlocking(strategy, testEvent(), asList(failingPair, okPair, okPair2, okPair3), throwable -> {
verify(processorSpy, atMost(1)).process(any(CoreEvent.class));
verify(processorSpy2, atMost(1)).process(any(CoreEvent.class));
verify(processorSpy3, atMost(1)).process(any(CoreEvent.class));
});
}
use of org.mule.runtime.core.internal.routing.ForkJoinStrategy.RoutingPair in project mule by mulesoft.
the class AbstractForkJoinStrategyTestCase method timeoutDelayed.
@Test
@Description("When a route timeout occurs all routes are still executed and a CompositeRoutingException is thrown with details of timeout error and successful routes in RoutingResult.")
public void timeoutDelayed() throws Throwable {
strategy = createStrategy(processingStrategy, 1, true, 50);
Message pair2Result = of(2);
Processor pair2Processor = createProcessorSpy(pair2Result);
RoutingPair pair2 = of(testEvent(), createChain(pair2Processor));
expectedException.expect(instanceOf(CompositeRoutingException.class));
invokeStrategyBlocking(strategy, testEvent(), asList(createRoutingPairWithSleep(of(1), 250), pair2), throwable -> {
verify(pair2Processor, times(1)).process(any(CoreEvent.class));
CompositeRoutingException compositeRoutingException = assertCompositeRoutingException(throwable, 1);
RoutingResult routingResult = assertRoutingResult(compositeRoutingException, 1, 1);
assertThat(routingResult.getFailures().get("0").getCause(), instanceOf(TimeoutException.class));
assertThat(routingResult.getResults().get("1"), is(pair2Result));
});
}
use of org.mule.runtime.core.internal.routing.ForkJoinStrategy.RoutingPair in project mule by mulesoft.
the class CollectMapForkJoinStrategyTestCase method collectMap.
@Test
@Description("This strategy waits for all routes to return and then collects results into a map where the key of each entry is the string representation of the index of the routing pair.")
public void collectMap() throws Throwable {
Message route1Result = of(1);
Message route2Result = of(2);
Message route3Result = of(3);
RoutingPair pair1 = createRoutingPair(route1Result);
RoutingPair pair2 = createRoutingPair(route2Result);
RoutingPair pair3 = createRoutingPair(route3Result);
CoreEvent result = invokeStrategyBlocking(strategy, testEvent(), asList(pair1, pair2, pair3));
assertThat(result.getMessage().getPayload().getValue(), instanceOf(Map.class));
Map<String, Message> resultMap = (Map<String, Message>) result.getMessage().getPayload().getValue();
assertThat(resultMap.entrySet(), hasSize(3));
assertThat(resultMap.get("0"), is(route1Result));
assertThat(resultMap.get("1"), is(route2Result));
assertThat(resultMap.get("2"), is(route3Result));
}
Aggregations