View Javadoc

1   /*
2    * $Id: AbstractScriptConfigBuilderTestCase.java 7976 2007-08-21 14:26:13Z dirk.olmes $
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.tck;
12  
13  import org.mule.MuleManager;
14  import org.mule.impl.AbstractExceptionListener;
15  import org.mule.impl.MuleDescriptor;
16  import org.mule.impl.container.DescriptorContainerKeyPair;
17  import org.mule.interceptors.LoggingInterceptor;
18  import org.mule.interceptors.TimerInterceptor;
19  import org.mule.providers.SimpleRetryConnectionStrategy;
20  import org.mule.routing.ForwardingCatchAllStrategy;
21  import org.mule.routing.filters.xml.JXPathFilter;
22  import org.mule.routing.outbound.OutboundPassThroughRouter;
23  import org.mule.tck.testmodels.fruit.FruitCleaner;
24  import org.mule.tck.testmodels.fruit.Orange;
25  import org.mule.tck.testmodels.mule.TestCompressionTransformer;
26  import org.mule.tck.testmodels.mule.TestConnector;
27  import org.mule.tck.testmodels.mule.TestDefaultLifecycleAdapterFactory;
28  import org.mule.tck.testmodels.mule.TestEntryPointResolver;
29  import org.mule.tck.testmodels.mule.TestExceptionStrategy;
30  import org.mule.tck.testmodels.mule.TestResponseAggregator;
31  import org.mule.umo.UMODescriptor;
32  import org.mule.umo.UMOException;
33  import org.mule.umo.UMOInterceptorStack;
34  import org.mule.umo.endpoint.UMOEndpoint;
35  import org.mule.umo.manager.UMOAgent;
36  import org.mule.umo.model.UMOModel;
37  import org.mule.umo.routing.UMOInboundRouterCollection;
38  import org.mule.umo.routing.UMONestedRouter;
39  import org.mule.umo.routing.UMONestedRouterCollection;
40  import org.mule.umo.routing.UMOOutboundRouter;
41  import org.mule.umo.routing.UMOOutboundRouterCollection;
42  import org.mule.umo.routing.UMOResponseRouter;
43  import org.mule.umo.routing.UMOResponseRouterCollection;
44  import org.mule.umo.transformer.UMOTransformer;
45  
46  import java.util.List;
47  import java.util.Map;
48  
49  public abstract class AbstractScriptConfigBuilderTestCase extends FunctionalTestCase
50  {
51  
52      protected AbstractScriptConfigBuilderTestCase()
53      {
54          setDisposeManagerPerSuite(true);
55      }
56  
57      public void testManagerConfig() throws Exception
58      {
59          assertEquals("true", MuleManager.getInstance().getProperty("doCompression"));
60          assertNotNull(MuleManager.getInstance().getTransactionManager());
61      }
62  
63      public void testConnectorConfig() throws Exception
64      {
65          TestConnector c = (TestConnector)MuleManager.getInstance().lookupConnector("dummyConnector");
66          assertNotNull(c);
67          assertNotNull(c.getExceptionListener());
68          assertTrue(c.getExceptionListener() instanceof TestExceptionStrategy);
69          assertNotNull(c.getConnectionStrategy());
70          assertTrue(c.getConnectionStrategy() instanceof SimpleRetryConnectionStrategy);
71          assertEquals(4, ((SimpleRetryConnectionStrategy)c.getConnectionStrategy()).getRetryCount());
72          assertEquals(3000, ((SimpleRetryConnectionStrategy)c.getConnectionStrategy()).getFrequency());
73      }
74  
75      public void testGlobalEndpointConfig()
76      {
77          UMOEndpoint endpoint = MuleManager.getInstance().lookupEndpoint("fruitBowlEndpoint");
78          assertNotNull(endpoint);
79          assertEquals(endpoint.getEndpointURI().getAddress(), "fruitBowlPublishQ");
80          assertNotNull(endpoint.getFilter());
81          JXPathFilter filter = (JXPathFilter)endpoint.getFilter();
82          assertEquals("name", filter.getExpression());
83          assertEquals("bar", filter.getExpectedValue());
84          assertEquals("http://foo.com", filter.getNamespaces().get("foo"));
85      }
86  
87      public void testEndpointConfig()
88      {
89          String endpointString = MuleManager.getInstance().lookupEndpointIdentifier("Test Queue", null);
90          assertEquals(endpointString, "test://test.queue");
91          // test that endpoints have been resolved on endpoints
92          UMOEndpoint endpoint = MuleManager.getInstance().lookupEndpoint("waterMelonEndpoint");
93          assertNotNull(endpoint);
94          assertEquals("test.queue", endpoint.getEndpointURI().getAddress());
95  
96          UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("orangeComponent");
97          UMOEndpoint ep = descriptor.getInboundRouter().getEndpoint("Orange");
98          assertNotNull(ep);
99          assertNotNull(ep.getResponseTransformer());
100         assertTrue(ep.getResponseTransformer() instanceof TestCompressionTransformer);
101     }
102 
103     public void testInterceptorStacks()
104     {
105         UMOInterceptorStack stack = MuleManager.getInstance().lookupInterceptorStack("default");
106         assertNotNull(stack);
107         assertEquals(2, stack.getInterceptors().size());
108         assertTrue(stack.getInterceptors().get(0) instanceof LoggingInterceptor);
109         assertTrue(stack.getInterceptors().get(1) instanceof TimerInterceptor);
110     }
111 
112     public void testExceptionStrategy()
113     {
114         UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("orangeComponent");
115         assertNotNull(MuleManager.getInstance().lookupModel("main").getExceptionListener());
116         assertNotNull(descriptor.getExceptionListener());
117 
118         assertTrue(((AbstractExceptionListener)descriptor.getExceptionListener()).getEndpoints().size() > 0);
119         UMOEndpoint ep = (UMOEndpoint)((AbstractExceptionListener)descriptor.getExceptionListener()).getEndpoints()
120             .get(0);
121 
122         assertEquals("test://orange.exceptions", ep.getEndpointURI().toString());
123     }
124 
125     public void testTransformerConfig()
126     {
127         UMOTransformer t = MuleManager.getInstance().lookupTransformer("TestCompressionTransformer");
128         assertNotNull(t);
129         assertTrue(t instanceof TestCompressionTransformer);
130         assertEquals(t.getReturnClass(), String.class);
131         assertNotNull(((TestCompressionTransformer)t).getContainerProperty());
132     }
133 
134     public void testModelConfig() throws Exception
135     {
136         UMOModel model = MuleManager.getInstance().lookupModel("main");
137         assertNotNull(model);
138         assertEquals("main", model.getName());
139         assertTrue(model.getEntryPointResolver() instanceof TestEntryPointResolver);
140         assertTrue(model.getExceptionListener() instanceof TestExceptionStrategy);
141 
142         assertTrue(((AbstractExceptionListener)model.getExceptionListener()).getEndpoints().size() > 0);
143         UMOEndpoint ep = (UMOEndpoint)((AbstractExceptionListener)model.getExceptionListener()).getEndpoints()
144             .get(0);
145 
146         assertEquals("test://component.exceptions", ep.getEndpointURI().toString());
147 
148         assertTrue(model.getLifecycleAdapterFactory() instanceof TestDefaultLifecycleAdapterFactory);
149 
150         assertTrue(model.isComponentRegistered("orangeComponent"));
151     }
152 
153     public void testPropertiesConfig() throws Exception
154     {
155         UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("orangeComponent");
156 
157         Map props = descriptor.getProperties();
158         assertNotNull(props);
159         assertEquals("9", props.get("segments"));
160         assertEquals("4.21", props.get("radius"));
161         assertEquals("Juicy Baby!", props.get("brand"));
162 
163         assertNotNull(props.get("listProperties"));
164         List list = (List)props.get("listProperties");
165         assertEquals(3, list.size());
166         assertEquals("prop1", list.get(0));
167         assertEquals("prop2", list.get(1));
168         assertEquals("prop3", list.get(2));
169 
170         assertNotNull(props.get("arrayProperties"));
171         list = (List)props.get("arrayProperties");
172         assertEquals(3, list.size());
173         assertEquals("prop4", list.get(0));
174         assertEquals("prop5", list.get(1));
175         assertEquals("prop6", list.get(2));
176 
177         assertNotNull(props.get("mapProperties"));
178         props = (Map)props.get("mapProperties");
179         assertEquals("prop1", props.get("prop1"));
180         assertEquals("prop2", props.get("prop2"));
181 
182         assertEquals(7, descriptor.getProperties().size());
183         assertEquals(2, descriptor.getInboundRouter().getEndpoints().size());
184         // assertNotNull(descriptor.getInboundEndpoint());
185         // assertNotNull(descriptor.getOutboundEndpoint());
186     }
187 
188     public void testOutboundRouterConfig()
189     {
190         // test outbound message router
191         UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("orangeComponent");
192         assertNotNull(descriptor.getOutboundRouter());
193         UMOOutboundRouterCollection router = descriptor.getOutboundRouter();
194         assertNull(router.getCatchAllStrategy());
195         assertEquals(1, router.getRouters().size());
196         // check first Router
197         UMOOutboundRouter route1 = (UMOOutboundRouter)router.getRouters().get(0);
198         assertTrue(route1 instanceof OutboundPassThroughRouter);
199         assertEquals(1, route1.getEndpoints().size());
200     }
201 
202     public void testNestedRouterConfig()
203     {
204         // test outbound message router
205         UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("orangeComponent");
206         assertNotNull(descriptor.getNestedRouter());
207         UMONestedRouterCollection router = descriptor.getNestedRouter();
208         assertEquals(2, router.getRouters().size());
209         // check first Router
210         UMONestedRouter route1 = (UMONestedRouter)router.getRouters().get(0);
211         assertEquals(FruitCleaner.class, route1.getInterface());
212         assertEquals("wash", route1.getMethod());
213         assertNotNull(route1.getEndpoint());
214         // check second Router
215         UMONestedRouter route2 = (UMONestedRouter)router.getRouters().get(1);
216         assertEquals(FruitCleaner.class, route2.getInterface());
217         assertEquals("polish", route2.getMethod());
218         assertNotNull(route2.getEndpoint());
219 
220         //Test that the proxy object was created and set on the service object
221         Orange orange = (Orange)descriptor.getProperties().get("orange");
222         assertNotNull(orange);
223         assertNotNull(orange.getCleaner());
224     }
225     public void testDescriptorEndpoints()
226     {
227         UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("orangeComponent");
228         assertEquals(1, descriptor.getOutboundRouter().getRouters().size());
229         UMOOutboundRouter router = (UMOOutboundRouter)descriptor.getOutboundRouter().getRouters().get(0);
230         assertEquals(1, router.getEndpoints().size());
231         UMOEndpoint endpoint = (UMOEndpoint)router.getEndpoints().get(0);
232         assertNotNull(endpoint);
233         assertEquals("appleInEndpoint", endpoint.getName());
234         assertNotNull(endpoint.getTransformer());
235         assertTrue(endpoint.getTransformer() instanceof TestCompressionTransformer);
236 
237         // check the global endpoint
238         endpoint = MuleManager.getInstance().lookupEndpoint("appleInEndpoint");
239         assertNotNull(endpoint);
240         assertNull(endpoint.getTransformer());
241 
242         assertEquals(2, descriptor.getInboundRouter().getEndpoints().size());
243         assertNotNull(descriptor.getInboundRouter().getCatchAllStrategy());
244         assertTrue(descriptor.getInboundRouter().getCatchAllStrategy() instanceof ForwardingCatchAllStrategy);
245         assertNotNull(descriptor.getInboundRouter().getCatchAllStrategy().getEndpoint());
246         assertEquals("test://catch.all", descriptor.getInboundRouter()
247             .getCatchAllStrategy()
248             .getEndpoint()
249             .getEndpointURI()
250             .toString());
251         endpoint = descriptor.getInboundRouter().getEndpoint("orangeEndpoint");
252         assertNotNull(endpoint);
253         assertEquals("orangeEndpoint", endpoint.getName());
254         assertEquals("orangeQ", endpoint.getEndpointURI().getAddress());
255         assertNotNull(endpoint.getTransformer());
256         assertTrue(endpoint.getTransformer() instanceof TestCompressionTransformer);
257 
258         // check the global endpoint
259         endpoint = MuleManager.getInstance().lookupEndpoint("orangeEndpoint");
260         assertNotNull(endpoint);
261         assertNull(endpoint.getTransformer());
262     }
263 
264     public void testInboundRouterConfig()
265     {
266         UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("orangeComponent");
267         assertNotNull(descriptor.getInboundRouter());
268         UMOInboundRouterCollection messageRouter = descriptor.getInboundRouter();
269         assertNotNull(messageRouter.getCatchAllStrategy());
270         assertEquals(0, messageRouter.getRouters().size());
271         assertTrue(messageRouter.getCatchAllStrategy() instanceof ForwardingCatchAllStrategy);
272         assertEquals(2, messageRouter.getEndpoints().size());
273     }
274 
275     public void testResponseRouterConfig()
276     {
277         UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("orangeComponent");
278         assertNotNull(descriptor.getResponseRouter());
279         UMOResponseRouterCollection messageRouter = descriptor.getResponseRouter();
280         assertNull(messageRouter.getCatchAllStrategy());
281         assertEquals(10001, messageRouter.getTimeout());
282         assertEquals(1, messageRouter.getRouters().size());
283         UMOResponseRouter router = (UMOResponseRouter)messageRouter.getRouters().get(0);
284         assertTrue(router instanceof TestResponseAggregator);
285         assertNotNull(messageRouter.getEndpoints());
286         assertEquals(2, messageRouter.getEndpoints().size());
287         UMOEndpoint ep = (UMOEndpoint)messageRouter.getEndpoints().get(0);
288         assertEquals("response1", ep.getEndpointURI().getAddress());
289         assertEquals(UMOEndpoint.ENDPOINT_TYPE_RESPONSE, ep.getType());
290         ep = (UMOEndpoint)messageRouter.getEndpoints().get(1);
291         assertEquals("AppleResponseQueue", ep.getEndpointURI().getAddress());
292         assertEquals(UMOEndpoint.ENDPOINT_TYPE_RESPONSE, ep.getType());
293     }
294 
295     public void testObjectReferences() throws UMOException
296     {
297         MuleDescriptor descriptor = (MuleDescriptor)MuleManager.getInstance().lookupModel("main").getDescriptor(
298             "orangeComponent");
299         assertEquals(new DescriptorContainerKeyPair("orangeComponent", "orange"),
300             descriptor.getImplementation());
301         assertEquals("descriptor", descriptor.getContainer());
302         assertNotNull(descriptor.getProperties().get("orange"));
303         assertEquals(Orange.class, descriptor.getImplementationClass());
304     }
305 
306     public void testAgentConfiguration() throws UMOException
307     {
308         UMOAgent agent = MuleManager.getInstance().unregisterAgent("jmxAgent");
309         assertNotNull(agent);
310     }
311 }