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

📄 soarecordtest.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.io.IOException;import	java.net.UnknownHostException;import	java.util.Arrays;import	java.util.Random;import	junit.framework.Test;import	junit.framework.TestCase;import	junit.framework.TestSuite;public class SOARecordTest{    private final static Random m_random = new Random();    private static long randomU16()    {	return m_random.nextLong() >>> 48;    }    private static long randomU32()    {	return m_random.nextLong() >>> 32;    }    public static class Test_init extends TestCase    {	private Name m_an, m_rn, m_host, m_admin;	private long m_ttl, m_serial, m_refresh, m_retry, m_expire, m_minimum;	protected void setUp() throws TextParseException,				      UnknownHostException	{	    m_an = Name.fromString("My.Absolute.Name.");	    m_rn = Name.fromString("My.Relative.Name");	    m_host = Name.fromString("My.Host.Name.");	    m_admin = Name.fromString("My.Administrative.Name.");	    m_ttl = randomU16();	    m_serial = randomU32();	    m_refresh = randomU32();	    m_retry = randomU32();	    m_expire = randomU32();	    m_minimum = randomU32();	}		public void test_0arg() throws UnknownHostException	{	    SOARecord ar = new SOARecord();	    assertNull(ar.getName());	    assertEquals(0, ar.getType());	    assertEquals(0, ar.getDClass());	    assertEquals(0, ar.getTTL());	    assertNull(ar.getHost());	    assertNull(ar.getAdmin());	    assertEquals(0, ar.getSerial());	    assertEquals(0, ar.getRefresh());	    assertEquals(0, ar.getRetry());	    assertEquals(0, ar.getExpire());	    assertEquals(0, ar.getMinimum());	}		public void test_getObject()	{	    SOARecord ar = new SOARecord();	    Record r = ar.getObject();	    assertTrue(r instanceof SOARecord);	}		public void test_10arg()	{	    SOARecord ar = new SOARecord(m_an, DClass.IN, m_ttl,					 m_host, m_admin, m_serial, m_refresh,					 m_retry, m_expire, m_minimum);	    assertEquals(m_an, ar.getName());	    assertEquals(Type.SOA, ar.getType());	    assertEquals(DClass.IN, ar.getDClass());	    assertEquals(m_ttl, ar.getTTL());	    assertEquals(m_host, ar.getHost());	    assertEquals(m_admin, ar.getAdmin());	    assertEquals(m_serial, ar.getSerial());	    assertEquals(m_refresh, ar.getRefresh());	    assertEquals(m_retry, ar.getRetry());	    assertEquals(m_expire, ar.getExpire());	    assertEquals(m_minimum, ar.getMinimum());	}		public void test_10arg_relative_name()	{	    try {		new SOARecord(m_rn, DClass.IN, m_ttl,			      m_host, m_admin, m_serial, m_refresh,			      m_retry, m_expire, m_minimum);		fail("RelativeNameException not thrown");	    }	    catch( RelativeNameException e ){}	}		public void test_10arg_relative_host()	{	    try {		new SOARecord(m_an, DClass.IN, m_ttl,			      m_rn, m_admin, m_serial, m_refresh,			      m_retry, m_expire, m_minimum);		fail("RelativeNameException not thrown");	    }	    catch( RelativeNameException e ){}	}		public void test_10arg_relative_admin()	{	    try {		new SOARecord(m_an, DClass.IN, m_ttl,			      m_host, m_rn, m_serial, m_refresh,			      m_retry, m_expire, m_minimum);		fail("RelativeNameException not thrown");	    }	    catch( RelativeNameException e ){}	}		public void test_10arg_negative_serial()	{	    try {		new SOARecord(m_an, DClass.IN, m_ttl,			      m_host, m_admin, -1, m_refresh,			      m_retry, m_expire, m_minimum);		fail("IllegalArgumentException not thrown");	    }	    catch( IllegalArgumentException e ){}	}		public void test_10arg_toobig_serial()	{	    try {		new SOARecord(m_an, DClass.IN, m_ttl,			      m_host, m_admin, 0x100000000L, m_refresh,			      m_retry, m_expire, m_minimum);		fail("IllegalArgumentException not thrown");	    }	    catch( IllegalArgumentException e ){}	}		public void test_10arg_negative_refresh()	{	    try {		new SOARecord(m_an, DClass.IN, m_ttl,			      m_host, m_admin, m_serial, -1,			      m_retry, m_expire, m_minimum);		fail("IllegalArgumentException not thrown");	    }	    catch( IllegalArgumentException e ){}	}		public void test_10arg_toobig_refresh()	{	    try {		new SOARecord(m_an, DClass.IN, m_ttl,			      m_host, m_admin, m_serial, 0x100000000L,			      m_retry, m_expire, m_minimum);		fail("IllegalArgumentException not thrown");	    }	    catch( IllegalArgumentException e ){}	}		public void test_10arg_negative_retry()	{	    try {		new SOARecord(m_an, DClass.IN, m_ttl,			      m_host, m_admin, m_serial, m_refresh,			      -1, m_expire, m_minimum);		fail("IllegalArgumentException not thrown");	    }	    catch( IllegalArgumentException e ){}	}		public void test_10arg_toobig_retry()	{	    try {		new SOARecord(m_an, DClass.IN, m_ttl,			      m_host, m_admin, m_serial, m_refresh,			      0x100000000L, m_expire, m_minimum);		fail("IllegalArgumentException not thrown");	    }	    catch( IllegalArgumentException e ){}	}		public void test_10arg_negative_expire()	{	    try {		new SOARecord(m_an, DClass.IN, m_ttl,			      m_host, m_admin, m_serial, m_refresh,			      m_retry, -1, m_minimum);		fail("IllegalArgumentException not thrown");	    }	    catch( IllegalArgumentException e ){}	}		public void test_10arg_toobig_expire()	{	    try {		new SOARecord(m_an, DClass.IN, m_ttl,			      m_host, m_admin, m_serial, m_refresh,			      m_retry, 0x100000000L, m_minimum);		fail("IllegalArgumentException not thrown");	    }	    catch( IllegalArgumentException e ){}	}		public void test_10arg_negative_minimun()	{	    try {		new SOARecord(m_an, DClass.IN, m_ttl,			      m_host, m_admin, m_serial, m_refresh,			      m_retry, m_expire, -1);		fail("IllegalArgumentException not thrown");	    }	    catch( IllegalArgumentException e ){}	}		public void test_10arg_toobig_minimum()	{	    try {		new SOARecord(m_an, DClass.IN, m_ttl,			      m_host, m_admin, m_serial, m_refresh,			      m_retry, m_expire, 0x100000000L);		fail("IllegalArgumentException not thrown");	    }	    catch( IllegalArgumentException e ){}	}    }    public static class Test_rrFromWire extends TestCase    {	private Name m_host, m_admin;	private long m_serial, m_refresh, m_retry, m_expire, m_minimum;	protected void setUp() throws TextParseException,				      UnknownHostException	{	    m_host = Name.fromString("M.h.N.");	    m_admin = Name.fromString("M.a.n.");	    m_serial = 0xABCDEF12L;	    m_refresh = 0xCDEF1234L;	    m_retry = 0xEF123456L;	    m_expire = 0x12345678L;	    m_minimum = 0x3456789AL;	}		public void test() throws IOException	{	    byte[] raw = new byte[] {		1, 'm', 1, 'h', 1, 'n', 0, // host		1, 'm', 1, 'a', 1, 'n', 0, // admin		(byte)0xAB, (byte)0xCD, (byte)0xEF, (byte)0x12,	   // serial		(byte)0xCD, (byte)0xEF, (byte)0x12, (byte)0x34,	   // refresh		(byte)0xEF, (byte)0x12, (byte)0x34, (byte)0x56,	   // retry		(byte)0x12, (byte)0x34, (byte)0x56, (byte)0x78,	   // expire		(byte)0x34, (byte)0x56, (byte)0x78, (byte)0x9A };  // minimum	    DNSInput di = new DNSInput(raw);	    SOARecord ar = new SOARecord();	    	    ar.rrFromWire(di);	    	    assertEquals(m_host, ar.getHost());	    assertEquals(m_admin, ar.getAdmin());	    assertEquals(m_serial, ar.getSerial());	    assertEquals(m_refresh, ar.getRefresh());	    assertEquals(m_retry, ar.getRetry());	    assertEquals(m_expire, ar.getExpire());	    assertEquals(m_minimum, ar.getMinimum());	}    }    public static class Test_rdataFromString extends TestCase    {	private Name m_host, m_admin, m_origin;	private long m_serial, m_refresh, m_retry, m_expire, m_minimum;	protected void setUp() throws TextParseException,				      UnknownHostException	{	    m_origin = Name.fromString("O.");	    m_host = Name.fromString("M.h", m_origin);	    m_admin = Name.fromString("M.a.n.");	    m_serial = 0xABCDEF12L;	    m_refresh = 0xCDEF1234L;	    m_retry = 0xEF123456L;	    m_expire = 0x12345678L;	    m_minimum = 0x3456789AL;	}		public void test_valid() throws IOException	{	    Tokenizer t = new Tokenizer("M.h " + m_admin + " " +					m_serial + " " +					m_refresh + " " +					m_retry + " " +					m_expire + " " +					m_minimum);	    SOARecord ar = new SOARecord();	    	    ar.rdataFromString(t, m_origin);	    	    assertEquals(m_host, ar.getHost());	    assertEquals(m_admin, ar.getAdmin());	    assertEquals(m_serial, ar.getSerial());	    assertEquals(m_refresh, ar.getRefresh());	    assertEquals(m_retry, ar.getRetry());	    assertEquals(m_expire, ar.getExpire());	    assertEquals(m_minimum, ar.getMinimum());	}	public void test_relative_name() throws IOException	{	    Tokenizer t = new Tokenizer("M.h " + m_admin + " " +					m_serial + " " +					m_refresh + " " +					m_retry + " " +					m_expire + " " +					m_minimum);	    SOARecord ar = new SOARecord();	    	    try {		ar.rdataFromString(t, null);		fail("RelativeNameException not thrown");	    }	    catch(RelativeNameException e){}	}    }    public static class Test_rrToString extends TestCase    {	private Name m_an, m_host, m_admin;	private long m_ttl, m_serial, m_refresh, m_retry, m_expire, m_minimum;	protected void setUp() throws TextParseException	{	    m_an = Name.fromString("My.absolute.name.");	    m_ttl = 0x13A8;	    m_host = Name.fromString("M.h.N.");	    m_admin = Name.fromString("M.a.n.");	    m_serial = 0xABCDEF12L;	    m_refresh = 0xCDEF1234L;	    m_retry = 0xEF123456L;	    m_expire = 0x12345678L;	    m_minimum = 0x3456789AL;	}	public void test_singleLine()	{	    SOARecord ar = new SOARecord(m_an, DClass.IN, m_ttl,					 m_host, m_admin, m_serial, m_refresh,					 m_retry, m_expire, m_minimum);	    String exp = m_host + " " + m_admin + " " + m_serial + " " +		m_refresh + " " + m_retry + " " + m_expire + " " + m_minimum;	    String out = ar.rrToString();	    	    assertEquals(exp, out);	}	public void test_multiLine()	{	    SOARecord ar = new SOARecord(m_an, DClass.IN, m_ttl,					 m_host, m_admin, m_serial, m_refresh,					 m_retry, m_expire, m_minimum);	    String re = "^.*\\(\\n" +		"\\s*" + m_serial + "\\s*;\\s*serial\\n" + // serial		"\\s*" + m_refresh + "\\s*;\\s*refresh\\n" + // refresh		"\\s*" + m_retry + "\\s*;\\s*retry\\n" + // retry		"\\s*" + m_expire + "\\s*;\\s*expire\\n" + // expire		"\\s*" + m_minimum + "\\s*\\)\\s*;\\s*minimum$"; // minimum	    Options.set("multiline");	    String out = ar.rrToString();	    Options.unset("multiline");	    assertTrue(out.matches(re));	}    }    public static class Test_rrToWire extends TestCase    {	private Name m_an, m_host, m_admin;	private long m_ttl, m_serial, m_refresh, m_retry, m_expire, m_minimum;	protected void setUp() throws TextParseException	{	    m_an = Name.fromString("My.Abs.Name.");	    m_ttl = 0x13A8;	    m_host = Name.fromString("M.h.N.");	    m_admin = Name.fromString("M.a.n.");	    m_serial = 0xABCDEF12L;	    m_refresh = 0xCDEF1234L;	    m_retry = 0xEF123456L;	    m_expire = 0x12345678L;	    m_minimum = 0x3456789AL;	}	public void test_canonical()	{	    byte[] exp = new byte[] {		1, 'm', 1, 'h', 1, 'n', 0, // host		1, 'm', 1, 'a', 1, 'n', 0, // admin		(byte)0xAB, (byte)0xCD, (byte)0xEF, (byte)0x12,	   // serial		(byte)0xCD, (byte)0xEF, (byte)0x12, (byte)0x34,	   // refresh		(byte)0xEF, (byte)0x12, (byte)0x34, (byte)0x56,	   // retry		(byte)0x12, (byte)0x34, (byte)0x56, (byte)0x78,	   // expire		(byte)0x34, (byte)0x56, (byte)0x78, (byte)0x9A };  // minimum	    SOARecord ar = new SOARecord(m_an, DClass.IN, m_ttl,					 m_host, m_admin, m_serial, m_refresh,					 m_retry, m_expire, m_minimum);	    DNSOutput o = new DNSOutput();	    ar.rrToWire(o, null, true);	    assertTrue(Arrays.equals(exp, o.toByteArray()));	}	public void test_case_sensitive()	{	    byte[] exp = new byte[] {		1, 'M', 1, 'h', 1, 'N', 0, // host		1, 'M', 1, 'a', 1, 'n', 0, // admin		(byte)0xAB, (byte)0xCD, (byte)0xEF, (byte)0x12,	   // serial		(byte)0xCD, (byte)0xEF, (byte)0x12, (byte)0x34,	   // refresh		(byte)0xEF, (byte)0x12, (byte)0x34, (byte)0x56,	   // retry		(byte)0x12, (byte)0x34, (byte)0x56, (byte)0x78,	   // expire		(byte)0x34, (byte)0x56, (byte)0x78, (byte)0x9A };  // minimum	    SOARecord ar = new SOARecord(m_an, DClass.IN, m_ttl,					 m_host, m_admin, m_serial, m_refresh,					 m_retry, m_expire, m_minimum);	    DNSOutput o = new DNSOutput();	    ar.rrToWire(o, null, false);	    assertTrue(Arrays.equals(exp, o.toByteArray()));	}    }    public static Test suite()    {	TestSuite s = new TestSuite();	s.addTestSuite(Test_init.class);	s.addTestSuite(Test_rrFromWire.class);	s.addTestSuite(Test_rdataFromString.class);	s.addTestSuite(Test_rrToString.class);	s.addTestSuite(Test_rrToWire.class);	return s;    }}

⌨️ 快捷键说明

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