Author: kkolinko
Date: Sat Nov  7 17:17:55 2015
New Revision: 1713158

URL: http://svn.apache.org/viewvc?rev=1713158&view=rev
Log:
Copy test implementation from Tomcat 7.
This a) uses logging instead of System.out,
b) validates result of the test and fail()s, instead of just printing a message 
onto System.out

Modified:
    
tomcat/tc6.0.x/trunk/test/org/apache/catalina/tribes/group/TestGroupChannelSenderConnections.java

Modified: 
tomcat/tc6.0.x/trunk/test/org/apache/catalina/tribes/group/TestGroupChannelSenderConnections.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/test/org/apache/catalina/tribes/group/TestGroupChannelSenderConnections.java?rev=1713158&r1=1713157&r2=1713158&view=diff
==============================================================================
--- 
tomcat/tc6.0.x/trunk/test/org/apache/catalina/tribes/group/TestGroupChannelSenderConnections.java
 (original)
+++ 
tomcat/tc6.0.x/trunk/test/org/apache/catalina/tribes/group/TestGroupChannelSenderConnections.java
 Sat Nov  7 17:17:55 2015
@@ -20,11 +20,15 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Random;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import static org.junit.Assert.fail;
 
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.catalina.startup.LoggingBaseTest;
 import org.apache.catalina.tribes.Channel;
 import org.apache.catalina.tribes.ChannelListener;
 import org.apache.catalina.tribes.ManagedChannel;
@@ -32,13 +36,15 @@ import org.apache.catalina.tribes.Member
 import org.apache.catalina.tribes.TesterUtil;
 import org.apache.catalina.tribes.transport.ReplicationTransmitter;
 
-public class TestGroupChannelSenderConnections {
-    private static int count = 2;
+public class TestGroupChannelSenderConnections extends LoggingBaseTest {
+    private static final int count = 2;
     private ManagedChannel[] channels = new ManagedChannel[count];
     private TestMsgListener[] listeners = new TestMsgListener[count];
 
     @Before
+    @Override
     public void setUp() throws Exception {
+        super.setUp();
         for (int i = 0; i < channels.length; i++) {
             channels[i] = new GroupChannel();
             channels[i].getMembershipService().setPayload( ("Channel-" + (i + 
1)).getBytes("ASCII"));
@@ -52,27 +58,44 @@ public class TestGroupChannelSenderConne
     }
 
     public void sendMessages(long delay, long sleep) throws Exception {
+        resetMessageCounters();
         Member local = channels[0].getLocalMember(true);
         Member dest = channels[1].getLocalMember(true);
         int n = 3;
-        System.out.println("Sending " + n + " messages from [" + 
local.getName() + "] to [" + dest.getName() + "]");
+        log.info("Sending " + n + " messages from [" + local.getName()
+                + "] to [" + dest.getName() + "] with delay of " + delay
+                + " ms between them.");
         for (int i = 0; i < n; i++) {
-            channels[0].send(new Member[] {dest}, new TestMsg(), 0);
-            if ( delay > 0 ) Thread.sleep(delay);
+            channels[0].send(new Member[] { dest }, new TestMsg(), 0);
+            boolean last = (i == n - 1);
+            if (!last && delay > 0) {
+                Thread.sleep(delay);
+            }
+        }
+        log.info("Messages sent. Waiting no more than " + (sleep / 1000)
+                + " seconds for them to be received");
+        long startTime = System.currentTimeMillis();
+        int countReceived;
+        while ((countReceived = getReceivedMessageCount()) != n) {
+            long time = System.currentTimeMillis();
+            if ((time - startTime) > sleep) {
+                fail("Only " + countReceived + " out of " + n
+                        + " messages have been received in " + (sleep / 1000)
+                        + " seconds");
+                break;
+            }
+            Thread.sleep(100);
         }
-        System.out.println("Messages sent. Sleeping for "+(sleep/1000)+" 
seconds to inspect connections");
-        if ( sleep > 0 ) Thread.sleep(sleep);
-
     }
 
     @Test
     public void testConnectionLinger() throws Exception {
         sendMessages(0,15000);
     }
-    
+
     @Test
     public void testKeepAliveCount() throws Exception {
-        System.out.println("Setting keep alive count to 0");
+        log.info("Setting keep alive count to 0");
         for (int i = 0; i < channels.length; i++) {
             ReplicationTransmitter t = 
(ReplicationTransmitter)channels[0].getChannelSender();
             t.getTransport().setKeepAliveCount(0);
@@ -82,7 +105,7 @@ public class TestGroupChannelSenderConne
 
     @Test
     public void testKeepAliveTime() throws Exception {
-        System.out.println("Setting keep alive count to 1 second");
+        log.info("Setting keep alive count to 1 second");
         for (int i = 0; i < channels.length; i++) {
             ReplicationTransmitter t = 
(ReplicationTransmitter)channels[0].getChannelSender();
             t.getTransport().setKeepAliveTime(1000);
@@ -91,11 +114,29 @@ public class TestGroupChannelSenderConne
     }
 
     @After
+    @Override
     public void tearDown() throws Exception {
-        for (int i = 0; i < channels.length; i++) {
-            channels[i].stop(Channel.DEFAULT);
+        try {
+            for (int i = 0; i < channels.length; i++) {
+                channels[i].stop(Channel.DEFAULT);
+            }
+        } finally {
+            super.tearDown();
         }
+    }
 
+    private void resetMessageCounters() {
+        for (TestMsgListener listener: listeners) {
+            listener.reset();
+        }
+    }
+
+    private int getReceivedMessageCount() {
+        int count = 0;
+        for (TestMsgListener listener: listeners) {
+            count += listener.getReceivedCount();
+        }
+        return count;
     }
 
     // Test message. The message size is random.
@@ -103,7 +144,7 @@ public class TestGroupChannelSenderConne
         private static final long serialVersionUID = 1L;
         private static Random r = new Random();
         private HashMap<Integer, ArrayList<Object>> map =
-                new HashMap<Integer, ArrayList<Object>>();
+            new HashMap<Integer, ArrayList<Object>>();
         public TestMsg() {
             int size = Math.abs(r.nextInt() % 200);
             for (int i=0; i<size; i++ ) {
@@ -115,22 +156,29 @@ public class TestGroupChannelSenderConne
     }
 
     public class TestMsgListener implements ChannelListener {
-        public String name = null;
+        private final String name;
+        private final AtomicInteger counter = new AtomicInteger();
         public TestMsgListener(String name) {
             this.name = name;
         }
-        
+
+        public void reset() {
+            counter.set(0);
+        }
+
+        public int getReceivedCount() {
+            return counter.get();
+        }
+
         public void messageReceived(Serializable msg, Member sender) {
-            System.out.println("["+name+"] Received message:"+msg+" from " + 
sender.getName());
+            counter.incrementAndGet();
+            log.info("["+name+"] Received message:"+msg+" from " + 
sender.getName());
         }
 
-    
         public boolean accept(Serializable msg, Member sender) {
             return true;
         }
 
-
-        
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to