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.AbstractMuleTestCase;
18 import org.mule.tck.testmodels.mule.TestMessageProcessor;
19
20 public class ChoiceRouterTestCase extends AbstractMuleTestCase
21 {
22 private ChoiceRouter choiceRouter;
23
24 @Override
25 protected void doSetUp() throws Exception
26 {
27 super.setDisposeManagerPerSuite(true);
28 super.doSetUp();
29 choiceRouter = new ChoiceRouter();
30 }
31
32 public void testNoRoute() throws Exception
33 {
34 try
35 {
36 choiceRouter.process(getTestEvent("foo"));
37 fail("should have got a MuleException");
38 }
39 catch (MuleException me)
40 {
41 assertTrue(me instanceof RoutePathNotFoundException);
42 }
43 }
44
45 public void testOnlyDefaultRoute() throws Exception
46 {
47 choiceRouter.setDefaultRoute(new TestMessageProcessor("default"));
48 assertEquals("foo:default", choiceRouter.process(getTestEvent("foo")).getMessageAsString());
49 }
50
51 public void testNoMatchingNorDefaultRoute() throws Exception
52 {
53 try
54 {
55 choiceRouter.addRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
56 choiceRouter.process(getTestEvent("foo"));
57 fail("should have got a MuleException");
58 }
59 catch (MuleException me)
60 {
61 assertTrue(me instanceof RoutePathNotFoundException);
62 }
63 }
64
65 public void testNoMatchingRouteWithDefaultRoute() throws Exception
66 {
67 choiceRouter.addRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
68 choiceRouter.setDefaultRoute(new TestMessageProcessor("default"));
69 assertEquals("foo:default", choiceRouter.process(getTestEvent("foo")).getMessageAsString());
70 }
71
72 public void testMatchingRouteWithDefaultRoute() throws Exception
73 {
74 choiceRouter.addRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
75 choiceRouter.setDefaultRoute(new TestMessageProcessor("default"));
76 assertEquals("zap:bar", choiceRouter.process(getTestEvent("zap")).getMessageAsString());
77 }
78
79 public void testMatchingRouteWithStatistics() throws Exception
80 {
81 choiceRouter.addRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
82 choiceRouter.setRouterStatistics(new RouterStatistics(RouterStatistics.TYPE_OUTBOUND));
83 assertEquals("zap:bar", choiceRouter.process(getTestEvent("zap")).getMessageAsString());
84 }
85
86 public void testAddAndDeleteRoute() throws Exception
87 {
88 try
89 {
90 TestMessageProcessor mp = new TestMessageProcessor("bar");
91 choiceRouter.addRoute(mp, new EqualsFilter("zap"));
92 choiceRouter.removeRoute(mp);
93 choiceRouter.setRouterStatistics(new RouterStatistics(RouterStatistics.TYPE_OUTBOUND));
94 choiceRouter.process(getTestEvent("zap"));
95 fail("should have got a MuleException");
96 }
97 catch (MuleException me)
98 {
99 assertTrue(me instanceof RoutePathNotFoundException);
100 }
101 }
102
103 public void testUpdateRoute() throws Exception
104 {
105 TestMessageProcessor mp = new TestMessageProcessor("bar");
106 choiceRouter.addRoute(mp, new EqualsFilter("paz"));
107 choiceRouter.updateRoute(mp, new EqualsFilter("zap"));
108 assertEquals("zap:bar", choiceRouter.process(getTestEvent("zap")).getMessageAsString());
109 }
110
111 public void testRemovingUpdatingMissingRoutes()
112 {
113 choiceRouter.updateRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
114 choiceRouter.removeRoute(new TestMessageProcessor("rab"));
115 }
116
117 }