1
2
3
4
5
6
7
8
9
10
11 package org.mule.test.integration.exceptions;
12
13 import org.mule.api.MuleEvent;
14 import org.mule.api.MuleException;
15 import org.mule.api.MuleMessage;
16 import org.mule.api.processor.MessageProcessor;
17 import org.mule.message.ExceptionMessage;
18 import org.mule.module.client.MuleClient;
19 import org.mule.tck.AbstractServiceAndFlowTestCase;
20 import org.mule.tck.exceptions.FunctionalTestException;
21
22 import java.util.Arrays;
23 import java.util.Collection;
24
25 import org.junit.Test;
26 import org.junit.runners.Parameterized.Parameters;
27
28 import static org.junit.Assert.assertEquals;
29 import static org.junit.Assert.assertNotNull;
30 import static org.junit.Assert.assertNull;
31 import static org.junit.Assert.assertTrue;
32
33 public class ExceptionStrategyConstructsTestCase extends AbstractServiceAndFlowTestCase
34 {
35 @Parameters
36 public static Collection<Object[]> parameters()
37 {
38 return Arrays.asList(new Object[][]{
39 {ConfigVariant.SERVICE,
40 "org/mule/test/integration/exceptions/exception-strategy-constructs-config-service.xml"},
41 {ConfigVariant.FLOW,
42 "org/mule/test/integration/exceptions/exception-strategy-constructs-config-flow.xml"}});
43 }
44
45 public ExceptionStrategyConstructsTestCase(ConfigVariant variant, String configResources)
46 {
47 super(variant, configResources);
48 }
49
50 @Test
51 public void testDefaultExceptionStrategySingleEndpoint() throws Exception
52 {
53 MuleClient mc = new MuleClient(muleContext);
54
55 mc.dispatch("vm://inservice2", "test", null);
56 assertExceptionMessage(mc.request("vm://modelout", RECEIVE_TIMEOUT));
57
58 mc.dispatch("vm://inservice1", "test", null);
59 assertExceptionMessage(mc.request("vm://service1out", RECEIVE_TIMEOUT));
60
61
62 assertNull(mc.request("vm://modelout", RECEIVE_TIMEOUT));
63
64 mc.dispatch("vm://inflow1", "test", null);
65 assertExceptionMessage(mc.request("vm://flow1out", RECEIVE_TIMEOUT));
66
67
68 assertNull(mc.request("vm://modelout", RECEIVE_TIMEOUT));
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 }
84
85 private void assertExceptionMessage(MuleMessage out)
86 {
87 assertNotNull(out);
88 assertTrue(out.getPayload() instanceof ExceptionMessage);
89 ExceptionMessage exceptionMessage = (ExceptionMessage) out.getPayload();
90 assertTrue(exceptionMessage.getException().getClass() == FunctionalTestException.class
91 || exceptionMessage.getException().getCause().getClass() == FunctionalTestException.class);
92 assertEquals("test", exceptionMessage.getPayload());
93 }
94
95 public static class ExceptionThrowingProcessor implements MessageProcessor
96 {
97 @Override
98 public MuleEvent process(MuleEvent event) throws MuleException
99 {
100 throw new FunctionalTestException();
101 }
102 }
103
104 public static class ExceptionThrowingComponent
105 {
106 public byte[] process(byte[] msg) throws MuleException
107 {
108 throw new FunctionalTestException();
109 }
110 }
111 }