1
2
3
4
5
6
7
8
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 }