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