blob: fcae89bfbe6f8c2884df87d663cf6ca39e259b84 [file] [log] [blame]
package org.apache.catalina.tribes.test.transport;
import java.io.OutputStream;
import java.net.Socket;
import java.text.DecimalFormat;
import org.apache.catalina.tribes.membership.MemberImpl;
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;
import java.math.BigDecimal;
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));
buf = XByteBuffer.createDataPackage(data);
int len = buf.length;
System.out.println("Message size:"+len+" bytes");
BigDecimal total = new BigDecimal((double)0);
BigDecimal bytes = new BigDecimal((double)len);
Socket socket = new Socket("localhost",9999);
System.out.println("Writing to 9999");
OutputStream out = socket.getOutputStream();
long start = 0;
double mb = 0;
boolean first = true;
int count = 0;
DecimalFormat df = new DecimalFormat("##.00");
while ( count<100000 ) {
if ( first ) { first = false; start = System.currentTimeMillis();}
out.write(buf,0,buf.length);
mb += ( (double) buf.length) / 1024 / 1024;
total = total.add(bytes);
if ( ((++count) % 10000) == 0 ) {
long time = System.currentTimeMillis();
double seconds = ((double)(time-start))/1000;
System.out.println("Throughput "+df.format(mb/seconds)+" MB/seconds messages "+count+", total "+mb+" MB, total "+total+" bytes.");
}
}
out.flush();
System.out.println("Complete, sleeping 5 seconds");
Thread.sleep(5000);
}
}