View Javadoc

1   /*
2    * $Id$
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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 }