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 assertNotNull(MuleManager.getInstance().getTransactionManager());
61 }
62
63
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
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
90 public void testEndpointConfig()
91 {
92 String endpointString = MuleManager.getInstance().lookupEndpointIdentifier("Test Queue", null);
93 assertEquals(endpointString, "test://test.queue");
94
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
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
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
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
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
148 UMOOutboundRouter route1 = (UMOOutboundRouter)router.getRouters().get(0);
149 assertTrue(route1 instanceof FilteringOutboundRouter);
150
151
152
153 UMOFilter filter = ((FilteringOutboundRouter)route1).getFilter();
154 assertNotNull(filter);
155 assertTrue(filter instanceof PayloadTypeFilter);
156 assertEquals(String.class, ((PayloadTypeFilter)filter).getExpectedType());
157
158
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
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
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
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
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
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
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
262 QueueProfile qp = MuleManager.getConfiguration().getQueueProfile();
263 assertEquals(100, qp.getMaxOutstandingMessages());
264 assertTrue(qp.isPersistent());
265
266
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
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
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
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 }