1
2
3
4
5
6
7
8
9
10
11 package org.mule.routing;
12
13 import org.mule.DefaultMuleEvent;
14 import org.mule.DefaultMuleMessage;
15 import org.mule.MessageExchangePattern;
16 import org.mule.api.MuleEvent;
17 import org.mule.api.MuleMessage;
18 import org.mule.api.MuleSession;
19 import org.mule.api.endpoint.InboundEndpoint;
20 import org.mule.api.service.Service;
21 import org.mule.tck.MuleTestUtils;
22 import org.mule.tck.junit4.AbstractMuleContextTestCase;
23 import org.mule.tck.testmodels.fruit.Apple;
24
25 import java.util.Arrays;
26 import java.util.Collections;
27 import java.util.List;
28
29 import org.junit.Test;
30
31 import static org.junit.Assert.assertEquals;
32 import static org.junit.Assert.assertNotNull;
33 import static org.junit.Assert.assertNull;
34
35 public class SimpleCollectionAggregatorTestCase extends AbstractMuleContextTestCase
36 {
37
38 public SimpleCollectionAggregatorTestCase()
39 {
40 setStartContext(true);
41 }
42
43 @Test
44 public void testMessageProcessor() throws Exception
45 {
46 MuleSession session = getTestSession(getTestService(), muleContext);
47 Service testService = getTestService("test", Apple.class);
48 assertNotNull(testService);
49
50 SimpleCollectionAggregator router = new SimpleCollectionAggregator();
51 router.setMuleContext(muleContext);
52 router.setFlowConstruct(testService);
53 router.initialise();
54
55 MuleMessage message1 = new DefaultMuleMessage("test event A", muleContext);
56 MuleMessage message2 = new DefaultMuleMessage("test event B", muleContext);
57 MuleMessage message3 = new DefaultMuleMessage("test event C", muleContext);
58 message1.setCorrelationId(message1.getUniqueId());
59 message2.setCorrelationId(message1.getUniqueId());
60 message3.setCorrelationId(message1.getUniqueId());
61 message1.setCorrelationGroupSize(3);
62
63 InboundEndpoint endpoint = MuleTestUtils.getTestInboundEndpoint(MessageExchangePattern.ONE_WAY, muleContext);
64 MuleEvent event1 = new DefaultMuleEvent(message1, endpoint, session);
65 MuleEvent event2 = new DefaultMuleEvent(message2, endpoint, session);
66 MuleEvent event3 = new DefaultMuleEvent(message3, endpoint, session);
67
68 assertNull(router.process(event1));
69 assertNull(router.process(event2));
70 MuleEvent resultEvent = router.process(event3);
71 assertNotNull(resultEvent);
72 MuleMessage resultMessage = resultEvent.getMessage();
73 assertNotNull(resultMessage);
74 List<String> payload = (List<String>)resultMessage.getPayload();
75 assertEquals(3, payload.size());
76 String[] results=new String[3];
77 results=payload.toArray(results);
78 Arrays.sort(results);
79 assertEquals("test event A", results[0]);
80 assertEquals("test event B", results[1]);
81 assertEquals("test event C", results[2]);
82 }
83
84 }