1   /*
2    * $Id: MulticastConnectorFunctionalTestCase.java 7963 2007-08-21 08:53:15Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.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.providers.multicast;
12  
13  import org.mule.extras.client.MuleClient;
14  import org.mule.tck.FunctionalTestCase;
15  
16  import java.util.HashSet;
17  import java.util.Set;
18  
19  public class MulticastConnectorFunctionalTestCase extends FunctionalTestCase
20  {
21      public static final String MESSAGE = "hello";
22  
23  
24      protected String getConfigResources()
25      {
26          return "multicast-functional-test.xml";
27      }
28  
29      public void testSendTestData() throws Exception
30      {
31          final int numberOfMessages = 100;
32          MuleClient client = new MuleClient();
33  
34          for (int sentPackets = 0; sentPackets < numberOfMessages; sentPackets++)
35          {
36              String msg = MESSAGE + sentPackets;
37              client.dispatch("serverEndpoint", msg, null);
38          }
39  
40          int broadcastMessages = numberOfMessages * 3; //3 components
41          Set receivedMessages = new HashSet(broadcastMessages);
42  
43          int receivedPackets = 0;
44          for (; receivedPackets < broadcastMessages; receivedPackets++)
45          {
46              receivedMessages.add(client.receive("vm://foo", 2000).getPayloadAsString());
47  
48          }
49  
50          assertEquals(broadcastMessages, receivedPackets);
51  
52          //Check all broadcasts were received from Component1
53          checkBroadcastMessagesForComponent(receivedMessages, "Component1");
54  
55          //Check all broadcasts were received from Component2
56          checkBroadcastMessagesForComponent(receivedMessages, "Component2");
57  
58          //Check all broadcasts were received from Component3
59          checkBroadcastMessagesForComponent(receivedMessages, "Component3");
60  
61          assertEquals(0, receivedMessages.size());
62      }
63  
64      protected void checkBroadcastMessagesForComponent(Set receivedMessages, String name)
65      {
66          //Check all broadcasts were received from Component2
67          for (int x = 0; x <100; x++)
68          {
69              String expected = MESSAGE + x + " Received " + name;
70  
71              assertTrue(receivedMessages.contains(expected));
72              assertTrue(receivedMessages.remove(expected));
73          }
74      }
75  }