1
2
3
4
5
6
7
8
9
10
11 package org.mule.test.routing;
12
13 import org.mule.api.context.notification.RoutingNotificationListener;
14 import org.mule.context.notification.RoutingNotification;
15 import org.mule.module.client.MuleClient;
16 import org.mule.tck.FunctionalTestCase;
17 import org.mule.tck.functional.FunctionalTestComponent;
18
19 import java.util.Arrays;
20 import java.util.List;
21
22 import edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicInteger;
23
24 public class CollectionAggregatorRouterTimeoutTestCase extends FunctionalTestCase
25 {
26
27 protected String getConfigResources()
28 {
29 return "collection-aggregator-router-timeout-test.xml";
30 }
31
32 public void testNoFailOnTimeout() throws Exception
33 {
34
35 final AtomicInteger correlationTimeoutCount = new AtomicInteger(0);
36 muleContext.registerListener(new RoutingNotificationListener<RoutingNotification>()
37 {
38 public void onNotification(RoutingNotification notification)
39 {
40 if (notification.getAction() == RoutingNotification.CORRELATION_TIMEOUT)
41 {
42 correlationTimeoutCount.incrementAndGet();
43 }
44 }
45 });
46
47 FunctionalTestComponent vortex = (FunctionalTestComponent) getComponent("vortex");
48 FunctionalTestComponent aggregator = (FunctionalTestComponent) getComponent("aggregator");
49
50 MuleClient client = new MuleClient(muleContext);
51 List list = Arrays.asList("first", "second");
52 client.dispatch("vm://splitter", list, null);
53
54 Thread.sleep(5000);
55
56
57 assertEquals("Correlation timeout should not have happened.", 0, correlationTimeoutCount.intValue());
58
59
60 assertEquals("Vortex received wrong number of messages.", 1, vortex.getReceivedMessagesCount());
61 assertEquals("Wrong message received", "second", vortex.getLastReceivedMessage());
62
63
64 assertEquals("Aggregator received wrong number of messages.", 1, aggregator.getReceivedMessagesCount());
65 assertEquals("Wrong message received", Arrays.asList("first"), aggregator.getLastReceivedMessage());
66
67
68 Thread.sleep(9000);
69
70
71
72 assertEquals("Other messages never received by aggregator.", 1, aggregator.getReceivedMessagesCount());
73 assertNotNull(client.request("vm://out?connector=queue", 10000));
74 }
75 }