1
2
3
4
5
6
7
8
9
10
11 package org.mule.routing.outbound;
12
13 import org.mule.impl.MuleMessage;
14 import org.mule.routing.LoggingCatchAllStrategy;
15 import org.mule.routing.filters.RegExFilter;
16 import org.mule.tck.AbstractMuleTestCase;
17 import org.mule.tck.MuleTestUtils;
18 import org.mule.umo.UMOMessage;
19 import org.mule.umo.UMOSession;
20 import org.mule.umo.endpoint.UMOEndpoint;
21
22 import com.mockobjects.dynamic.C;
23 import com.mockobjects.dynamic.Mock;
24
25 import java.util.ArrayList;
26 import java.util.List;
27
28 public class MulticastingRouterTestCase extends AbstractMuleTestCase
29 {
30 public void testMulticastingRouter() throws Exception
31 {
32 Mock session = MuleTestUtils.getMockSession();
33 session.matchAndReturn("getComponent", getTestComponent(getTestDescriptor("TEST", "java.lang.Object")));
34 OutboundRouterCollection messageRouter = new OutboundRouterCollection();
35 messageRouter.setCatchAllStrategy(new LoggingCatchAllStrategy());
36
37 UMOEndpoint endpoint1 = getTestEndpoint("Test1Provider", UMOEndpoint.ENDPOINT_TYPE_SENDER);
38 assertNotNull(endpoint1);
39
40 UMOEndpoint endpoint2 = getTestEndpoint("Test2Provider", UMOEndpoint.ENDPOINT_TYPE_SENDER);
41 assertNotNull(endpoint2);
42
43 MulticastingRouter router = new MulticastingRouter();
44 RegExFilter filter = new RegExFilter("(.*) event");
45 router.setFilter(filter);
46 List endpoints = new ArrayList();
47 endpoints.add(endpoint1);
48 endpoints.add(endpoint2);
49 router.setEndpoints(endpoints);
50
51 assertEquals(filter, router.getFilter());
52
53 UMOMessage message = new MuleMessage("test event");
54
55 assertTrue(router.isMatch(message));
56
57 session.expect("dispatchEvent", C.eq(message, endpoint1));
58 session.expect("dispatchEvent", C.eq(message, endpoint2));
59 router.route(message, (UMOSession)session.proxy(), false);
60 session.verify();
61
62 message = new MuleMessage("test event");
63
64 session.expectAndReturn("sendEvent", C.eq(message, endpoint1), message);
65 session.expectAndReturn("sendEvent", C.eq(message, endpoint2), message);
66 UMOMessage result = router.route(message, (UMOSession)session.proxy(), true);
67 assertNotNull(result);
68 assertEquals(message, result);
69 session.verify();
70 }
71 }