sendandreceivetest.java
来自「JGRoups源码」· Java 代码 · 共 169 行
JAVA
169 行
// $Id: SendAndReceiveTest.java,v 1.4 2004/07/05 14:15:04 belaban Exp $package org.jgroups.tests;import junit.framework.TestCase;import org.jgroups.JChannel;import org.jgroups.Message;/** * Tests sending and receiving of messages within the same VM. Sends N messages * and expects reception of N messages within a given time. Fails otherwise. * @author Bela Ban */public class SendAndReceiveTest extends TestCase { JChannel channel; final int NUM_MSGS=1000; final long TIMEOUT=30000; String props1="UDP(loopback=true;mcast_addr=228.8.8.8;mcast_port=27000;ip_ttl=1;" + "mcast_send_buf_size=64000;mcast_recv_buf_size=64000):" + //"PIGGYBACK(max_wait_time=100;max_size=32000):" + "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=8096;gc_lag=50;retransmit_timeout=300,600,1200,2400,4800):" + "UNICAST(timeout=600,1200,2400,4800):" + "pbcast.STABLE(desired_avg_gossip=20000):" + "FRAG(frag_size=8096;down_thread=false;up_thread=false):" + "pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;" + "shun=false;print_local_addr=true)"; String props2="UDP(loopback=false;mcast_addr=228.8.8.8;mcast_port=27000;ip_ttl=1;" + "mcast_send_buf_size=64000;mcast_recv_buf_size=64000):" + //"PIGGYBACK(max_wait_time=100;max_size=32000):" + "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=8096;gc_lag=50;retransmit_timeout=300,600,1200,2400,4800):" + "UNICAST(timeout=600,1200,2400,4800):" + "pbcast.STABLE(desired_avg_gossip=20000):" + "FRAG(frag_size=8096;down_thread=false;up_thread=false):" + "pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;" + "shun=false;print_local_addr=true)"; String props3="LOOPBACK:" + "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=8096;gc_lag=50;retransmit_timeout=300,600,1200,2400,4800):" + "UNICAST(timeout=600,1200,2400,4800):" + "pbcast.STABLE(desired_avg_gossip=20000):" + "FRAG(frag_size=8096;down_thread=false;up_thread=false):" + "pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;" + "shun=false;print_local_addr=true)"; public SendAndReceiveTest(String n) { super(n); } public void setUp(String props) { try { channel=new JChannel(props); channel.connect("test1"); } catch(Throwable t) { t.printStackTrace(System.err); fail("channel could not be created"); } } public void tearDown() { if(channel != null) { channel.close(); channel=null; } } /** * Sends NUM messages and expects NUM messages to be received. If * NUM messages have not been received after 20 seconds, the test failed. */ public void testSendAndReceiveWithDefaultUDP_Loopback() { setUp(props1); sendMessages(NUM_MSGS); int received_msgs=receiveMessages(NUM_MSGS, TIMEOUT); assertTrue(received_msgs >= NUM_MSGS); } public void testSendAndReceiveWithDefaultUDP_NoLoopback() { setUp(props2); sendMessages(NUM_MSGS); int received_msgs=receiveMessages(NUM_MSGS, TIMEOUT); assertTrue(received_msgs >= NUM_MSGS); } public void testSendAndReceiveWithLoopback() { setUp(props3); sendMessages(NUM_MSGS); int received_msgs=receiveMessages(NUM_MSGS, TIMEOUT); assertTrue(received_msgs >= NUM_MSGS); } private void sendMessages(int num) { Message msg; for(int i=0; i < num; i++) { try { msg=new Message(); channel.send(msg); System.out.print(i + " "); } catch(Throwable t) { fail("could not send message #" + i); } } } /** * Receive at least <tt>num</tt> messages. Total time should not exceed <tt>timeout</tt> * @param num * @param timeout Must be > 0 * @return */ private int receiveMessages(int num, long timeout) { int received=0; Object msg; if(timeout <= 0) timeout=5000; long start=System.currentTimeMillis(), current, wait_time; while(true) { current=System.currentTimeMillis(); wait_time=timeout - (current - start); if(wait_time <= 0) break; try { msg=channel.receive(wait_time); if(msg instanceof Message) { received++; System.out.print("+" + received + ' '); } if(received >= num) break; } catch(Throwable t) { fail("failed receiving message"); } } return received; } public static void main(String[] args) { String[] testCaseName={SendAndReceiveTest.class.getName()}; junit.textui.TestRunner.main(testCaseName); } //public static void main(String[] args)}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?