connectiontableunittest.java
来自「JGRoups源码」· Java 代码 · 共 209 行
JAVA
209 行
// $Id: ConnectionTableUnitTest.java,v 1.6 2005/09/20 14:31:48 belaban Exp $package org.jgroups.tests;import junit.framework.TestCase;import org.jgroups.Address;import org.jgroups.blocks.ConnectionTable;/** */public class ConnectionTableUnitTest extends TestCase { ConnectionTable ct1, ct2; final int port1=5555, port2=6666; public ConnectionTableUnitTest(String name) { super(name); } protected void setUp() throws Exception { super.setUp(); ct1=new ConnectionTable(port1); ct1.setUseSendQueues(false); log("address of ct1: " + ct1.getLocalAddress()); ct2=new ConnectionTable(port2); ct2.setUseSendQueues(false); log("address of ct2: " + ct2.getLocalAddress()); } public void tearDown() throws Exception { super.tearDown(); if(ct1 != null) { ct1.stop(); ct1=null; } if(ct2 != null) { ct2.stop(); ct2=null; } } public void testSetup() { assertNotSame(ct1.getLocalAddress(), ct2.getLocalAddress()); } public void testSendToNullReceiver() throws Exception { byte[] data=new byte[0]; ct1.send(null, data, 0, data.length); } public void testSendEmptyData() throws Exception { byte[] data=new byte[0]; Address myself=ct1.getLocalAddress(); ct1.send(myself, data, 0, data.length); } public void testSendNullData() throws Exception { Address myself=ct1.getLocalAddress(); ct1.send(myself, null, 0, 0); } public void testSendToSelf() throws Exception { long NUM=1000, total_time; Address myself=ct1.getLocalAddress(); MyReceiver r=new MyReceiver(ct1, NUM, false); byte[] data=new byte[] {'b', 'e', 'l', 'a'}; ct1.setReceiver(r); for(int i=0; i < NUM; i++) { ct1.send(myself, data, 0, 0); } log("sent " + NUM + " msgs"); r.waitForCompletion(); total_time=r.stop_time - r.start_time; log("number expected=" + r.getNumExpected() + ", number received=" + r.getNumReceived() + ", total time=" + total_time + " (" + (double)total_time / r.getNumReceived() + " ms/msg)"); assertEquals(r.getNumExpected(), r.getNumReceived()); } public void testSendToOther() throws Exception { long NUM=1000, total_time; Address other=ct2.getLocalAddress(); MyReceiver r=new MyReceiver(ct2, NUM, false); byte[] data=new byte[] {'b', 'e', 'l', 'a'}; ct2.setReceiver(r); for(int i=0; i < NUM; i++) { ct1.send(other, data, 0, 0); } log("sent " + NUM + " msgs"); r.waitForCompletion(); total_time=r.stop_time - r.start_time; log("number expected=" + r.getNumExpected() + ", number received=" + r.getNumReceived() + ", total time=" + total_time + " (" + (double)total_time / r.getNumReceived() + " ms/msg)"); assertEquals(r.getNumExpected(), r.getNumReceived()); } public void testSendToOtherGetResponse() throws Exception { long NUM=1000, total_time; Address other=ct2.getLocalAddress(); MyReceiver r1=new MyReceiver(ct1, NUM, false); MyReceiver r2=new MyReceiver(ct2, NUM, true); // send response byte[] data=new byte[] {'b', 'e', 'l', 'a'}; ct1.setReceiver(r1); ct2.setReceiver(r2); for(int i=0; i < NUM; i++) { ct1.send(other, data, 0, 0); } log("sent " + NUM + " msgs"); r1.waitForCompletion(); total_time=r1.stop_time - r1.start_time; log("number expected=" + r1.getNumExpected() + ", number received=" + r1.getNumReceived() + ", total time=" + total_time + " (" + (double)total_time / r1.getNumReceived() + " ms/msg)"); assertEquals(r1.getNumExpected(), r1.getNumReceived()); } void log(String msg) { System.out.println("-- [" + Thread.currentThread() + "]: " + msg); } public static void main(String[] args) { String[] testCaseName={ConnectionTableUnitTest.class.getName()}; junit.textui.TestRunner.main(testCaseName); } class MyReceiver implements ConnectionTable.Receiver { long num_expected=0, num_received=0, start_time=0, stop_time=0; boolean done=false, send_response=false; long modulo; ConnectionTable ct; MyReceiver(ConnectionTable ct, long num_expected, boolean send_response) { this.ct=ct; this.num_expected=num_expected; this.send_response=send_response; start_time=System.currentTimeMillis(); modulo=num_expected / 10; } public long getNumReceived() { return num_received; } public long getNumExpected() { return num_expected; } public void receive(Address sender, byte[] data, int offset, int length) { num_received++; if(num_received % modulo == 0) log("received msg# " + num_received); if(send_response) { if(ct != null) { try { byte[] rsp=new byte[0]; ct.send(sender, rsp, 0, 0); } catch(Exception e) { e.printStackTrace(); } } } if(num_received >= num_expected) { synchronized(this) { if(!done) { done=true; stop_time=System.currentTimeMillis(); notifyAll(); } } } } public void waitForCompletion() { synchronized(this) { while(!done) { try { wait(); } catch(InterruptedException e) { } } } } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?