View Javadoc

1   /*
2    * $Id: RetryNamespaceHandlerTestCase.java 22161 2011-06-09 17:26:53Z tcarlson $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.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.config.spring.handlers;
12  
13  import org.mule.api.retry.RetryNotifier;
14  import org.mule.api.retry.RetryPolicyTemplate;
15  import org.mule.api.transport.Connector;
16  import org.mule.retry.async.AsynchronousRetryTemplate;
17  import org.mule.retry.notifiers.ConnectNotifier;
18  import org.mule.retry.policies.NoRetryPolicyTemplate;
19  import org.mule.retry.policies.RetryForeverPolicyTemplate;
20  import org.mule.retry.policies.SimpleRetryPolicyTemplate;
21  import org.mule.tck.FunctionalTestCase;
22  
23  public class RetryNamespaceHandlerTestCase extends FunctionalTestCase
24  {
25      protected String getConfigResources()
26      {
27          return "org/mule/config/spring/handlers/retry-namespace-config.xml";
28      }
29  
30      public void testDefaultConfig() throws Exception
31      {
32          Connector c = muleContext.getRegistry().lookupConnector("testConnector1");
33          assertNotNull(c);
34  
35          RetryPolicyTemplate rpf = c.getRetryPolicyTemplate();
36          assertNotNull(rpf);
37          assertTrue(rpf instanceof NoRetryPolicyTemplate);
38          RetryNotifier rn = rpf.getNotifier();
39          assertNotNull(rn);
40          assertTrue(rn instanceof ConnectNotifier);
41          
42          assertTrue(c.isConnected());
43          assertTrue(c.isStarted());
44      }
45  
46      public void testSimpleDefaults() throws Exception
47      {
48          Connector c = muleContext.getRegistry().lookupConnector("testConnector2");
49          assertNotNull(c);
50  
51          RetryPolicyTemplate rpf = c.getRetryPolicyTemplate();
52          assertNotNull(rpf);
53          assertTrue(rpf instanceof SimpleRetryPolicyTemplate);
54          assertEquals(SimpleRetryPolicyTemplate.DEFAULT_RETRY_COUNT, ((SimpleRetryPolicyTemplate) rpf).getCount());
55          assertEquals(SimpleRetryPolicyTemplate.DEFAULT_FREQUENCY, ((SimpleRetryPolicyTemplate) rpf).getFrequency());
56          
57          assertTrue(c.isConnected());
58          assertTrue(c.isStarted());
59      }
60  
61      public void testSimpleConfig() throws Exception
62      {
63          Connector c = muleContext.getRegistry().lookupConnector("testConnector3");
64          assertNotNull(c);
65  
66          RetryPolicyTemplate rpf = c.getRetryPolicyTemplate();
67          assertNotNull(rpf);
68          assertTrue(rpf instanceof SimpleRetryPolicyTemplate);
69          assertEquals(5, ((SimpleRetryPolicyTemplate) rpf).getCount());
70          assertEquals(1000, ((SimpleRetryPolicyTemplate) rpf).getFrequency());
71          
72          assertTrue(c.isConnected());
73          assertTrue(c.isStarted());
74      }
75  
76      public void testForeverConfig() throws Exception
77      {
78          Connector c = muleContext.getRegistry().lookupConnector("testConnector4");
79          assertNotNull(c);
80  
81          RetryPolicyTemplate rpf = c.getRetryPolicyTemplate();
82          assertNotNull(rpf);
83          assertTrue(rpf instanceof RetryForeverPolicyTemplate);
84          assertEquals(5000, ((RetryForeverPolicyTemplate) rpf).getFrequency());
85          
86          assertTrue(c.isConnected());
87          assertTrue(c.isStarted());
88      }
89  
90      public void testCustomConfig() throws Exception
91      {
92          Connector c = muleContext.getRegistry().lookupConnector("testConnector5");
93          assertNotNull(c);
94  
95          RetryPolicyTemplate rpf = c.getRetryPolicyTemplate();
96          assertNotNull(rpf);
97          assertTrue(rpf instanceof TestRetryPolicyTemplate);
98          assertTrue(((TestRetryPolicyTemplate) rpf).isFooBar());
99          assertEquals(500, ((TestRetryPolicyTemplate) rpf).getRevolutions());
100         
101         assertTrue(c.isConnected());
102         assertTrue(c.isStarted());
103     }
104 
105     public void testConnectNotifierConfig() throws Exception
106     {
107         Connector c = muleContext.getRegistry().lookupConnector("testConnector6");
108         assertNotNull(c);
109 
110         RetryPolicyTemplate rpf = c.getRetryPolicyTemplate();
111         assertNotNull(rpf);
112         RetryNotifier rn = rpf.getNotifier();
113         assertNotNull(rn);
114         assertTrue(rn instanceof ConnectNotifier);
115         
116         assertTrue(c.isConnected());
117         assertTrue(c.isStarted());
118     }
119 
120     public void testCustomNotifierConfig() throws Exception
121     {
122         Connector c = muleContext.getRegistry().lookupConnector("testConnector7");
123         assertNotNull(c);
124 
125         RetryPolicyTemplate rpf = c.getRetryPolicyTemplate();
126         assertNotNull(rpf);
127         RetryNotifier rn = rpf.getNotifier();
128         assertNotNull(rn);
129         assertTrue(rn instanceof TestRetryNotifier);
130         assertEquals("red", ((TestRetryNotifier) rn).getColor());
131         
132         assertTrue(c.isConnected());
133         assertTrue(c.isStarted());
134     }
135 
136     public void testAsynchronousRetryConfig() throws Exception
137     {
138         Connector c = muleContext.getRegistry().lookupConnector("testConnector8");
139         assertNotNull(c);
140 
141         RetryPolicyTemplate rpf = c.getRetryPolicyTemplate();
142         assertNotNull(rpf);
143         assertTrue(rpf instanceof AsynchronousRetryTemplate);
144         
145         rpf = ((AsynchronousRetryTemplate) rpf).getDelegate();
146         assertTrue(rpf instanceof SimpleRetryPolicyTemplate);
147         assertEquals(5, ((SimpleRetryPolicyTemplate) rpf).getCount());
148         assertEquals(1000, ((SimpleRetryPolicyTemplate) rpf).getFrequency());
149         
150         // Give the asynchronous policy some time to connect in another thread
151         Thread.sleep(1000);
152         assertTrue(c.isConnected());
153         assertTrue(c.isStarted());
154     }
155 }