Author: fhanik Date: Sat Jul 1 15:43:35 2006 New Revision: 418515 URL: http://svn.apache.org/viewvc?rev=418515&view=rev Log: Added a test case to verify data integrity.
Added: tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/test/channel/TestDataIntegrity.java Modified: tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/ChannelCreator.java tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/SocketSend.java Modified: tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/ChannelCreator.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/ChannelCreator.java?rev=418515&r1=418514&r2=418515&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/ChannelCreator.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/ChannelCreator.java Sat Jul 1 15:43:35 2006 @@ -82,7 +82,7 @@ int port = 4001; String mbind = null; boolean gzip = false; - int tcpseltimeout = 100; + int tcpseltimeout = 5000; int tcpthreadcount = 4; int acktimeout = 15000; String mcastaddr = "228.0.0.5"; Modified: tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/SocketSend.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/SocketSend.java?rev=418515&r1=418514&r2=418515&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/SocketSend.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/demos/SocketSend.java Sat Jul 1 15:43:35 2006 @@ -7,12 +7,14 @@ import org.apache.catalina.tribes.io.XByteBuffer; import org.apache.catalina.tribes.Member; import org.apache.catalina.tribes.io.ChannelData; +import org.apache.catalina.tribes.Channel; public class SocketSend { public static void main(String[] args) throws Exception { Member mbr = new MemberImpl("localhost", 9999, 0); ChannelData data = new ChannelData(); + data.setOptions(Channel.SEND_OPTIONS_BYTE_MESSAGE); data.setAddress(mbr); byte[] buf = new byte[8192 * 4]; data.setMessage(new XByteBuffer(buf,false)); Added: tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/test/channel/TestDataIntegrity.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/test/channel/TestDataIntegrity.java?rev=418515&view=auto ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/test/channel/TestDataIntegrity.java (added) +++ tomcat/container/tc5.5.x/modules/groupcom/test/java/org/apache/catalina/tribes/test/channel/TestDataIntegrity.java Sat Jul 1 15:43:35 2006 @@ -0,0 +1,114 @@ +package org.apache.catalina.tribes.test.channel; + +import junit.framework.TestCase; +import java.io.Serializable; +import java.util.Random; +import java.util.Arrays; +import org.apache.catalina.tribes.ChannelListener; +import org.apache.catalina.tribes.Member; +import org.apache.catalina.tribes.group.GroupChannel; +import org.apache.catalina.tribes.test.channel.TestDataIntegrity.Listener; + +/** + * <p>Title: </p> + * + * <p>Description: </p> + * + * <p>Copyright: Copyright (c) 2005</p> + * + * <p>Company: </p> + * + * @author not attributable + * @version 1.0 + */ +public class TestDataIntegrity extends TestCase { + int msgCount = 1000; + GroupChannel channel1; + GroupChannel channel2; + Listener listener1; + protected void setUp() throws Exception { + super.setUp(); + channel1 = new GroupChannel(); + channel2 = new GroupChannel(); + listener1 = new Listener(); + channel2.addChannelListener(listener1); + channel1.start(GroupChannel.DEFAULT); + channel2.start(GroupChannel.DEFAULT); + } + + protected void tearDown() throws Exception { + super.tearDown(); + channel1.stop(GroupChannel.DEFAULT); + channel2.stop(GroupChannel.DEFAULT); + } + + public void testDataSendNO_ACK() throws Exception { + System.err.println("Starting NO_ACK"); + for (int i=0; i<msgCount; i++) channel1.send(channel1.getMembers(),Data.createRandomData(),0); + Thread.sleep(250); + System.err.println("Finished NO_ACK"); + assertEquals("Checking success messages.",msgCount,listener1.count); + } + + public void testDataSendACK() throws Exception { + System.err.println("Starting ACK"); + for (int i=0; i<msgCount; i++) channel1.send(new Member[] {channel2.getLocalMember(false)},Data.createRandomData(),GroupChannel.SEND_OPTIONS_USE_ACK); + Thread.sleep(250); + System.err.println("Finished ACK"); + assertEquals("Checking success messages.",msgCount,listener1.count); + } + + public void testDataSendSYNCACK() throws Exception { + System.err.println("Starting SYNC_ACK"); + for (int i=0; i<msgCount; i++) channel1.send(channel1.getMembers(),Data.createRandomData(),GroupChannel.SEND_OPTIONS_SYNCHRONIZED_ACK|GroupChannel.SEND_OPTIONS_USE_ACK); + Thread.sleep(250); + System.err.println("Finished SYNC_ACK"); + assertEquals("Checking success messages.",msgCount,listener1.count); + } + + public static class Listener implements ChannelListener { + long count = 0; + public boolean accept(Serializable s, Member m) { + return (s instanceof Data); + } + + public void messageReceived(Serializable s, Member m) { + Data d = (Data)s; + if ( !Data.verify(d) ) { + System.err.println("ERROR"); + } else { + count++; + if ((count %100) ==0 ) { + System.err.println("SUCCESS:"+count); + } + } + } + } + + public static class Data implements Serializable { + public int length; + public byte[] data; + public byte key; + public static Random r = new Random(System.currentTimeMillis()); + public static Data createRandomData() { + int i = r.nextInt(); + i = ( i % 127 ); + int length = Math.abs(r.nextInt() % 65555); + Data d = new Data(); + d.length = length; + d.key = (byte)i; + d.data = new byte[length]; + Arrays.fill(d.data,d.key); + return d; + } + + public static boolean verify(Data d) { + boolean result = (d.length == d.data.length); + for ( int i=0; result && (i<d.data.length); i++ ) result = result && d.data[i] == d.key; + return result; + } + } + + + +} --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]