1
2
3
4
5
6
7
8
9
10
11 package org.mule.providers.vm.issues;
12
13 import org.mule.MuleManager;
14 import org.mule.extras.client.MuleClient;
15 import org.mule.impl.MuleMessage;
16 import org.mule.tck.FunctionalTestCase;
17 import org.mule.tck.functional.EventCallback;
18 import org.mule.tck.functional.FunctionalTestComponent;
19 import org.mule.umo.UMOEventContext;
20 import org.mule.umo.model.UMOModel;
21
22 import edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicBoolean;
23
24 public class MulticastRouterMule2112TestCase extends FunctionalTestCase
25 {
26
27 protected String getConfigResources()
28 {
29 return "multicast-router-mule-2112-test.xml";
30 }
31
32 public void testMulticastRoutingOverTwoEndpoints() throws Exception
33 {
34 UMOModel model = (UMOModel) MuleManager.getInstance().getModels().get("main");
35 FunctionalTestComponent hop1 = (FunctionalTestComponent) model.getComponent("hop1").getInstance();
36 FunctionalTestComponent hop2 = (FunctionalTestComponent) model.getComponent("hop2").getInstance();
37 assertNotNull(hop1);
38 assertNotNull(hop2);
39
40 final AtomicBoolean hop1made = new AtomicBoolean(false);
41 EventCallback callback1 = new EventCallback()
42 {
43 public void eventReceived(final UMOEventContext context, final Object component) throws Exception
44 {
45 assertTrue(hop1made.compareAndSet(false, true));
46 }
47 };
48
49 final AtomicBoolean hop2made = new AtomicBoolean(false);
50 EventCallback callback2 = new EventCallback()
51 {
52 public void eventReceived(final UMOEventContext context, final Object component) throws Exception
53 {
54 assertTrue(hop2made.compareAndSet(false, true));
55 }
56 };
57
58 hop1.setEventCallback(callback1);
59 hop2.setEventCallback(callback2);
60
61 MuleClient client = new MuleClient();
62 MuleMessage request = new MuleMessage("payload");
63 client.dispatch("vm://inbound", request);
64 Thread.sleep(1000);
65
66 assertTrue("First callback never fired", hop1made.get());
67 assertTrue("Second callback never fired", hop2made.get());
68 }
69
70 }