View Javadoc

1   /*
2    * $Id: AbstractConfigBuilderTestCase.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.MuleException;
14  import org.mule.MuleManager;
15  import org.mule.config.PoolingProfile;
16  import org.mule.config.QueueProfile;
17  import org.mule.config.ThreadingProfile;
18  import org.mule.config.pool.CommonsPoolFactory;
19  import org.mule.impl.DefaultExceptionStrategy;
20  import org.mule.impl.MuleDescriptor;
21  import org.mule.impl.endpoint.MuleEndpoint;
22  import org.mule.interceptors.LoggingInterceptor;
23  import org.mule.interceptors.TimerInterceptor;
24  import org.mule.providers.AbstractConnector;
25  import org.mule.providers.SimpleRetryConnectionStrategy;
26  import org.mule.providers.service.TransportFactory;
27  import org.mule.routing.filters.PayloadTypeFilter;
28  import org.mule.routing.filters.RegExFilter;
29  import org.mule.routing.filters.logic.AndFilter;
30  import org.mule.routing.filters.xml.JXPathFilter;
31  import org.mule.routing.inbound.IdempotentReceiver;
32  import org.mule.routing.inbound.SelectiveConsumer;
33  import org.mule.routing.outbound.FilteringOutboundRouter;
34  import org.mule.tck.testmodels.mule.TestCatchAllStrategy;
35  import org.mule.tck.testmodels.mule.TestCompressionTransformer;
36  import org.mule.tck.testmodels.mule.TestConnector;
37  import org.mule.tck.testmodels.mule.TestExceptionStrategy;
38  import org.mule.tck.testmodels.mule.TestTransactionFactory;
39  import org.mule.umo.UMODescriptor;
40  import org.mule.umo.UMOFilter;
41  import org.mule.umo.UMOInterceptorStack;
42  import org.mule.umo.UMOTransactionConfig;
43  import org.mule.umo.endpoint.UMOEndpoint;
44  import org.mule.umo.model.UMOModel;
45  import org.mule.umo.routing.UMOInboundRouter;
46  import org.mule.umo.routing.UMOInboundRouterCollection;
47  import org.mule.umo.routing.UMOOutboundRouter;
48  import org.mule.umo.routing.UMOOutboundRouterCollection;
49  import org.mule.umo.transformer.UMOTransformer;
50  import org.mule.util.ObjectPool;
51  
52  import java.util.Map;
53  
54  public abstract class AbstractConfigBuilderTestCase extends AbstractScriptConfigBuilderTestCase
55  {
56  
57      // @Override
58      public void testManagerConfig() throws Exception
59      {
60          assertNotNull(MuleManager.getInstance().getTransactionManager());
61      }
62  
63      // @Override
64      public void testConnectorConfig() throws Exception
65      {
66          TestConnector c = (TestConnector)MuleManager.getInstance().lookupConnector("dummyConnector");
67          assertNotNull(c);
68          assertNotNull(c.getExceptionListener());
69          assertTrue(c.getExceptionListener() instanceof TestExceptionStrategy);
70          assertNotNull(c.getConnectionStrategy());
71          assertTrue(c.getConnectionStrategy() instanceof SimpleRetryConnectionStrategy);
72          assertEquals(4, ((SimpleRetryConnectionStrategy)c.getConnectionStrategy()).getRetryCount());
73          assertEquals(3000, ((SimpleRetryConnectionStrategy)c.getConnectionStrategy()).getFrequency());
74      }
75  
76      // @Override
77      public void testGlobalEndpointConfig()
78      {
79          UMOEndpoint endpoint = MuleManager.getInstance().lookupEndpoint("fruitBowlEndpoint");
80          assertNotNull(endpoint);
81          assertEquals(endpoint.getEndpointURI().getAddress(), "fruitBowlPublishQ");
82          assertNotNull(endpoint.getFilter());
83          JXPathFilter filter = (JXPathFilter)endpoint.getFilter();
84          assertEquals("name", filter.getExpression());
85          assertEquals("bar", filter.getExpectedValue());
86          assertEquals("http://foo.com", filter.getNamespaces().get("foo"));
87      }
88  
89      // @Override
90      public void testEndpointConfig()
91      {
92          String endpointString = MuleManager.getInstance().lookupEndpointIdentifier("Test Queue", null);
93          assertEquals(endpointString, "test://test.queue");
94          // test that endpoints have been resolved on endpoints
95          UMOEndpoint endpoint = MuleManager.getInstance().lookupEndpoint("waterMelonEndpoint");
96          assertNotNull(endpoint);
97          assertEquals("test.queue", endpoint.getEndpointURI().getAddress());
98  
99          UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent2");
100         assertNotNull(descriptor);
101     }
102 
103     // @Override
104     public void testInterceptorStacks()
105     {
106         UMOInterceptorStack stack = MuleManager.getInstance().lookupInterceptorStack("default");
107         assertNotNull(stack);
108         assertEquals(2, stack.getInterceptors().size());
109         assertTrue(stack.getInterceptors().get(0) instanceof LoggingInterceptor);
110         assertTrue(stack.getInterceptors().get(1) instanceof TimerInterceptor);
111     }
112 
113     public void testExceptionStrategy2()
114     {
115         UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent");
116         assertNotNull(descriptor.getExceptionListener());
117         assertEquals(DefaultExceptionStrategy.class, descriptor.getExceptionListener().getClass());
118     }
119 
120     // @Override
121     public void testTransformerConfig()
122     {
123         UMOTransformer t = MuleManager.getInstance().lookupTransformer("TestCompressionTransformer");
124         assertNotNull(t);
125         assertTrue(t instanceof TestCompressionTransformer);
126         assertEquals(t.getReturnClass(), java.lang.String.class);
127         assertNotNull(((TestCompressionTransformer)t).getContainerProperty());
128     }
129 
130     // @Override
131     public void testModelConfig() throws Exception
132     {
133         UMOModel model = MuleManager.getInstance().lookupModel("main");
134         super.testModelConfig();
135         assertTrue(model.isComponentRegistered("appleComponent"));
136         assertTrue(model.isComponentRegistered("appleComponent2"));
137     }
138 
139     public void testOutboundRouterConfig2()
140     {
141         // test outbound message router
142         UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent");
143         assertNotNull(descriptor.getOutboundRouter());
144         UMOOutboundRouterCollection router = descriptor.getOutboundRouter();
145         assertNotNull(router.getCatchAllStrategy());
146         assertEquals(2, router.getRouters().size());
147         // check first Router
148         UMOOutboundRouter route1 = (UMOOutboundRouter)router.getRouters().get(0);
149         assertTrue(route1 instanceof FilteringOutboundRouter);
150         // todo don't currently support "transformer" property
151         // assertNotNull(((FilteringOutboundRouter) route1).getTransformer());
152 
153         UMOFilter filter = ((FilteringOutboundRouter)route1).getFilter();
154         assertNotNull(filter);
155         assertTrue(filter instanceof PayloadTypeFilter);
156         assertEquals(String.class, ((PayloadTypeFilter)filter).getExpectedType());
157 
158         // check second Router
159         UMOOutboundRouter route2 = (UMOOutboundRouter)router.getRouters().get(1);
160         assertTrue(route2 instanceof FilteringOutboundRouter);
161 
162         UMOFilter filter2 = ((FilteringOutboundRouter)route2).getFilter();
163         assertNotNull(filter2);
164         assertTrue(filter2 instanceof AndFilter);
165         UMOFilter left = ((AndFilter)filter2).getLeftFilter();
166         UMOFilter right = ((AndFilter)filter2).getRightFilter();
167         assertNotNull(left);
168         assertTrue(left instanceof RegExFilter);
169         assertEquals("the quick brown (.*)", ((RegExFilter)left).getPattern());
170         assertNotNull(right);
171         assertTrue(right instanceof RegExFilter);
172         assertEquals("(.*) brown (.*)", ((RegExFilter)right).getPattern());
173 
174         assertTrue(router.getCatchAllStrategy() instanceof TestCatchAllStrategy);
175     }
176 
177 
178     public void testInboundRouterConfig2()
179     {
180         UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent");
181         assertNotNull(descriptor.getInboundRouter());
182         UMOInboundRouterCollection messageRouter = descriptor.getInboundRouter();
183         assertNotNull(messageRouter.getCatchAllStrategy());
184         assertEquals(2, messageRouter.getRouters().size());
185         UMOInboundRouter router = (UMOInboundRouter)messageRouter.getRouters().get(0);
186         assertTrue(router instanceof SelectiveConsumer);
187         SelectiveConsumer sc = (SelectiveConsumer)router;
188 
189         assertNotNull(sc.getFilter());
190         UMOFilter filter = sc.getFilter();
191         // check first Router
192         assertTrue(filter instanceof PayloadTypeFilter);
193         assertEquals(String.class, ((PayloadTypeFilter)filter).getExpectedType());
194 
195         UMOInboundRouter router2 = (UMOInboundRouter)messageRouter.getRouters().get(1);
196         assertTrue(router2 instanceof IdempotentReceiver);
197     }
198 
199     public void testThreadingConfig() throws MuleException
200     {
201         // test config
202         ThreadingProfile tp = MuleManager.getConfiguration().getDefaultThreadingProfile();
203         assertEquals(ThreadingProfile.DEFAULT_MAX_BUFFER_SIZE, tp.getMaxBufferSize());
204         assertEquals(ThreadingProfile.DEFAULT_MAX_THREADS_ACTIVE, tp.getMaxThreadsActive());
205         assertEquals(4, tp.getMaxThreadsIdle());
206         assertEquals(ThreadingProfile.WHEN_EXHAUSTED_WAIT, tp.getPoolExhaustedAction());
207         assertEquals(60001, tp.getThreadTTL());
208 
209         // test defaults
210         tp = MuleManager.getConfiguration().getComponentThreadingProfile();
211         assertEquals(ThreadingProfile.DEFAULT_MAX_BUFFER_SIZE, tp.getMaxBufferSize());
212         assertEquals(ThreadingProfile.DEFAULT_MAX_THREADS_ACTIVE, tp.getMaxThreadsActive());
213         assertEquals(4, tp.getMaxThreadsIdle());
214         assertEquals(ThreadingProfile.WHEN_EXHAUSTED_WAIT, tp.getPoolExhaustedAction());
215         assertEquals(60001, tp.getThreadTTL());
216 
217         // test that values not set retain a default value
218         AbstractConnector c = (AbstractConnector)MuleManager.getInstance().lookupConnector("dummyConnector");
219         tp = c.getDispatcherThreadingProfile();
220         assertEquals(2, tp.getMaxBufferSize());
221         assertEquals(ThreadingProfile.DEFAULT_MAX_THREADS_ACTIVE, tp.getMaxThreadsActive());
222         assertEquals(ThreadingProfile.DEFAULT_MAX_THREADS_IDLE, tp.getMaxThreadsIdle());
223         assertEquals(ThreadingProfile.DEFAULT_POOL_EXHAUST_ACTION, tp.getPoolExhaustedAction());
224         assertEquals(ThreadingProfile.DEFAULT_MAX_THREAD_TTL, tp.getThreadTTL());
225 
226         MuleDescriptor descriptor = (MuleDescriptor)MuleManager.getInstance().lookupModel("main").getDescriptor(
227             "appleComponent2");
228         tp = descriptor.getThreadingProfile();
229         assertEquals(6, tp.getMaxBufferSize());
230         assertEquals(12, tp.getMaxThreadsActive());
231         assertEquals(6, tp.getMaxThreadsIdle());
232         assertEquals(ThreadingProfile.DEFAULT_POOL_EXHAUST_ACTION, tp.getPoolExhaustedAction());
233         assertEquals(ThreadingProfile.DEFAULT_MAX_THREAD_TTL, tp.getThreadTTL());
234     }
235 
236     public void testPoolingConfig()
237     {
238         // test config
239         PoolingProfile pp = MuleManager.getConfiguration().getPoolingProfile();
240         assertEquals(8, pp.getMaxActive());
241         assertEquals(4, pp.getMaxIdle());
242         assertEquals(4000, pp.getMaxWait());
243         assertEquals(ObjectPool.WHEN_EXHAUSTED_GROW, pp.getExhaustedAction());
244         assertEquals(1, pp.getInitialisationPolicy());
245         assertTrue(pp.getPoolFactory() instanceof CommonsPoolFactory);
246 
247         // test override
248         MuleDescriptor descriptor = (MuleDescriptor)MuleManager.getInstance().lookupModel("main").getDescriptor(
249             "appleComponent2");
250         pp = descriptor.getPoolingProfile();
251 
252         assertEquals(5, pp.getMaxActive());
253         assertEquals(5, pp.getMaxIdle());
254         assertEquals(4000, pp.getMaxWait());
255         assertEquals(ObjectPool.WHEN_EXHAUSTED_GROW, pp.getExhaustedAction());
256         assertEquals(2, pp.getInitialisationPolicy());
257     }
258 
259     public void testQueueProfileConfig()
260     {
261         // test config
262         QueueProfile qp = MuleManager.getConfiguration().getQueueProfile();
263         assertEquals(100, qp.getMaxOutstandingMessages());
264         assertTrue(qp.isPersistent());
265 
266         // test inherit
267         MuleDescriptor descriptor = (MuleDescriptor)MuleManager.getInstance().lookupModel("main").getDescriptor(
268             "orangeComponent");
269         qp = descriptor.getQueueProfile();
270         assertEquals(100, qp.getMaxOutstandingMessages());
271         assertTrue(qp.isPersistent());
272 
273         // test override
274         descriptor = (MuleDescriptor)MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent2");
275         qp = descriptor.getQueueProfile();
276         assertEquals(102, qp.getMaxOutstandingMessages());
277         assertFalse(qp.isPersistent());
278     }
279 
280     public void testEndpointProperties() throws Exception
281     {
282         // test transaction config
283         UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent2");
284         MuleEndpoint inEndpoint = (MuleEndpoint)descriptor.getInboundRouter().getEndpoint(
285             "transactedInboundEndpoint");
286         assertNotNull(inEndpoint);
287         assertEquals(TransportFactory.NEVER_CREATE_CONNECTOR, inEndpoint.getCreateConnector());
288         assertNotNull(inEndpoint.getProperties());
289         assertEquals("Prop1", inEndpoint.getProperties().get("testEndpointProperty"));
290     }
291 
292     public void testTransactionConfig() throws Exception
293     {
294         // test transaction config
295         UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent2");
296         UMOEndpoint inEndpoint = descriptor.getInboundRouter().getEndpoint("transactedInboundEndpoint");
297         assertNotNull(inEndpoint);
298         assertNull(descriptor.getOutboundEndpoint());
299         assertEquals(1, descriptor.getOutboundRouter().getRouters().size());
300 
301         UMOEndpoint outEndpoint = (UMOEndpoint)((UMOOutboundRouter)descriptor.getOutboundRouter()
302             .getRouters()
303             .get(0)).getEndpoints().get(0);
304 
305         assertNotNull(outEndpoint);
306         assertNotNull(inEndpoint.getTransactionConfig());
307         assertEquals(UMOTransactionConfig.ACTION_ALWAYS_BEGIN, inEndpoint.getTransactionConfig().getAction());
308         assertTrue(inEndpoint.getTransactionConfig().getFactory() instanceof TestTransactionFactory);
309         assertNull(inEndpoint.getTransactionConfig().getConstraint());
310     }
311 
312     public void testEnvironmentProperties()
313     {
314         Map props = MuleManager.getInstance().getProperties();
315         assertNotNull(props);
316         assertNotNull(props.get("doCompression"));
317         assertEquals("true", props.get("doCompression"));
318         assertNotNull(props.get("beanProperty1"));
319         assertEquals("this was set from the manager properties!", props.get("beanProperty1"));
320         assertNotNull(props.get("OS Version"));
321     }
322 }