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