public void testMulticastParalllelStopOnExceptionStop() throws Exception { // we run in parallel so we may get 0 or 1 messages getMockEndpoint("mock:foo").expectedMinimumMessageCount(0); getMockEndpoint("mock:bar").expectedMinimumMessageCount(0); getMockEndpoint("mock:baz").expectedMinimumMessageCount(0); // we should not complete and thus 0 getMockEndpoint("mock:result").expectedMessageCount(0); try { template.sendBody("direct:start", "Kaboom"); fail("Should thrown an exception"); } catch (CamelExecutionException e) { ExecutionException ee = assertIsInstanceOf(ExecutionException.class, e.getCause()); CamelExchangeException cause = assertIsInstanceOf(CamelExchangeException.class, ee.getCause()); assertTrue(cause.getMessage().startsWith("Parallel processing failed for number ")); assertTrue(cause.getMessage().contains("Exchange[Message: Kaboom]")); assertEquals("Forced", cause.getCause().getMessage()); } assertMockEndpointsSatisfied(); }
@Test public void testSplitStopOnException() throws Exception { MockEndpoint split = getMockEndpoint("mock:split"); // we expect 1 messages to be split since the 2nd message should fail split.expectedBodiesReceived("Camel rocks"); // and no combined aggregated message since we stop on exception MockEndpoint result = getMockEndpoint("mock:result"); result.expectedMessageCount(0); // now send a message with an unknown letter (F) which forces an exception to occur try { template.sendBody("direct:start", "A,F,C"); fail("Should have thrown an exception"); } catch (CamelExecutionException e) { CamelExchangeException cause = assertIsInstanceOf(CamelExchangeException.class, e.getCause()); IllegalArgumentException iae = assertIsInstanceOf(IllegalArgumentException.class, cause.getCause()); assertEquals("Key not a known word F", iae.getMessage()); } assertMockEndpointsSatisfied(); }