1
2
3
4
5
6
7
8
9
10
11 package org.mule.routing;
12
13 import org.mule.api.MuleException;
14 import org.mule.api.routing.RoutePathNotFoundException;
15 import org.mule.management.stats.RouterStatistics;
16 import org.mule.routing.filters.EqualsFilter;
17 import org.mule.tck.junit4.AbstractMuleContextTestCase;
18 import org.mule.tck.testmodels.mule.TestMessageProcessor;
19
20 import org.junit.Test;
21
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.assertTrue;
24 import static org.junit.Assert.fail;
25
26 public class ChoiceRouterTestCase extends AbstractMuleContextTestCase
27 {
28 private ChoiceRouter choiceRouter;
29
30 public ChoiceRouterTestCase()
31 {
32 setDisposeContextPerClass(true);
33 }
34
35 @Override
36 protected void doSetUp() throws Exception
37 {
38 super.doSetUp();
39 choiceRouter = new ChoiceRouter();
40 }
41
42 @Test
43 public void testNoRoute() throws Exception
44 {
45 try
46 {
47 choiceRouter.process(getTestEvent("foo"));
48 fail("should have got a MuleException");
49 }
50 catch (MuleException me)
51 {
52 assertTrue(me instanceof RoutePathNotFoundException);
53 }
54 }
55
56 @Test
57 public void testOnlyDefaultRoute() throws Exception
58 {
59 choiceRouter.setDefaultRoute(new TestMessageProcessor("default"));
60 assertEquals("foo:default", choiceRouter.process(getTestEvent("foo")).getMessageAsString());
61 }
62
63 @Test
64 public void testNoMatchingNorDefaultRoute() throws Exception
65 {
66 try
67 {
68 choiceRouter.addRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
69 choiceRouter.process(getTestEvent("foo"));
70 fail("should have got a MuleException");
71 }
72 catch (MuleException me)
73 {
74 assertTrue(me instanceof RoutePathNotFoundException);
75 }
76 }
77
78 @Test
79 public void testNoMatchingRouteWithDefaultRoute() throws Exception
80 {
81 choiceRouter.addRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
82 choiceRouter.setDefaultRoute(new TestMessageProcessor("default"));
83 assertEquals("foo:default", choiceRouter.process(getTestEvent("foo")).getMessageAsString());
84 }
85
86 @Test
87 public void testMatchingRouteWithDefaultRoute() throws Exception
88 {
89 choiceRouter.addRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
90 choiceRouter.setDefaultRoute(new TestMessageProcessor("default"));
91 assertEquals("zap:bar", choiceRouter.process(getTestEvent("zap")).getMessageAsString());
92 }
93
94 @Test
95 public void testMatchingRouteWithStatistics() throws Exception
96 {
97 choiceRouter.addRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
98 choiceRouter.setRouterStatistics(new RouterStatistics(RouterStatistics.TYPE_OUTBOUND));
99 assertEquals("zap:bar", choiceRouter.process(getTestEvent("zap")).getMessageAsString());
100 }
101
102 @Test
103 public void testAddAndDeleteRoute() throws Exception
104 {
105 try
106 {
107 TestMessageProcessor mp = new TestMessageProcessor("bar");
108 choiceRouter.addRoute(mp, new EqualsFilter("zap"));
109 choiceRouter.removeRoute(mp);
110 choiceRouter.setRouterStatistics(new RouterStatistics(RouterStatistics.TYPE_OUTBOUND));
111 choiceRouter.process(getTestEvent("zap"));
112 fail("should have got a MuleException");
113 }
114 catch (MuleException me)
115 {
116 assertTrue(me instanceof RoutePathNotFoundException);
117 }
118 }
119
120 @Test
121 public void testUpdateRoute() throws Exception
122 {
123 TestMessageProcessor mp = new TestMessageProcessor("bar");
124 choiceRouter.addRoute(mp, new EqualsFilter("paz"));
125 choiceRouter.updateRoute(mp, new EqualsFilter("zap"));
126 assertEquals("zap:bar", choiceRouter.process(getTestEvent("zap")).getMessageAsString());
127 }
128
129 @Test
130 public void testRemovingUpdatingMissingRoutes()
131 {
132 choiceRouter.updateRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
133 choiceRouter.removeRoute(new TestMessageProcessor("rab"));
134 }
135
136 }