JChannel channel=null;
String props=null, loopback_props;
String group_name="SpeedTest-Group";
Message send_msg;
boolean debug=false, cummulative=false;
Debugger debugger=null;
long sleep_time=1; // sleep in msecs between msg sends
boolean busy_sleep=false;
boolean yield=false;
int num_yields=0;
boolean loopback=false;
props="UDP(mcast_addr=224.0.0.36;mcast_port=55566;ip_ttl=32;" +
"ucast_send_buf_size=32000;ucast_recv_buf_size=64000;" +
"mcast_send_buf_size=32000;mcast_recv_buf_size=64000):" +
"PING(timeout=2000;num_initial_members=3):" +
"MERGE2(min_interval=5000;max_interval=10000):" +
"FD_SOCK:" +
"VERIFY_SUSPECT(timeout=1500):" +
"pbcast.NAKACK(max_xmit_size=8192;gc_lag=50;retransmit_timeout=600,800,1200,2400,4800):" +
"UNICAST(timeout=1200):" +
"pbcast.STABLE(desired_avg_gossip=10000):" +
"FRAG(frag_size=8192;down_thread=false;up_thread=false):" +
// "PIGGYBACK(max_size=16000;max_wait_time=500):" +
"pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;" +
"shun=false;print_local_addr=true):" +
"pbcast.STATE_TRANSFER";
// "PERF(details=true)";
loopback_props="LOOPBACK:" +
"PING(timeout=2000;num_initial_members=3):" +
"MERGE2(min_interval=5000;max_interval=10000):" +
"FD_SOCK:" +
"VERIFY_SUSPECT(timeout=1500):" +
"pbcast.NAKACK(gc_lag=50;retransmit_timeout=600,800,1200,2400,4800):" +
"UNICAST(timeout=5000):" +
"pbcast.STABLE(desired_avg_gossip=20000):" +
"FRAG(frag_size=16000;down_thread=false;up_thread=false):" +
"pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;" +
"shun=false;print_local_addr=true):" +
"pbcast.STATE_TRANSFER";
for(int i=0; i < args.length; i++) {
if("-help".equals(args[i])) {
help();
return;
}
if("-jg".equals(args[i])) {
jg=true;
continue;
}
if("-loopback".equals(args[i])) {
loopback=true;
props=loopback_props;
continue;
}
if("-props".equals(args[i])) {
props=args[++i];
continue;
}
if("-debug".equals(args[i])) {
debug=true;
continue;
}
if("-cummulative".equals(args[i])) {
cummulative=true;
continue;
}
if("-busy_sleep".equals(args[i])) {
busy_sleep=true;
continue;
}
if("-yield".equals(args[i])) {
yield=true;
num_yields++;
continue;
}
if("-sleep".equals(args[i])) {
sleep_time=Long.parseLong(args[++i]);
continue;
}
if("-num_msgs".equals(args[i])) {
num_msgs=Integer.parseInt(args[++i]);
continue;
}
help();
return;
}
System.out.println("jg = " + jg +
"\nloopback = " + loopback +
"\ndebug = " + debug +
"\nsleep = " + sleep_time +
"\nbusy_sleep=" + busy_sleep +
"\nyield=" + yield +
"\nnum_yields=" + num_yields +
"\nnum_msgs = " + num_msgs +
'\n');
try {
matrix=new int[num_msgs][2];
for(int i=0; i < num_msgs; i++) {
for(int j=0; j < matrix[i].length; j++)
matrix[i][j]=0;
}
if(jg) {
channel=new JChannel(props);
channel.connect(group_name);
if(debug) {
debugger=new Debugger(channel, cummulative);
debugger.start();
}
}
else {
group_addr=InetAddress.getByName("224.0.0.36");
sock=new MulticastSocket(7777);