ipaddresstest.java
来自「JGRoups源码」· Java 代码 · 共 401 行
JAVA
401 行
// $Id: IpAddressTest.java,v 1.16 2006/05/16 11:14:28 belaban Exp $package org.jgroups.tests;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;import org.jgroups.stack.IpAddress;import org.jgroups.util.Util;import java.io.*;import java.net.InetAddress;import java.net.UnknownHostException;import java.util.HashMap;import java.util.HashSet;public class IpAddressTest extends TestCase { IpAddress a, b, c, d, e, f, g, h, i, j, k; public IpAddressTest(String name) { super(name); } public void setUp() throws Exception { super.setUp(); a=new IpAddress("localhost", 5555); b=new IpAddress("localhost", 5555); c=b; d=new IpAddress("localhost", 5556); e=new IpAddress("127.0.0.1", 5555); f=new IpAddress("www.ibm.com", 80); g=new IpAddress("www.ibm.com", 8080); h=new IpAddress("224.0.0.1", 5555); } public void testUnknownAddress() { try { IpAddress tmp=new IpAddress("idontknow.com", 55); fail("should throw an UnknownHostException"); } catch(UnknownHostException e1) { } } public void testEquality() throws Exception { assertEquals(a, b); assertEquals(c, b); assertEquals(a, e); assertEquals(c, e); } public void testEqualityWithDnsRoundRobin() throws UnknownHostException { IpAddress x1, x2, x3; InetAddress addr=InetAddress.getByName("127.0.0.1"); byte[] rawAddr=addr.getAddress(); InetAddress inet1=InetAddress.getByAddress("MyHost1", rawAddr); InetAddress inet2=InetAddress.getByAddress("MyHost2", rawAddr); InetAddress inet3=InetAddress.getByAddress("MyHost3", rawAddr); assertEquals(inet1, inet2); x1=new IpAddress(inet1, 5555); x2=new IpAddress(inet2, 5555); x3=new IpAddress(inet3, 5555); assertEquals(x1, x2); assertEquals(x3, x1); HashSet s=new HashSet(); s.add(x1); s.add(x2); s.add(x3); System.out.println("s=" + s); assertEquals(1, s.size()); HashMap m=new HashMap(); m.put(x1, "Bela"); m.put(x2, "Michelle"); m.put(x3, "Nicole"); assertEquals(1, m.size()); assertEquals("Nicole", m.get(x1)); } public void testInequality() throws Exception { IpAddress tmp=null; assertTrue(!a.equals(d)); assertTrue(!c.equals(d)); assertTrue(!a.equals(f)); assertTrue(!e.equals(f)); assertTrue(!f.equals(g)); assertFalse(a.equals(tmp)); } public void testSameHost() throws Exception { assertTrue(Util.sameHost(a, b)); assertTrue(Util.sameHost(a, c)); assertTrue(Util.sameHost(a, d)); assertTrue(Util.sameHost(a, e)); assertTrue(Util.sameHost(f, g)); } public void testNotSameHost() throws Exception { assertTrue(!Util.sameHost(a, f)); assertTrue(!Util.sameHost(e, f)); assertTrue(!Util.sameHost(e, null)); assertTrue(!Util.sameHost(null, null)); } public void testMcast() { assertTrue(h.isMulticastAddress()); assertTrue(!a.isMulticastAddress()); assertTrue(!e.isMulticastAddress()); assertTrue(!g.isMulticastAddress()); } public void testCompareTo() { assertEquals(0, a.compareTo(b)); assertTrue(a.compareTo(d) < 0); assertTrue(d.compareTo(a) > 0); } public void testCompareTime() { final int NUM=1000000; _testCompareTime(a, a, NUM); _testCompareTime(a, b, NUM); _testCompareTime(a, c, NUM); _testCompareTime(a, d, NUM); } private void _testCompareTime(IpAddress one, IpAddress two, int num) { int rc=-99; long start=System.currentTimeMillis(), stop; for(int x=0; x < num; x++) { rc=one.compareTo(two); } stop=System.currentTimeMillis(); long diff=stop-start; System.out.println("calling compareTo(" + one + ", " + two + ") " + num + " times took " + diff + "ms, result=" + rc); } public void testHashcode() { int hcode_a=a.hashCode(); int hcode_b=b.hashCode(); assertEquals(hcode_a, hcode_b); } public void testHashcodeTime() { int hash=-1; final int NUM=10000000; long start=System.currentTimeMillis(), stop; for(int x=0; x < NUM; x++) { hash=a.hashCode(); } stop=System.currentTimeMillis(); long diff=stop-start; System.out.println("taking the hash code of " + a + "(" + hash + ") took " + diff + "ms"); } public void testIPv6WithExternalization() throws IOException, ClassNotFoundException { InetAddress tmp=Util.getFirstNonLoopbackIPv6Address(); IpAddress ip=new IpAddress(tmp, 5555); ByteArrayOutputStream bos=new ByteArrayOutputStream(); ObjectOutputStream oos=new ObjectOutputStream(bos); byte[] buf=null; ByteArrayInputStream bis=null; ObjectInputStream ois; System.out.println("-- address is " + tmp); oos.writeObject(ip); buf=bos.toByteArray(); bis=new ByteArrayInputStream(buf); ois=new ObjectInputStream(bis); IpAddress ip2=(IpAddress)ois.readObject(); assertEquals(ip, ip2); } public void testIPv6WithStreamable() throws IOException, ClassNotFoundException { InetAddress tmp=Util.getFirstNonLoopbackIPv6Address(); IpAddress ip=new IpAddress(tmp, 5555); ByteArrayOutputStream bos=new ByteArrayOutputStream(); DataOutputStream dos=new DataOutputStream(bos); byte[] buf=null; ByteArrayInputStream bis=null; DataInputStream dis; System.out.println("-- address is " + tmp); ip.writeTo(dos); buf=bos.toByteArray(); bis=new ByteArrayInputStream(buf); dis=new DataInputStream(bis); IpAddress ip2=new IpAddress(); ip2.readFrom(dis); assertEquals(ip, ip2); } public void testExternalization() throws Exception { ByteArrayOutputStream bos=new ByteArrayOutputStream(); ObjectOutputStream oos=new ObjectOutputStream(bos); byte[] buf=null; ByteArrayInputStream bis=null; ObjectInputStream ois; IpAddress a2, b2; a.setAdditionalData(null); b.setAdditionalData("Bela Ban".getBytes()); oos.writeObject(a); oos.writeObject(b); buf=bos.toByteArray(); bis=new ByteArrayInputStream(buf); ois=new ObjectInputStream(bis); a2=(IpAddress)ois.readObject(); b2=(IpAddress)ois.readObject(); assertEquals(a, a2); assertEquals(b, b2); assertTrue(a2.getAdditionalData() == null); assertEquals("Bela Ban", new String(b2.getAdditionalData())); } public void testExternalizationAdditionalData() throws Exception { ByteArrayOutputStream bos=new ByteArrayOutputStream(); ObjectOutputStream oos=new ObjectOutputStream(bos); byte[] buf=null; ByteArrayInputStream bis=null; ObjectInputStream ois; IpAddress a2, b2, c2, d2, e2, f2, g2, h2; oos.writeObject(a); oos.writeObject(b); oos.writeObject(c); oos.writeObject(d); oos.writeObject(e); oos.writeObject(f); oos.writeObject(g); oos.writeObject(h); buf=bos.toByteArray(); bis=new ByteArrayInputStream(buf); ois=new ObjectInputStream(bis); a2=(IpAddress)ois.readObject(); b2=(IpAddress)ois.readObject(); c2=(IpAddress)ois.readObject(); d2=(IpAddress)ois.readObject(); e2=(IpAddress)ois.readObject(); f2=(IpAddress)ois.readObject(); g2=(IpAddress)ois.readObject(); h2=(IpAddress)ois.readObject(); assertEquals(b2, c2); assertEquals(a, a2); assertEquals(b, b2); assertEquals(c, c2); assertEquals(d, d2); assertEquals(e, e2); assertEquals(f, f2); assertEquals(g, g2); assertEquals(h, h2); } public void testStreamable() throws Exception { ByteArrayOutputStream bos=new ByteArrayOutputStream(); DataOutputStream oos=new DataOutputStream(bos); byte[] buf=null; ByteArrayInputStream bis=null; DataInputStream ois; IpAddress a2, b2, x, x2, y, y2; x=new IpAddress(5555); x.setAdditionalData(new byte[]{'b','e','l','a'}); y=new IpAddress(); y.setAdditionalData(new byte[]{'b','e','l','a'}); a.setAdditionalData(null); b.setAdditionalData("Bela Ban".getBytes()); a.writeTo(oos); b.writeTo(oos); x.writeTo(oos); y.writeTo(oos); buf=bos.toByteArray(); bis=new ByteArrayInputStream(buf); ois=new DataInputStream(bis); a2=new IpAddress(); a2.readFrom(ois); b2=new IpAddress(); b2.readFrom(ois); x2=new IpAddress(); x2.readFrom(ois); y2=new IpAddress(); y2.readFrom(ois); assertEquals(a, a2); assertEquals(b, b2); assertNull(a2.getAdditionalData()); assertEquals("Bela Ban", new String(b2.getAdditionalData())); assertNotNull(x2.getAdditionalData()); assertEquals(4, x2.getAdditionalData().length); assertNull(y2.getIpAddress()); assertEquals(0, y2.getPort()); assertNotNull(y2.getAdditionalData()); assertEquals(4, y2.getAdditionalData().length); } public void testStreamableAdditionalData() throws Exception { ByteArrayOutputStream bos=new ByteArrayOutputStream(); DataOutputStream oos=new DataOutputStream(bos); byte[] buf=null; ByteArrayInputStream bis=null; DataInputStream ois; IpAddress a2, b2, c2, d2, e2, f2, g2, h2; a.writeTo(oos); b.writeTo(oos); c.writeTo(oos); d.writeTo(oos); e.writeTo(oos); f.writeTo(oos); g.writeTo(oos); h.writeTo(oos); buf=bos.toByteArray(); bis=new ByteArrayInputStream(buf); ois=new DataInputStream(bis); a2=new IpAddress(); a2.readFrom(ois); b2=new IpAddress(); b2.readFrom(ois); c2=new IpAddress(); c2.readFrom(ois); d2=new IpAddress(); d2.readFrom(ois); e2=new IpAddress(); e2.readFrom(ois); f2=new IpAddress(); f2.readFrom(ois); g2=new IpAddress(); g2.readFrom(ois); h2=new IpAddress(); h2.readFrom(ois); assertEquals(b2, c2); assertEquals(a, a2); assertEquals(b, b2); assertEquals(c, c2); assertEquals(d, d2); assertEquals(e, e2); assertEquals(f, f2); assertEquals(g, g2); assertEquals(h, h2); } public static Test suite() { return new TestSuite(IpAddressTest.class); } public static void main(String[] args) { junit.textui.TestRunner.run(suite()); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?