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