View Javadoc

1   /*
2    * $Id: ChoiceRouterTestCase.java 22377 2011-07-11 12:41:42Z dirk.olmes $
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.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 }