⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rrsettest.java

📁 DNS Java 是java实现的DNS
💻 JAVA
字号:
// -*- Java -*-//// Copyright (c) 2005, Matthew J. Rutherford <rutherfo@cs.colorado.edu>// Copyright (c) 2005, University of Colorado at Boulder// All rights reserved.// // Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are// met:// // * Redistributions of source code must retain the above copyright//   notice, this list of conditions and the following disclaimer.// // * Redistributions in binary form must reproduce the above copyright//   notice, this list of conditions and the following disclaimer in the//   documentation and/or other materials provided with the distribution.// // * Neither the name of the University of Colorado at Boulder nor the//   names of its contributors may be used to endorse or promote//   products derived from this software without specific prior written//   permission.// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.//package org.xbill.DNS;import	java.net.InetAddress;import	java.net.UnknownHostException;import	java.util.Date;import	java.util.Iterator;import	junit.framework.TestCase;import	org.xbill.DNS.ARecord;import	org.xbill.DNS.CNAMERecord;import	org.xbill.DNS.DClass;import	org.xbill.DNS.Name;import	org.xbill.DNS.RRset;import	org.xbill.DNS.Record;import	org.xbill.DNS.RRSIGRecord;import	org.xbill.DNS.TextParseException;import	org.xbill.DNS.Type;public class RRsetTest extends TestCase{    private RRset m_rs;    Name m_name, m_name2;    long m_ttl;    ARecord m_a1, m_a2;    RRSIGRecord m_s1, m_s2;    public void setUp() throws TextParseException, UnknownHostException    {	m_rs = new RRset();	m_name = Name.fromString("this.is.a.test.");	m_name2 = Name.fromString("this.is.another.test.");	m_ttl = 0xABCDL;	m_a1 = new ARecord(m_name, DClass.IN, m_ttl,			   InetAddress.getByName("192.169.232.11"));	m_a2 = new ARecord(m_name, DClass.IN, m_ttl+1,			   InetAddress.getByName("192.169.232.12"));	m_s1 = new RRSIGRecord(m_name, DClass.IN, m_ttl, Type.A, 0xF, 0xABCDEL,			       new Date(), new Date(), 0xA, m_name,			       new byte[ 0 ]);	m_s2 = new RRSIGRecord(m_name, DClass.IN, m_ttl, Type.A, 0xF, 0xABCDEL,			       new Date(), new Date(), 0xA, m_name2,			       new byte[ 0 ]);    }    public void test_ctor_0arg()    {	assertEquals(0, m_rs.size());	try {m_rs.getDClass(); fail("IllegalStateException not thrown");}	catch( IllegalStateException e ){}	try {m_rs.getType();fail("IllegalStateException not thrown");}	catch( IllegalStateException e ){}	try {m_rs.getTTL();fail("IllegalStateException not thrown");}	catch( IllegalStateException e ){}	try {m_rs.getName();fail("IllegalStateException not thrown");}	catch( IllegalStateException e ){}	try {m_rs.first();fail("IllegalStateException not thrown");}	catch( IllegalStateException e ){}	try {m_rs.toString();fail("IllegalStateException not thrown");}	catch( IllegalStateException e ){}	Iterator itr = m_rs.rrs();	assertNotNull(itr);	assertFalse(itr.hasNext());	itr = m_rs.sigs();	assertNotNull(itr);	assertFalse(itr.hasNext());    }    public void test_basics() throws TextParseException,				     UnknownHostException    {	m_rs.addRR(m_a1);	assertEquals(1, m_rs.size());	assertEquals(DClass.IN, m_rs.getDClass());	assertEquals(m_a1, m_rs.first());	assertEquals(m_name, m_rs.getName());	assertEquals(m_ttl, m_rs.getTTL());	assertEquals(Type.A, m_rs.getType());	// add it again, and make sure nothing changed	m_rs.addRR(m_a1);	assertEquals(1, m_rs.size());	assertEquals(DClass.IN, m_rs.getDClass());	assertEquals(m_a1, m_rs.first());	assertEquals(m_name, m_rs.getName());	assertEquals(m_ttl, m_rs.getTTL());	assertEquals(Type.A, m_rs.getType());	m_rs.addRR(m_a2);	assertEquals(2, m_rs.size());	assertEquals(DClass.IN, m_rs.getDClass());	Record r = m_rs.first();	assertEquals(m_a1, r);	assertEquals(m_name, m_rs.getName());	assertEquals(m_ttl, m_rs.getTTL());	assertEquals(Type.A, m_rs.getType());	Iterator itr = m_rs.rrs();	assertEquals(m_a1, itr.next());	assertEquals(m_a2, itr.next());	// make sure that it rotates	itr = m_rs.rrs();	assertEquals(m_a2, itr.next());	assertEquals(m_a1, itr.next());	itr = m_rs.rrs();	assertEquals(m_a1, itr.next());	assertEquals(m_a2, itr.next());	m_rs.deleteRR(m_a1);	assertEquals(1, m_rs.size());	assertEquals(DClass.IN, m_rs.getDClass());	assertEquals(m_a2, m_rs.first());	assertEquals(m_name, m_rs.getName());	assertEquals(m_ttl, m_rs.getTTL());	assertEquals(Type.A, m_rs.getType());	// the signature records	m_rs.addRR(m_s1);	assertEquals(1, m_rs.size());	itr = m_rs.sigs();	assertEquals(m_s1, itr.next());	assertFalse(itr.hasNext());	m_rs.addRR(m_s1);	itr = m_rs.sigs();	assertEquals(m_s1, itr.next());	assertFalse(itr.hasNext());	m_rs.addRR(m_s2);	itr = m_rs.sigs();	assertEquals(m_s1, itr.next());	assertEquals(m_s2, itr.next());	assertFalse(itr.hasNext());	m_rs.deleteRR(m_s1);	itr = m_rs.sigs();	assertEquals(m_s2, itr.next());	assertFalse(itr.hasNext());		// clear it all	m_rs.clear();	assertEquals(0, m_rs.size());	assertFalse(m_rs.rrs().hasNext());	assertFalse(m_rs.sigs().hasNext());    }    public void test_ctor_1arg()    {	m_rs.addRR(m_a1);	m_rs.addRR(m_a2);	m_rs.addRR(m_s1);	m_rs.addRR(m_s2);	RRset rs2 = new RRset( m_rs );	assertEquals(2, rs2.size());	assertEquals(m_a1, rs2.first());	Iterator itr = rs2.rrs();	assertEquals(m_a1, itr.next());	assertEquals(m_a2, itr.next());	assertFalse(itr.hasNext());		itr = rs2.sigs();	assertTrue(itr.hasNext());	assertEquals(m_s1, itr.next());	assertTrue(itr.hasNext());	assertEquals(m_s2, itr.next());	assertFalse(itr.hasNext());    }    public void test_toString()    {	m_rs.addRR(m_a1);	m_rs.addRR(m_a2);	m_rs.addRR(m_s1);	m_rs.addRR(m_s2);	String out = m_rs.toString();		assertTrue(out.indexOf(m_name.toString()) != -1);	assertTrue(out.indexOf(" IN A ") != -1);	assertTrue(out.indexOf("[192.169.232.11]") != -1);	assertTrue(out.indexOf("[192.169.232.12]") != -1);    }    public void test_addRR_invalidType() throws TextParseException    {	m_rs.addRR(m_a1);		CNAMERecord c = new CNAMERecord(m_name, DClass.IN, m_ttl, Name.fromString("an.alias."));		try {	    m_rs.addRR(c);	    fail("IllegalArgumentException not thrown");	}	catch( IllegalArgumentException e ){	}    }    public void test_addRR_invalidName() throws TextParseException, UnknownHostException    {	m_rs.addRR(m_a1);		m_a2 = new ARecord(m_name2, DClass.IN, m_ttl,			   InetAddress.getByName("192.169.232.11"));		try {	    m_rs.addRR(m_a2);	    fail("IllegalArgumentException not thrown");	}	catch( IllegalArgumentException e ){	}    }    public void test_addRR_invalidDClass() throws TextParseException, UnknownHostException    {	m_rs.addRR(m_a1);		m_a2 = new ARecord(m_name, DClass.CHAOS, m_ttl,			   InetAddress.getByName("192.169.232.11"));		try {	    m_rs.addRR(m_a2);	    fail("IllegalArgumentException not thrown");	}	catch( IllegalArgumentException e ){	}    }    public void test_TTLcalculation()    {	m_rs.addRR(m_a2);	assertEquals(m_a2.getTTL(), m_rs.getTTL());	m_rs.addRR(m_a1);	assertEquals(m_a1.getTTL(), m_rs.getTTL());	Iterator itr = m_rs.rrs();	while( itr.hasNext() ){	    Record r = (Record)itr.next();	    assertEquals( m_a1.getTTL(), r.getTTL());	}    }    public void test_Record_placement()    {	m_rs.addRR(m_a1);	m_rs.addRR(m_s1);	m_rs.addRR(m_a2);	Iterator itr = m_rs.rrs();	assertTrue(itr.hasNext());	assertEquals(m_a1, itr.next());	assertTrue(itr.hasNext());	assertEquals(m_a2, itr.next());	assertFalse(itr.hasNext());	itr = m_rs.sigs();	assertTrue(itr.hasNext());	assertEquals(m_s1, itr.next());	assertFalse(itr.hasNext());    }    public void test_noncycling_iterator()    {	m_rs.addRR(m_a1);	m_rs.addRR(m_a2);	Iterator itr = m_rs.rrs(false);	assertTrue(itr.hasNext());	assertEquals(m_a1, itr.next());	assertTrue(itr.hasNext());	assertEquals(m_a2, itr.next());	itr = m_rs.rrs(false);	assertTrue(itr.hasNext());	assertEquals(m_a1, itr.next());	assertTrue(itr.hasNext());	assertEquals(m_a2, itr.next());    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -