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: [email protected]
For additional commands, e-mail: [email protected]