View Javadoc

1   /*
2    * $Id: CorrelationResequencerTestCase.java 22421 2011-07-15 05:05:06Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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  }