1
2
3
4
5
6
7
8
9
10
11 package org.mule.test.routing;
12
13 import org.mule.api.MuleEventContext;
14 import org.mule.module.client.MuleClient;
15 import org.mule.tck.FunctionalTestCase;
16 import org.mule.tck.functional.EventCallback;
17 import org.mule.tck.functional.FunctionalTestComponent;
18
19 import java.util.Arrays;
20
21 import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
22 import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
23
24 public class CorrelationResequencerTestCase extends FunctionalTestCase
25 {
26 CountDownLatch receiveLatch = new CountDownLatch(6);
27
28 @Override
29 protected void doSetUp() throws Exception
30 {
31 super.doSetUp();
32
33 FunctionalTestComponent testComponent = getFunctionalTestComponent("test validator");
34 testComponent.setEventCallback(new EventCallback()
35 {
36 public void eventReceived(MuleEventContext context, Object component) throws Exception
37 {
38 receiveLatch.countDown();
39 }
40 });
41 }
42
43 @Override
44 protected String getConfigResources()
45 {
46 return "correlation-resequencer-test.xml";
47 }
48
49 public void testResequencer() throws Exception
50 {
51 MuleClient client = new MuleClient(muleContext);
52 client.dispatch("vm://splitter", Arrays.asList("a", "b", "c", "d", "e", "f"), null);
53
54 FunctionalTestComponent resequencer = getFunctionalTestComponent("test validator");
55
56 assertTrue(receiveLatch.await(30, TimeUnit.SECONDS));
57
58 assertEquals("Wrong number of messages received.", 6, resequencer.getReceivedMessagesCount());
59 assertEquals("Sequence wasn't reordered.", "a", resequencer.getReceivedMessage(1));
60 assertEquals("Sequence wasn't reordered.", "b", resequencer.getReceivedMessage(2));
61 assertEquals("Sequence wasn't reordered.", "c", resequencer.getReceivedMessage(3));
62 assertEquals("Sequence wasn't reordered.", "d", resequencer.getReceivedMessage(4));
63 assertEquals("Sequence wasn't reordered.", "e", resequencer.getReceivedMessage(5));
64 assertEquals("Sequence wasn't reordered.", "f", resequencer.getReceivedMessage(6));
65 }
66 }