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.AbstractServiceAndFlowTestCase;
16 import org.mule.tck.functional.EventCallback;
17 import org.mule.tck.functional.FunctionalTestComponent;
18
19 import java.util.Arrays;
20 import java.util.Collection;
21 import java.util.concurrent.CountDownLatch;
22 import java.util.concurrent.TimeUnit;
23
24 import org.junit.Test;
25 import org.junit.runners.Parameterized.Parameters;
26
27 import static org.junit.Assert.assertEquals;
28 import static org.junit.Assert.assertTrue;
29
30 public class CorrelationResequencerTestCase extends AbstractServiceAndFlowTestCase
31 {
32 CountDownLatch receiveLatch = new CountDownLatch(6);
33
34 @Parameters
35 public static Collection<Object[]> parameters()
36 {
37 return Arrays.asList(new Object[][]{
38 {ConfigVariant.SERVICE, "correlation-resequencer-test-service.xml"},
39 {ConfigVariant.FLOW, "correlation-resequencer-test-flow.xml"}});
40 }
41
42 public CorrelationResequencerTestCase(ConfigVariant variant, String configResources)
43 {
44 super(variant, configResources);
45 }
46
47 @Override
48 protected void doSetUp() throws Exception
49 {
50 super.doSetUp();
51
52 FunctionalTestComponent testComponent = getFunctionalTestComponent("test validator");
53 testComponent.setEventCallback(new EventCallback()
54 {
55 @Override
56 public void eventReceived(MuleEventContext context, Object component) throws Exception
57 {
58 receiveLatch.countDown();
59 }
60 });
61 }
62
63 @Test
64 public void testResequencer() throws Exception
65 {
66 MuleClient client = new MuleClient(muleContext);
67 client.dispatch("vm://splitter", Arrays.asList("a", "b", "c", "d", "e", "f"), null);
68
69 FunctionalTestComponent resequencer = getFunctionalTestComponent("test validator");
70
71 assertTrue(receiveLatch.await(30, TimeUnit.SECONDS));
72
73 assertEquals("Wrong number of messages received.", 6, resequencer.getReceivedMessagesCount());
74 assertEquals("Sequence wasn't reordered.", "a", resequencer.getReceivedMessage(1));
75 assertEquals("Sequence wasn't reordered.", "b", resequencer.getReceivedMessage(2));
76 assertEquals("Sequence wasn't reordered.", "c", resequencer.getReceivedMessage(3));
77 assertEquals("Sequence wasn't reordered.", "d", resequencer.getReceivedMessage(4));
78 assertEquals("Sequence wasn't reordered.", "e", resequencer.getReceivedMessage(5));
79 assertEquals("Sequence wasn't reordered.", "f", resequencer.getReceivedMessage(6));
80 }
81 }