1
2
3
4
5
6
7
8
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
58 public void testManagerConfig() throws Exception
59 {
60 super.testManagerConfig();
61
62 assertNotNull(MuleManager.getInstance().getTransactionManager());
63 }
64
65
66 public void testConnectorConfig() throws Exception
67 {
68 super.testConnectorConfig();
69
70 TestConnector c = (TestConnector)MuleManager.getInstance().lookupConnector("dummyConnector");
71 assertNotNull(c);
72 assertNotNull(c.getExceptionListener());
73 assertTrue(c.getExceptionListener() instanceof TestExceptionStrategy);
74 assertNotNull(c.getConnectionStrategy());
75 assertTrue(c.getConnectionStrategy() instanceof SimpleRetryConnectionStrategy);
76 assertEquals(4, ((SimpleRetryConnectionStrategy)c.getConnectionStrategy()).getRetryCount());
77 assertEquals(3000, ((SimpleRetryConnectionStrategy)c.getConnectionStrategy()).getFrequency());
78 }
79
80
81 public void testGlobalEndpointConfig()
82 {
83 super.testGlobalEndpointConfig();
84
85 UMOEndpoint endpoint = MuleManager.getInstance().lookupEndpoint("fruitBowlEndpoint");
86 assertNotNull(endpoint);
87 assertEquals(endpoint.getEndpointURI().getAddress(), "fruitBowlPublishQ");
88 assertNotNull(endpoint.getFilter());
89 JXPathFilter filter = (JXPathFilter)endpoint.getFilter();
90 assertEquals("name", filter.getExpression());
91 assertEquals("bar", filter.getExpectedValue());
92 assertEquals("http://foo.com", filter.getNamespaces().get("foo"));
93 }
94
95
96 public void testEndpointConfig()
97 {
98 super.testEndpointConfig();
99
100 String endpointString = MuleManager.getInstance().lookupEndpointIdentifier("Test Queue", null);
101 assertEquals(endpointString, "test://test.queue");
102
103 UMOEndpoint endpoint = MuleManager.getInstance().lookupEndpoint("waterMelonEndpoint");
104 assertNotNull(endpoint);
105 assertEquals("test.queue", endpoint.getEndpointURI().getAddress());
106
107 UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent2");
108 assertNotNull(descriptor);
109 }
110
111
112 public void testInterceptorStacks()
113 {
114 super.testInterceptorStacks();
115
116 UMOInterceptorStack stack = MuleManager.getInstance().lookupInterceptorStack("default");
117 assertNotNull(stack);
118 assertEquals(2, stack.getInterceptors().size());
119 assertTrue(stack.getInterceptors().get(0) instanceof LoggingInterceptor);
120 assertTrue(stack.getInterceptors().get(1) instanceof TimerInterceptor);
121 }
122
123 public void testExceptionStrategy2()
124 {
125 UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent");
126 assertNotNull(descriptor.getExceptionListener());
127 assertEquals(DefaultExceptionStrategy.class, descriptor.getExceptionListener().getClass());
128 }
129
130
131 public void testTransformerConfig()
132 {
133 super.testTransformerConfig();
134
135 UMOTransformer t = MuleManager.getInstance().lookupTransformer("TestCompressionTransformer");
136 assertNotNull(t);
137 assertTrue(t instanceof TestCompressionTransformer);
138 assertEquals(t.getReturnClass(), java.lang.String.class);
139 assertNotNull(((TestCompressionTransformer)t).getContainerProperty());
140 }
141
142
143 public void testModelConfig() throws Exception
144 {
145 super.testModelConfig();
146
147 UMOModel model = MuleManager.getInstance().lookupModel("main");
148 assertTrue(model.isComponentRegistered("appleComponent"));
149 assertTrue(model.isComponentRegistered("appleComponent2"));
150 }
151
152 public void testOutboundRouterConfig2()
153 {
154
155 UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent");
156 assertNotNull(descriptor.getOutboundRouter());
157 UMOOutboundRouterCollection router = descriptor.getOutboundRouter();
158 assertNotNull(router.getCatchAllStrategy());
159 assertEquals(2, router.getRouters().size());
160
161 UMOOutboundRouter route1 = (UMOOutboundRouter)router.getRouters().get(0);
162 assertTrue(route1 instanceof FilteringOutboundRouter);
163
164
165
166 UMOFilter filter = ((FilteringOutboundRouter)route1).getFilter();
167 assertNotNull(filter);
168 assertTrue(filter instanceof PayloadTypeFilter);
169 assertEquals(String.class, ((PayloadTypeFilter)filter).getExpectedType());
170
171
172 UMOOutboundRouter route2 = (UMOOutboundRouter)router.getRouters().get(1);
173 assertTrue(route2 instanceof FilteringOutboundRouter);
174
175 UMOFilter filter2 = ((FilteringOutboundRouter)route2).getFilter();
176 assertNotNull(filter2);
177 assertTrue(filter2 instanceof AndFilter);
178 UMOFilter left = ((AndFilter)filter2).getLeftFilter();
179 UMOFilter right = ((AndFilter)filter2).getRightFilter();
180 assertNotNull(left);
181 assertTrue(left instanceof RegExFilter);
182 assertEquals("the quick brown (.*)", ((RegExFilter)left).getPattern());
183 assertNotNull(right);
184 assertTrue(right instanceof RegExFilter);
185 assertEquals("(.*) brown (.*)", ((RegExFilter)right).getPattern());
186
187 assertTrue(router.getCatchAllStrategy() instanceof TestCatchAllStrategy);
188 }
189
190
191 public void testInboundRouterConfig2()
192 {
193 UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent");
194 assertNotNull(descriptor.getInboundRouter());
195 UMOInboundRouterCollection messageRouter = descriptor.getInboundRouter();
196 assertNotNull(messageRouter.getCatchAllStrategy());
197 assertEquals(2, messageRouter.getRouters().size());
198 UMOInboundRouter router = (UMOInboundRouter)messageRouter.getRouters().get(0);
199 assertTrue(router instanceof SelectiveConsumer);
200 SelectiveConsumer sc = (SelectiveConsumer)router;
201
202 assertNotNull(sc.getFilter());
203 UMOFilter filter = sc.getFilter();
204
205 assertTrue(filter instanceof PayloadTypeFilter);
206 assertEquals(String.class, ((PayloadTypeFilter)filter).getExpectedType());
207
208 UMOInboundRouter router2 = (UMOInboundRouter)messageRouter.getRouters().get(1);
209 assertTrue(router2 instanceof IdempotentReceiver);
210 }
211
212 public void testThreadingConfig() throws MuleException
213 {
214
215
216
217
218 int defaultMaxBufferSize = 42;
219 int defaultMaxThreadsActive = 17;
220 int defaultMaxThreadsIdle = 3;
221 int defaultThreadPoolExhaustedAction = ThreadingProfile.WHEN_EXHAUSTED_WAIT;
222 int defaultThreadTTL = 60001;
223
224
225 int connectorMaxBufferSize = 2;
226 int connectorThreadPoolExhaustedAction = ThreadingProfile.WHEN_EXHAUSTED_DISCARD_OLDEST;
227
228
229 int componentMaxBufferSize = 6;
230 int componentMaxThreadsActive = 12;
231 int componentMaxThreadsIdle = 6;
232 int componentThreadPoolExhaustedAction = ThreadingProfile.WHEN_EXHAUSTED_DISCARD;
233
234
235 ThreadingProfile tp = MuleManager.getConfiguration().getDefaultThreadingProfile();
236 assertEquals(defaultMaxBufferSize, tp.getMaxBufferSize());
237 assertEquals(defaultMaxThreadsActive, tp.getMaxThreadsActive());
238 assertEquals(defaultMaxThreadsIdle, tp.getMaxThreadsIdle());
239 assertEquals(defaultThreadPoolExhaustedAction, tp.getPoolExhaustedAction());
240 assertEquals(defaultThreadTTL, tp.getThreadTTL());
241
242
243 tp = MuleManager.getConfiguration().getComponentThreadingProfile();
244 assertEquals(defaultMaxBufferSize, tp.getMaxBufferSize());
245 assertEquals(defaultMaxThreadsActive, tp.getMaxThreadsActive());
246 assertEquals(defaultMaxThreadsIdle, tp.getMaxThreadsIdle());
247 assertEquals(defaultThreadPoolExhaustedAction, tp.getPoolExhaustedAction());
248 assertEquals(defaultThreadTTL, tp.getThreadTTL());
249
250
251 AbstractConnector c = (AbstractConnector)MuleManager.getInstance().lookupConnector("dummyConnector");
252 tp = c.getDispatcherThreadingProfile();
253
254 assertEquals(connectorMaxBufferSize, tp.getMaxBufferSize());
255 assertEquals(connectorThreadPoolExhaustedAction, tp.getPoolExhaustedAction());
256
257 assertEquals(defaultMaxThreadsActive, tp.getMaxThreadsActive());
258 assertEquals(defaultMaxThreadsIdle, tp.getMaxThreadsIdle());
259 assertEquals(defaultThreadTTL, tp.getThreadTTL());
260
261
262 MuleDescriptor descriptor = (MuleDescriptor)MuleManager.getInstance().lookupModel("main").getDescriptor(
263 "appleComponent2");
264 tp = descriptor.getThreadingProfile();
265
266 assertEquals(componentMaxBufferSize, tp.getMaxBufferSize());
267 assertEquals(componentMaxThreadsActive, tp.getMaxThreadsActive());
268 assertEquals(componentMaxThreadsIdle, tp.getMaxThreadsIdle());
269 assertEquals(componentThreadPoolExhaustedAction, tp.getPoolExhaustedAction());
270
271 assertEquals(defaultThreadTTL, tp.getThreadTTL());
272 }
273
274 public void testPoolingConfig()
275 {
276
277 PoolingProfile pp = MuleManager.getConfiguration().getPoolingProfile();
278 assertEquals(10, pp.getMaxActive());
279 assertEquals(5, pp.getMaxIdle());
280 assertEquals(10001, pp.getMaxWait());
281 assertEquals(ObjectPool.WHEN_EXHAUSTED_WAIT, pp.getExhaustedAction());
282 assertEquals(PoolingProfile.INITIALISE_ONE, pp.getInitialisationPolicy());
283 assertTrue(pp.getPoolFactory() instanceof CommonsPoolFactory);
284
285
286 MuleDescriptor descriptor = (MuleDescriptor)MuleManager.getInstance().lookupModel("main").getDescriptor(
287 "appleComponent2");
288 pp = descriptor.getPoolingProfile();
289
290 assertEquals(9, pp.getMaxActive());
291 assertEquals(6, pp.getMaxIdle());
292 assertEquals(4002, pp.getMaxWait());
293 assertEquals(ObjectPool.WHEN_EXHAUSTED_FAIL, pp.getExhaustedAction());
294 assertEquals(PoolingProfile.INITIALISE_ALL, pp.getInitialisationPolicy());
295 }
296
297 public void testQueueProfileConfig()
298 {
299
300 QueueProfile qp = MuleManager.getConfiguration().getQueueProfile();
301 assertEquals(100, qp.getMaxOutstandingMessages());
302 assertTrue(qp.isPersistent());
303
304
305 MuleDescriptor descriptor = (MuleDescriptor)MuleManager.getInstance().lookupModel("main").getDescriptor(
306 "orangeComponent");
307 qp = descriptor.getQueueProfile();
308 assertEquals(100, qp.getMaxOutstandingMessages());
309 assertTrue(qp.isPersistent());
310
311
312 descriptor = (MuleDescriptor)MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent2");
313 qp = descriptor.getQueueProfile();
314 assertEquals(102, qp.getMaxOutstandingMessages());
315 assertFalse(qp.isPersistent());
316 }
317
318 public void testEndpointProperties() throws Exception
319 {
320
321 UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent2");
322 MuleEndpoint inEndpoint = (MuleEndpoint)descriptor.getInboundRouter().getEndpoint(
323 "transactedInboundEndpoint");
324 assertNotNull(inEndpoint);
325 assertEquals(TransportFactory.NEVER_CREATE_CONNECTOR, inEndpoint.getCreateConnector());
326 assertNotNull(inEndpoint.getProperties());
327 assertEquals("Prop1", inEndpoint.getProperties().get("testEndpointProperty"));
328 }
329
330 public void testTransactionConfig() throws Exception
331 {
332
333 UMODescriptor descriptor = MuleManager.getInstance().lookupModel("main").getDescriptor("appleComponent2");
334 UMOEndpoint inEndpoint = descriptor.getInboundRouter().getEndpoint("transactedInboundEndpoint");
335 assertNotNull(inEndpoint);
336 assertNull(descriptor.getOutboundEndpoint());
337 assertEquals(1, descriptor.getOutboundRouter().getRouters().size());
338
339 UMOEndpoint outEndpoint = (UMOEndpoint)((UMOOutboundRouter)descriptor.getOutboundRouter()
340 .getRouters()
341 .get(0)).getEndpoints().get(0);
342
343 assertNotNull(outEndpoint);
344 assertNotNull(inEndpoint.getTransactionConfig());
345 assertEquals(UMOTransactionConfig.ACTION_ALWAYS_BEGIN, inEndpoint.getTransactionConfig().getAction());
346 assertTrue(inEndpoint.getTransactionConfig().getFactory() instanceof TestTransactionFactory);
347 assertNull(inEndpoint.getTransactionConfig().getConstraint());
348 }
349
350 public void testEnvironmentProperties()
351 {
352 Map props = MuleManager.getInstance().getProperties();
353 assertNotNull(props);
354 assertNotNull(props.get("doCompression"));
355 assertEquals("true", props.get("doCompression"));
356 assertNotNull(props.get("beanProperty1"));
357 assertEquals("this was set from the manager properties!", props.get("beanProperty1"));
358 assertNotNull(props.get("OS Version"));
359 }
360 }