View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.routing;
8   
9   import org.mule.DefaultMuleEvent;
10  import org.mule.DefaultMuleMessage;
11  import org.mule.MessageExchangePattern;
12  import org.mule.api.MuleEvent;
13  import org.mule.api.MuleMessage;
14  import org.mule.api.MuleSession;
15  import org.mule.api.endpoint.ImmutableEndpoint;
16  import org.mule.api.service.Service;
17  import org.mule.tck.MuleTestUtils;
18  import org.mule.tck.junit4.AbstractMuleContextTestCase;
19  import org.mule.tck.testmodels.fruit.Apple;
20  
21  import org.junit.Test;
22  
23  import static org.junit.Assert.assertEquals;
24  import static org.junit.Assert.assertNotNull;
25  import static org.junit.Assert.assertNull;
26  
27  public class MessageChunkAggregatorTestCase extends AbstractMuleContextTestCase
28  {
29  
30      public MessageChunkAggregatorTestCase()
31      {
32          setStartContext(true);
33      }
34  
35      @Test
36      public void testMessageProcessor() throws Exception
37      {
38          MuleSession session = getTestSession(getTestService(), muleContext);
39          Service testService = getTestService("test", Apple.class);
40          assertNotNull(testService);
41  
42          MessageChunkAggregator router = new MessageChunkAggregator();
43          router.setMuleContext(muleContext);
44          router.setFlowConstruct(testService);    
45          router.initialise();
46  
47          MuleMessage message1 = new DefaultMuleMessage("test event A", muleContext);
48          MuleMessage message2 = new DefaultMuleMessage("test event B", muleContext);
49          MuleMessage message3 = new DefaultMuleMessage("test event C", muleContext);
50          message1.setCorrelationId(message1.getUniqueId());
51          message2.setCorrelationId(message1.getUniqueId());
52          message3.setCorrelationId(message1.getUniqueId());
53          message1.setCorrelationGroupSize(3);
54  
55          ImmutableEndpoint endpoint = MuleTestUtils.getTestOutboundEndpoint(MessageExchangePattern.ONE_WAY, muleContext);
56          MuleEvent event1 = new DefaultMuleEvent(message1, endpoint, session);
57          MuleEvent event2 = new DefaultMuleEvent(message2, endpoint, session);
58          MuleEvent event3 = new DefaultMuleEvent(message3, endpoint, session);
59  
60          assertNull(router.process(event1));
61          assertNull(router.process(event2));
62          MuleEvent resultEvent = router.process(event3);
63          assertNotNull(resultEvent);
64          MuleMessage resultMessage = resultEvent.getMessage();
65          assertNotNull(resultMessage);
66          String payload = resultMessage.getPayloadAsString();
67          assertEquals("test event Atest event Btest event C", payload);
68      }
69  
70  }