1
2
3
4
5
6
7
8
9
10
11 package org.mule.tck;
12
13 import org.mule.DefaultExceptionStrategy;
14 import org.mule.api.DefaultMuleException;
15 import org.mule.api.MuleException;
16 import org.mule.api.component.JavaComponent;
17 import org.mule.api.config.ThreadingProfile;
18 import org.mule.api.endpoint.ImmutableEndpoint;
19 import org.mule.api.endpoint.InboundEndpoint;
20 import org.mule.api.endpoint.OutboundEndpoint;
21 import org.mule.api.routing.InboundRouter;
22 import org.mule.api.routing.InboundRouterCollection;
23 import org.mule.api.routing.NestedRouter;
24 import org.mule.api.routing.OutboundRouter;
25 import org.mule.api.routing.OutboundRouterCollection;
26 import org.mule.api.routing.filter.Filter;
27 import org.mule.api.service.Service;
28 import org.mule.api.transaction.TransactionConfig;
29 import org.mule.api.transformer.Transformer;
30 import org.mule.component.PooledJavaComponent;
31 import org.mule.config.PoolingProfile;
32 import org.mule.config.QueueProfile;
33 import org.mule.model.seda.SedaService;
34 import org.mule.routing.filters.MessagePropertyFilter;
35 import org.mule.routing.filters.PayloadTypeFilter;
36 import org.mule.routing.filters.RegExFilter;
37 import org.mule.routing.filters.logic.AndFilter;
38 import org.mule.routing.inbound.IdempotentReceiver;
39 import org.mule.routing.inbound.SelectiveConsumer;
40 import org.mule.routing.outbound.FilteringOutboundRouter;
41 import org.mule.tck.testmodels.mule.TestCatchAllStrategy;
42 import org.mule.tck.testmodels.mule.TestCompressionTransformer;
43 import org.mule.tck.testmodels.mule.TestConnector;
44 import org.mule.tck.testmodels.mule.TestExceptionStrategy;
45 import org.mule.tck.testmodels.mule.TestTransactionFactory;
46 import org.mule.transformer.TransformerUtils;
47 import org.mule.transport.AbstractConnector;
48
49 public abstract class AbstractConfigBuilderTestCase extends AbstractScriptConfigBuilderTestCase
50 {
51
52 public AbstractConfigBuilderTestCase(boolean legacy)
53 {
54 super(legacy);
55 }
56
57
58
59 public void testManagerConfig() throws Exception
60 {
61 super.testManagerConfig();
62
63 assertNotNull(muleContext.getTransactionManager());
64 }
65
66
67 public void testConnectorConfig() throws Exception
68 {
69 super.testConnectorConfig();
70
71 TestConnector c = (TestConnector) muleContext.getRegistry().lookupConnector("dummyConnector");
72 assertNotNull(c);
73 assertNotNull(c.getExceptionListener());
74 assertTrue(c.getExceptionListener() instanceof TestExceptionStrategy);
75 }
76
77
78 public void testGlobalEndpointConfig() throws MuleException
79 {
80 super.testGlobalEndpointConfig();
81 ImmutableEndpoint endpoint = muleContext.getRegistry().lookupEndpointFactory().getInboundEndpoint("fruitBowlEndpoint");
82 assertNotNull(endpoint);
83 assertEquals(endpoint.getEndpointURI().getAddress(), "fruitBowlPublishQ");
84
85 MessagePropertyFilter filter = (MessagePropertyFilter)endpoint.getFilter();
86 assertNotNull(filter);
87 assertEquals("foo=bar", filter.getExpression());
88 }
89
90
91 public void testEndpointConfig() throws MuleException
92 {
93 super.testEndpointConfig();
94
95
96 ImmutableEndpoint endpoint = muleContext.getRegistry().lookupEndpointFactory().getInboundEndpoint("waterMelonEndpoint");
97 assertNotNull(endpoint);
98 assertEquals("UTF-8-TEST", endpoint.getEncoding());
99 assertEquals("test.queue", endpoint.getEndpointURI().getAddress());
100
101 Service service = muleContext.getRegistry().lookupService("appleComponent2");
102 assertNotNull(service);
103 }
104
105 public void testExceptionStrategy2()
106 {
107 Service service = muleContext.getRegistry().lookupService("appleComponent");
108 assertNotNull(service.getExceptionListener());
109 assertTrue(DefaultExceptionStrategy.class.isAssignableFrom(service.getExceptionListener().getClass()));
110 }
111
112
113 public void testTransformerConfig()
114 {
115 super.testTransformerConfig();
116
117 Transformer t = muleContext.getRegistry().lookupTransformer("TestCompressionTransformer");
118 assertNotNull(t);
119 assertTrue(t instanceof TestCompressionTransformer);
120 assertEquals(t.getReturnClass(), java.lang.String.class);
121 assertNotNull(((TestCompressionTransformer) t).getContainerProperty());
122 }
123
124
125 public void testModelConfig() throws Exception
126 {
127 super.testModelConfig();
128 assertNotNull(muleContext.getRegistry().lookupService("appleComponent"));
129 assertNotNull(muleContext.getRegistry().lookupService("appleComponent2"));
130 }
131
132 public void testOutboundRouterConfig2()
133 {
134
135 Service service = muleContext.getRegistry().lookupService("appleComponent");
136 assertNotNull(service.getOutboundRouter());
137 OutboundRouterCollection router = service.getOutboundRouter();
138 assertNotNull(router.getCatchAllStrategy());
139 assertEquals(2, router.getRouters().size());
140
141 OutboundRouter route1 = (OutboundRouter) router.getRouters().get(0);
142 assertTrue(route1 instanceof FilteringOutboundRouter);
143 assertNotNull(((FilteringOutboundRouter) route1).getTransformers());
144 assertTrue(TransformerUtils.firstOrNull(((FilteringOutboundRouter) route1).getTransformers())
145 instanceof TestCompressionTransformer);
146
147 Filter filter = ((FilteringOutboundRouter) route1).getFilter();
148 assertNotNull(filter);
149 assertTrue(filter instanceof PayloadTypeFilter);
150 assertEquals(String.class, ((PayloadTypeFilter) filter).getExpectedType());
151
152
153 OutboundRouter route2 = (OutboundRouter) router.getRouters().get(1);
154 assertTrue(route2 instanceof FilteringOutboundRouter);
155
156 Filter filter2 = ((FilteringOutboundRouter) route2).getFilter();
157 assertNotNull(filter2);
158 assertTrue(filter2 instanceof AndFilter);
159 assertEquals(2, ((AndFilter) filter2).getFilters().size());
160 Filter left = (Filter) ((AndFilter) filter2).getFilters().get(0);
161 Filter right = (Filter) ((AndFilter) filter2).getFilters().get(1);
162 assertNotNull(left);
163 assertTrue(left instanceof RegExFilter);
164 assertEquals("the quick brown (.*)", ((RegExFilter) left).getPattern());
165 assertNotNull(right);
166 assertTrue(right instanceof RegExFilter);
167 assertEquals("(.*) brown (.*)", ((RegExFilter) right).getPattern());
168
169 assertTrue(router.getCatchAllStrategy() instanceof TestCatchAllStrategy);
170 }
171
172
173 public void testInboundRouterConfig2()
174 {
175 Service service = muleContext.getRegistry().lookupService("appleComponent");
176 assertNotNull(service.getInboundRouter());
177 InboundRouterCollection messageRouter = service.getInboundRouter();
178 assertNotNull(messageRouter.getCatchAllStrategy());
179 assertEquals(2, messageRouter.getRouters().size());
180 InboundRouter router = (InboundRouter) messageRouter.getRouters().get(0);
181 assertTrue(router instanceof SelectiveConsumer);
182 SelectiveConsumer sc = (SelectiveConsumer) router;
183
184 assertNotNull(sc.getFilter());
185 Filter filter = sc.getFilter();
186
187 assertTrue(filter instanceof PayloadTypeFilter);
188 assertEquals(String.class, ((PayloadTypeFilter) filter).getExpectedType());
189
190 InboundRouter router2 = (InboundRouter) messageRouter.getRouters().get(1);
191 assertTrue(router2 instanceof IdempotentReceiver);
192 }
193
194 public void testThreadingConfig() throws DefaultMuleException
195 {
196
197
198
199
200 int defaultMaxBufferSize = 42;
201 int defaultMaxThreadsActive = 16;
202 int defaultMaxThreadsIdle = 3;
203
204 int defaultThreadPoolExhaustedAction = ThreadingProfile.WHEN_EXHAUSTED_WAIT;
205 int defaultThreadTTL = 60001;
206
207
208 int connectorMaxBufferSize = 2;
209
210
211 int componentMaxBufferSize = 6;
212 int componentMaxThreadsActive = 12;
213 int componentMaxThreadsIdle = 6;
214 int componentThreadPoolExhaustedAction = ThreadingProfile.WHEN_EXHAUSTED_DISCARD;
215
216
217 ThreadingProfile tp = muleContext.getDefaultThreadingProfile();
218 assertEquals(defaultMaxBufferSize, tp.getMaxBufferSize());
219 assertEquals(defaultMaxThreadsActive, tp.getMaxThreadsActive());
220 assertEquals(defaultMaxThreadsIdle, tp.getMaxThreadsIdle());
221 assertEquals(defaultThreadPoolExhaustedAction, tp.getPoolExhaustedAction());
222 assertEquals(defaultThreadTTL, tp.getThreadTTL());
223
224
225 tp = muleContext.getDefaultComponentThreadingProfile();
226 assertEquals(defaultMaxBufferSize, tp.getMaxBufferSize());
227 assertEquals(defaultMaxThreadsActive, tp.getMaxThreadsActive());
228 assertEquals(defaultMaxThreadsIdle, tp.getMaxThreadsIdle());
229 assertEquals(defaultThreadPoolExhaustedAction, tp.getPoolExhaustedAction());
230 assertEquals(defaultThreadTTL, tp.getThreadTTL());
231
232
233 AbstractConnector c = (AbstractConnector) muleContext.getRegistry().lookupConnector("dummyConnector");
234 tp = c.getDispatcherThreadingProfile();
235
236 assertEquals(connectorMaxBufferSize, tp.getMaxBufferSize());
237
238 assertEquals(defaultMaxThreadsActive, tp.getMaxThreadsActive());
239 assertEquals(defaultMaxThreadsIdle, tp.getMaxThreadsIdle());
240 assertEquals(defaultThreadPoolExhaustedAction, tp.getPoolExhaustedAction());
241 assertEquals(defaultThreadTTL, tp.getThreadTTL());
242
243
244 Service service = muleContext.getRegistry().lookupService("appleComponent2");
245 assertTrue("service must be SedaService to get threading profile", service instanceof SedaService);
246 tp = ((SedaService) service).getThreadingProfile();
247
248 assertEquals(componentMaxBufferSize, tp.getMaxBufferSize());
249 assertEquals(componentMaxThreadsActive, tp.getMaxThreadsActive());
250 assertEquals(componentMaxThreadsIdle, tp.getMaxThreadsIdle());
251 assertEquals(componentThreadPoolExhaustedAction, tp.getPoolExhaustedAction());
252
253 assertEquals(defaultThreadTTL, tp.getThreadTTL());
254 }
255
256 public void testPoolingConfig()
257 {
258
259
260
261
262
263
264
265
266
267
268 Service service = muleContext.getRegistry().lookupService("appleComponent2");
269 PoolingProfile pp = ((PooledJavaComponent)service.getComponent()).getPoolingProfile();
270
271 assertEquals(9, pp.getMaxActive());
272 assertEquals(6, pp.getMaxIdle());
273 assertEquals(4002, pp.getMaxWait());
274 assertEquals(PoolingProfile.WHEN_EXHAUSTED_FAIL, pp.getExhaustedAction());
275 assertEquals(PoolingProfile.INITIALISE_ALL, pp.getInitialisationPolicy());
276 }
277
278 public void testQueueProfileConfig()
279 {
280
281
282
283
284
285
286
287 Service service = muleContext.getRegistry().lookupService("appleComponent2");
288 QueueProfile qp = ((SedaService)service).getQueueProfile();
289 assertEquals(102, qp.getMaxOutstandingMessages());
290 assertTrue(qp.isPersistent());
291
292
293
294
295
296
297 }
298
299 public void testEndpointProperties() throws Exception
300 {
301
302 Service service = muleContext.getRegistry().lookupService("appleComponent2");
303 InboundEndpoint inEndpoint = service.getInboundRouter().getEndpoint(
304 "transactedInboundEndpoint");
305 assertNotNull(inEndpoint);
306 assertNotNull(inEndpoint.getProperties());
307 assertEquals("Prop1", inEndpoint.getProperties().get("testEndpointProperty"));
308 }
309
310 public void testTransactionConfig() throws Exception
311 {
312
313 Service apple = muleContext.getRegistry().lookupService("appleComponent2");
314 InboundEndpoint inEndpoint = apple.getInboundRouter().getEndpoint("transactedInboundEndpoint");
315 assertNotNull(inEndpoint);
316 assertEquals(1, apple.getOutboundRouter().getRouters().size());
317 assertNotNull(inEndpoint.getTransactionConfig());
318 assertEquals(TransactionConfig.ACTION_ALWAYS_BEGIN, inEndpoint.getTransactionConfig().getAction());
319 assertTrue(inEndpoint.getTransactionConfig().getFactory() instanceof TestTransactionFactory);
320 assertNull(inEndpoint.getTransactionConfig().getConstraint());
321
322 OutboundRouter outRouter = (OutboundRouter) apple.getOutboundRouter().getRouters().get(0);
323 OutboundEndpoint outEndpoint = (OutboundEndpoint) outRouter.getEndpoints().get(0);
324 assertNotNull(outEndpoint);
325 }
326
327 public void testEnvironmentProperties()
328 {
329 assertEquals("true", muleContext.getRegistry().lookupObject("doCompression"));
330 assertEquals("this was set from the manager properties!", muleContext.getRegistry().lookupObject("beanProperty1"));
331 assertNotNull(muleContext.getRegistry().lookupObject("OS_Version"));
332 }
333
334
335 public void testNestedRouterProxyCreation()
336 {
337
338 Service orange = muleContext.getRegistry().lookupService("orangeComponent");
339 assertNotNull(orange);
340 assertTrue(orange.getComponent() instanceof JavaComponent);
341 NestedRouter r = (NestedRouter) ((JavaComponent) orange.getComponent()).getNestedRouter().getRouters().get(0);
342 assertNotNull(r);
343
344
345 }
346
347 public void testMuleConfiguration()
348 {
349 assertTrue(muleContext.getConfiguration().isDefaultRemoteSync());
350 assertTrue(muleContext.getConfiguration().isDefaultSynchronousEndpoints());
351 }
352
353 }