connectiontabletest.java
来自「JGRoups源码」· Java 代码 · 共 151 行
JAVA
151 行
package org.jgroups.blocks;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.jgroups.Address;
import org.jgroups.stack.IpAddress;
import org.jgroups.util.Util;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* Tests ConnectionTable
* @author Bela Ban
* @version $Id: ConnectionTableTest.java,v 1.2 2006/09/15 12:06:43 belaban Exp $
*/
public class ConnectionTableTest extends TestCase {
private BasicConnectionTable ct1, ct2;
static InetAddress loopback_addr=null;
static byte[] data=new byte[]{'b', 'e', 'l', 'a'};
Address addr1, addr2;
int active_threads=0;
static {
try {
loopback_addr=InetAddress.getByName("127.0.0.1");
}
catch(UnknownHostException e) {
e.printStackTrace();
}
}
public ConnectionTableTest(String testName) {
super(testName);
}
protected void setUp() throws Exception {
super.setUp();
active_threads=Thread.activeCount();
System.out.println("active threads before (" + active_threads + "):\n" + Util.activeThreads());
addr1=new IpAddress(loopback_addr, 7500);
addr2=new IpAddress(loopback_addr, 8000);
}
protected void tearDown() throws Exception {
if(ct2 != null) {
ct2.stop();
ct2=null;
}
if(ct1 != null) {
ct1.stop();
ct1=null;
}
super.tearDown();
}
public void testStopConnectionTable() throws Exception {
ct1=new ConnectionTable(new DummyReceiver(), loopback_addr, null, 7500, 7000, 60000, 120000);
ct2=new ConnectionTable(new DummyReceiver(), loopback_addr, null, 8000, 8000, 60000, 120000);
_testStop(ct1, ct2);
}
public void testStopConnectionTableNIO() throws Exception {
ct1=new ConnectionTableNIO(new DummyReceiver(), loopback_addr, null, 7500, 7500, 60000, 120000, false);
ct2=new ConnectionTableNIO(new DummyReceiver(), loopback_addr, null, 8000, 8000, 60000, 120000, false);
ct1.start();
ct2.start();
_testStop(ct1, ct2);
}
private void _testStop(BasicConnectionTable table1, BasicConnectionTable table2) throws Exception {
table1.send(addr1, data, 0, data.length); // send to self
table1.send(addr2, data, 0, data.length); // send to other
table2.send(addr2, data, 0, data.length); // send to self
table2.send(addr1, data, 0, data.length); // send to other
assertEquals(2, table1.getNumConnections());
assertEquals(2, table2.getNumConnections());
table2.stop();
table1.stop();
assertEquals(0, table1.getNumConnections());
assertEquals(0, table2.getNumConnections());
// Util.sleep(1000);
int current_active_threads=Thread.activeCount();
System.out.println("active threads after (" + current_active_threads + "):\n" + Util.activeThreads());
// System.out.println("thread:\n" + dumpThreads());
assertEquals(active_threads, current_active_threads);
}
/* CAUTION: JDK 5 specific code
private String dumpThreads() {
StringBuffer sb=new StringBuffer();
ThreadMXBean bean=ManagementFactory.getThreadMXBean();
long[] ids=bean.getAllThreadIds();
ThreadInfo[] threads=bean.getThreadInfo(ids, 20);
for(int i=0; i < threads.length; i++) {
ThreadInfo info=threads[i];
if(info == null)
continue;
sb.append(info.getThreadName()).append(":\n");
StackTraceElement[] stack_trace=info.getStackTrace();
for(int j=0; j < stack_trace.length; j++) {
StackTraceElement el=stack_trace[j];
sb.append("at ").append(el.getClassName()).append(".").append(el.getMethodName());
sb.append("(").append(el.getFileName()).append(":").append(el.getLineNumber()).append(")");
sb.append("\n");
}
sb.append("\n\n");
}
return sb.toString();
}
*/
public static Test suite() {
return new TestSuite(ConnectionTableTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(ConnectionTableTest.suite());
}
static class DummyReceiver implements ConnectionTable.Receiver {
public void receive(Address sender, byte[] data, int offset, int length) {
}
}
static class DummyReceiverNIO implements ConnectionTableNIO.Receiver {
public void receive(Address sender, byte[] data, int offset, int length) {
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?