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); | |
} | |
} |