View Javadoc

1   /*
2    * $Id: MessageChunkAggregatorTestCase.java 22506 2011-07-21 16:30:40Z stephen.fenech $
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.routing;
12  
13  import static org.junit.Assert.assertNotNull;
14  import static org.junit.Assert.assertNull;
15  import static org.junit.Assert.assertTrue;
16  
17  import org.mule.DefaultMuleEvent;
18  import org.mule.DefaultMuleMessage;
19  import org.mule.MessageExchangePattern;
20  import org.mule.api.MuleEvent;
21  import org.mule.api.MuleMessage;
22  import org.mule.api.MuleSession;
23  import org.mule.api.endpoint.InboundEndpoint;
24  import org.mule.api.service.Service;
25  import org.mule.tck.MuleTestUtils;
26  import org.mule.tck.junit4.AbstractMuleContextTestCase;
27  import org.mule.tck.testmodels.fruit.Apple;
28  
29  import org.junit.Test;
30  
31  public class MessageChunkAggregatorTestCase extends AbstractMuleContextTestCase
32  {
33  
34      public MessageChunkAggregatorTestCase()
35      {
36          setStartContext(true);
37      }
38  
39      @Test
40      public void testMessageProcessor() throws Exception
41      {
42          MuleSession session = getTestSession(getTestService(), muleContext);
43          Service testService = getTestService("test", Apple.class);
44          assertNotNull(testService);
45  
46          MessageChunkAggregator router = new MessageChunkAggregator();
47          router.setMuleContext(muleContext);
48          router.setFlowConstruct(testService);
49          router.initialise();
50  
51          MuleMessage message1 = new DefaultMuleMessage("test event A", muleContext);
52          MuleMessage message2 = new DefaultMuleMessage("test event B", muleContext);
53          MuleMessage message3 = new DefaultMuleMessage("test event C", muleContext);
54          message1.setCorrelationId(message1.getUniqueId());
55          message2.setCorrelationId(message1.getUniqueId());
56          message3.setCorrelationId(message1.getUniqueId());
57          message1.setCorrelationGroupSize(3);
58  
59          InboundEndpoint endpoint = MuleTestUtils.getTestInboundEndpoint(MessageExchangePattern.ONE_WAY,
60              muleContext);
61          MuleEvent event1 = new DefaultMuleEvent(message1, endpoint, session);
62          MuleEvent event2 = new DefaultMuleEvent(message2, endpoint, session);
63          MuleEvent event3 = new DefaultMuleEvent(message3, endpoint, session);
64  
65          assertNull(router.process(event1));
66          assertNull(router.process(event2));
67          MuleEvent resultEvent = router.process(event3);
68          assertNotNull(resultEvent);
69          MuleMessage resultMessage = resultEvent.getMessage();
70          assertNotNull(resultMessage);
71          String payload = resultMessage.getPayloadAsString();
72  
73          assertTrue(payload.contains("test event A"));
74          assertTrue(payload.contains("test event B"));
75          assertTrue(payload.contains("test event C"));
76          assertTrue(payload.matches("test event [A,B,C]test event [A,B,C]test event [A,B,C]"));
77      }
78  }