1
2
3
4
5
6
7
8
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
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
185
186 }
187
188 public void testOutboundRouterConfig()
189 {
190
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
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
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
210 UMONestedRouter route1 = (UMONestedRouter)router.getRouters().get(0);
211 assertEquals(FruitCleaner.class, route1.getInterface());
212 assertEquals("wash", route1.getMethod());
213 assertNotNull(route1.getEndpoint());
214
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
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
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
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 }