Dnsruby 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +34 -0
- data/doc/classes/Dnsruby/Classes.html +197 -0
- data/doc/classes/Dnsruby/Classes.src/M000157.html +23 -0
- data/doc/classes/Dnsruby/Classes.src/M000158.html +19 -0
- data/doc/classes/Dnsruby/CodeMapper.html +370 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000130.html +18 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000131.html +33 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000132.html +21 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000133.html +19 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000134.html +19 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000135.html +18 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000136.html +22 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000137.html +22 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000138.html +22 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000139.html +31 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000140.html +19 -0
- data/doc/classes/Dnsruby/Config.html +410 -0
- data/doc/classes/Dnsruby/Config.src/M000098.html +18 -0
- data/doc/classes/Dnsruby/Config.src/M000099.html +19 -0
- data/doc/classes/Dnsruby/Config.src/M000100.html +19 -0
- data/doc/classes/Dnsruby/Config.src/M000101.html +21 -0
- data/doc/classes/Dnsruby/Config.src/M000102.html +21 -0
- data/doc/classes/Dnsruby/Config.src/M000103.html +38 -0
- data/doc/classes/Dnsruby/Config.src/M000104.html +26 -0
- data/doc/classes/Dnsruby/Config.src/M000105.html +22 -0
- data/doc/classes/Dnsruby/Config.src/M000106.html +23 -0
- data/doc/classes/Dnsruby/Config.src/M000107.html +22 -0
- data/doc/classes/Dnsruby/Config.src/M000108.html +18 -0
- data/doc/classes/Dnsruby/DNS/DecodeError.html +111 -0
- data/doc/classes/Dnsruby/DNS/EncodeError.html +111 -0
- data/doc/classes/Dnsruby/DNS.html +469 -0
- data/doc/classes/Dnsruby/DNS.src/M000196.html +24 -0
- data/doc/classes/Dnsruby/DNS.src/M000197.html +18 -0
- data/doc/classes/Dnsruby/DNS.src/M000198.html +18 -0
- data/doc/classes/Dnsruby/DNS.src/M000199.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000200.html +19 -0
- data/doc/classes/Dnsruby/DNS.src/M000201.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000202.html +18 -0
- data/doc/classes/Dnsruby/DNS.src/M000203.html +19 -0
- data/doc/classes/Dnsruby/DNS.src/M000204.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000205.html +28 -0
- data/doc/classes/Dnsruby/DNS.src/M000206.html +19 -0
- data/doc/classes/Dnsruby/DNS.src/M000207.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000208.html +41 -0
- data/doc/classes/Dnsruby/DNS.src/M000209.html +32 -0
- data/doc/classes/Dnsruby/DNS.src/M000210.html +50 -0
- data/doc/classes/Dnsruby/DNSSEC/Algorithms.html +154 -0
- data/doc/classes/Dnsruby/DNSSEC.html +111 -0
- data/doc/classes/Dnsruby/DecodeError.html +111 -0
- data/doc/classes/Dnsruby/EncodeError.html +111 -0
- data/doc/classes/Dnsruby/FormErr.html +113 -0
- data/doc/classes/Dnsruby/Header.html +516 -0
- data/doc/classes/Dnsruby/Header.src/M000168.html +35 -0
- data/doc/classes/Dnsruby/Header.src/M000169.html +18 -0
- data/doc/classes/Dnsruby/Header.src/M000170.html +18 -0
- data/doc/classes/Dnsruby/Header.src/M000171.html +21 -0
- data/doc/classes/Dnsruby/Header.src/M000172.html +20 -0
- data/doc/classes/Dnsruby/Header.src/M000173.html +32 -0
- data/doc/classes/Dnsruby/Header.src/M000174.html +26 -0
- data/doc/classes/Dnsruby/Header.src/M000175.html +47 -0
- data/doc/classes/Dnsruby/Header.src/M000176.html +28 -0
- data/doc/classes/Dnsruby/Header.src/M000177.html +18 -0
- data/doc/classes/Dnsruby/Header.src/M000178.html +18 -0
- data/doc/classes/Dnsruby/Header.src/M000179.html +30 -0
- data/doc/classes/Dnsruby/Hosts.html +305 -0
- data/doc/classes/Dnsruby/Hosts.src/M000141.html +20 -0
- data/doc/classes/Dnsruby/Hosts.src/M000142.html +49 -0
- data/doc/classes/Dnsruby/Hosts.src/M000143.html +19 -0
- data/doc/classes/Dnsruby/Hosts.src/M000144.html +20 -0
- data/doc/classes/Dnsruby/Hosts.src/M000145.html +21 -0
- data/doc/classes/Dnsruby/Hosts.src/M000146.html +19 -0
- data/doc/classes/Dnsruby/Hosts.src/M000147.html +20 -0
- data/doc/classes/Dnsruby/Hosts.src/M000148.html +21 -0
- data/doc/classes/Dnsruby/IPv4.html +298 -0
- data/doc/classes/Dnsruby/IPv4.src/M000149.html +32 -0
- data/doc/classes/Dnsruby/IPv4.src/M000150.html +21 -0
- data/doc/classes/Dnsruby/IPv4.src/M000151.html +18 -0
- data/doc/classes/Dnsruby/IPv4.src/M000152.html +18 -0
- data/doc/classes/Dnsruby/IPv4.src/M000153.html +19 -0
- data/doc/classes/Dnsruby/IPv4.src/M000154.html +18 -0
- data/doc/classes/Dnsruby/IPv4.src/M000155.html +18 -0
- data/doc/classes/Dnsruby/IPv4.src/M000156.html +18 -0
- data/doc/classes/Dnsruby/IPv6.html +318 -0
- data/doc/classes/Dnsruby/IPv6.src/M000180.html +60 -0
- data/doc/classes/Dnsruby/IPv6.src/M000181.html +21 -0
- data/doc/classes/Dnsruby/IPv6.src/M000182.html +22 -0
- data/doc/classes/Dnsruby/IPv6.src/M000183.html +18 -0
- data/doc/classes/Dnsruby/IPv6.src/M000184.html +21 -0
- data/doc/classes/Dnsruby/IPv6.src/M000185.html +18 -0
- data/doc/classes/Dnsruby/IPv6.src/M000186.html +18 -0
- data/doc/classes/Dnsruby/IPv6.src/M000187.html +18 -0
- data/doc/classes/Dnsruby/Message.html +689 -0
- data/doc/classes/Dnsruby/Message.src/M000076.html +34 -0
- data/doc/classes/Dnsruby/Message.src/M000077.html +26 -0
- data/doc/classes/Dnsruby/Message.src/M000078.html +22 -0
- data/doc/classes/Dnsruby/Message.src/M000079.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000080.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000081.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000082.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000083.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000084.html +21 -0
- data/doc/classes/Dnsruby/Message.src/M000085.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000086.html +18 -0
- data/doc/classes/Dnsruby/Message.src/M000087.html +54 -0
- data/doc/classes/Dnsruby/Message.src/M000088.html +42 -0
- data/doc/classes/Dnsruby/Message.src/M000089.html +45 -0
- data/doc/classes/Dnsruby/MetaTypes.html +136 -0
- data/doc/classes/Dnsruby/Modes.html +171 -0
- data/doc/classes/Dnsruby/NXDomain.html +113 -0
- data/doc/classes/Dnsruby/Name/Label.html +300 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000067.html +21 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000068.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000069.html +22 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000070.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000071.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000072.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000073.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000074.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000075.html +18 -0
- data/doc/classes/Dnsruby/Name.html +357 -0
- data/doc/classes/Dnsruby/Name.src/M000057.html +28 -0
- data/doc/classes/Dnsruby/Name.src/M000058.html +20 -0
- data/doc/classes/Dnsruby/Name.src/M000059.html +18 -0
- data/doc/classes/Dnsruby/Name.src/M000060.html +18 -0
- data/doc/classes/Dnsruby/Name.src/M000061.html +21 -0
- data/doc/classes/Dnsruby/Name.src/M000062.html +19 -0
- data/doc/classes/Dnsruby/Name.src/M000064.html +22 -0
- data/doc/classes/Dnsruby/Name.src/M000065.html +18 -0
- data/doc/classes/Dnsruby/Name.src/M000066.html +20 -0
- data/doc/classes/Dnsruby/NotImp.html +113 -0
- data/doc/classes/Dnsruby/OpCode.html +146 -0
- data/doc/classes/Dnsruby/OtherResolvError.html +113 -0
- data/doc/classes/Dnsruby/QTypes.html +146 -0
- data/doc/classes/Dnsruby/Question.html +256 -0
- data/doc/classes/Dnsruby/Question.src/M000166.html +47 -0
- data/doc/classes/Dnsruby/Question.src/M000167.html +18 -0
- data/doc/classes/Dnsruby/RCode.html +211 -0
- data/doc/classes/Dnsruby/RR/ANY.html +133 -0
- data/doc/classes/Dnsruby/RR/CERT/CertificateTypes.html +169 -0
- data/doc/classes/Dnsruby/RR/CERT.html +180 -0
- data/doc/classes/Dnsruby/RR/CNAME.html +150 -0
- data/doc/classes/Dnsruby/RR/DNAME.html +150 -0
- data/doc/classes/Dnsruby/RR/DomainName.html +175 -0
- data/doc/classes/Dnsruby/RR/DomainName.src/M000051.html +22 -0
- data/doc/classes/Dnsruby/RR/Generic.html +156 -0
- data/doc/classes/Dnsruby/RR/Generic.src/M000041.html +25 -0
- data/doc/classes/Dnsruby/RR/HINFO.html +155 -0
- data/doc/classes/Dnsruby/RR/IN/A.html +199 -0
- data/doc/classes/Dnsruby/RR/IN/A.src/M000018.html +18 -0
- data/doc/classes/Dnsruby/RR/IN/A.src/M000019.html +18 -0
- data/doc/classes/Dnsruby/RR/IN/A.src/M000020.html +18 -0
- data/doc/classes/Dnsruby/RR/IN/AAAA.html +138 -0
- data/doc/classes/Dnsruby/RR/IN/AFSDB.html +145 -0
- data/doc/classes/Dnsruby/RR/IN/PX.html +143 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.html +243 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000015.html +29 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000016.html +26 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000017.html +22 -0
- data/doc/classes/Dnsruby/RR/IN/WKS.html +166 -0
- data/doc/classes/Dnsruby/RR/IN/WKS.src/M000021.html +20 -0
- data/doc/classes/Dnsruby/RR/IN.html +155 -0
- data/doc/classes/Dnsruby/RR/ISDN.html +155 -0
- data/doc/classes/Dnsruby/RR/LOC.html +395 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000025.html +32 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000026.html +23 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000027.html +25 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000028.html +21 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000029.html +20 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000030.html +23 -0
- data/doc/classes/Dnsruby/RR/MB.html +150 -0
- data/doc/classes/Dnsruby/RR/MG.html +150 -0
- data/doc/classes/Dnsruby/RR/MINFO.html +156 -0
- data/doc/classes/Dnsruby/RR/MR.html +150 -0
- data/doc/classes/Dnsruby/RR/MX.html +155 -0
- data/doc/classes/Dnsruby/RR/NAPTR.html +190 -0
- data/doc/classes/Dnsruby/RR/NS.html +150 -0
- data/doc/classes/Dnsruby/RR/NSAP.html +293 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000053.html +19 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000054.html +19 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000055.html +22 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000056.html +31 -0
- data/doc/classes/Dnsruby/RR/PTR.html +132 -0
- data/doc/classes/Dnsruby/RR/RP.html +183 -0
- data/doc/classes/Dnsruby/RR/RP.src/M000050.html +19 -0
- data/doc/classes/Dnsruby/RR/RT.html +155 -0
- data/doc/classes/Dnsruby/RR/SOA.html +230 -0
- data/doc/classes/Dnsruby/RR/SOA.src/M000039.html +24 -0
- data/doc/classes/Dnsruby/RR/SOA.src/M000040.html +27 -0
- data/doc/classes/Dnsruby/RR/SPF.html +138 -0
- data/doc/classes/Dnsruby/RR/TKEY.html +285 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000022.html +19 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000023.html +29 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000024.html +30 -0
- data/doc/classes/Dnsruby/RR/TSIG.html +416 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000042.html +22 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000043.html +71 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000044.html +34 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000045.html +37 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000046.html +31 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000047.html +34 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000048.html +22 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000049.html +29 -0
- data/doc/classes/Dnsruby/RR/TXT.html +233 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000034.html +18 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000035.html +18 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000036.html +20 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000037.html +27 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000038.html +25 -0
- data/doc/classes/Dnsruby/RR/X25.html +203 -0
- data/doc/classes/Dnsruby/RR/X25.src/M000031.html +18 -0
- data/doc/classes/Dnsruby/RR/X25.src/M000032.html +18 -0
- data/doc/classes/Dnsruby/RR/X25.src/M000033.html +22 -0
- data/doc/classes/Dnsruby/RR.html +620 -0
- data/doc/classes/Dnsruby/RR.src/M000001.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000002.html +22 -0
- data/doc/classes/Dnsruby/RR.src/M000003.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000004.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000005.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000006.html +36 -0
- data/doc/classes/Dnsruby/RR.src/M000007.html +100 -0
- data/doc/classes/Dnsruby/RR.src/M000008.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000009.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000010.html +22 -0
- data/doc/classes/Dnsruby/RR.src/M000011.html +22 -0
- data/doc/classes/Dnsruby/RR.src/M000012.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000013.html +22 -0
- data/doc/classes/Dnsruby/RR.src/M000014.html +24 -0
- data/doc/classes/Dnsruby/RRSet.html +257 -0
- data/doc/classes/Dnsruby/RRSet.src/M000159.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000160.html +44 -0
- data/doc/classes/Dnsruby/RRSet.src/M000161.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000162.html +20 -0
- data/doc/classes/Dnsruby/RRSet.src/M000163.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000164.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000165.html +18 -0
- data/doc/classes/Dnsruby/Refused.html +113 -0
- data/doc/classes/Dnsruby/Resolv.html +400 -0
- data/doc/classes/Dnsruby/Resolv.src/M000109.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000110.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000111.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000112.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000113.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000114.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000115.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000116.html +19 -0
- data/doc/classes/Dnsruby/Resolv.src/M000117.html +20 -0
- data/doc/classes/Dnsruby/Resolv.src/M000118.html +29 -0
- data/doc/classes/Dnsruby/Resolv.src/M000119.html +19 -0
- data/doc/classes/Dnsruby/Resolv.src/M000120.html +20 -0
- data/doc/classes/Dnsruby/Resolv.src/M000121.html +25 -0
- data/doc/classes/Dnsruby/ResolvError.html +111 -0
- data/doc/classes/Dnsruby/ResolvTimeout.html +111 -0
- data/doc/classes/Dnsruby/Resolver.html +807 -0
- data/doc/classes/Dnsruby/Resolver.src/M000211.html +21 -0
- data/doc/classes/Dnsruby/Resolver.src/M000212.html +37 -0
- data/doc/classes/Dnsruby/Resolver.src/M000213.html +64 -0
- data/doc/classes/Dnsruby/Resolver.src/M000214.html +23 -0
- data/doc/classes/Dnsruby/Resolver.src/M000215.html +46 -0
- data/doc/classes/Dnsruby/Resolver.src/M000216.html +21 -0
- data/doc/classes/Dnsruby/Resolver.src/M000217.html +22 -0
- data/doc/classes/Dnsruby/Resolver.src/M000218.html +18 -0
- data/doc/classes/Dnsruby/Resolver.src/M000219.html +20 -0
- data/doc/classes/Dnsruby/Resolver.src/M000220.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000221.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000222.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000223.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000224.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000225.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000226.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000227.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000228.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000229.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000230.html +19 -0
- data/doc/classes/Dnsruby/ServFail.html +113 -0
- data/doc/classes/Dnsruby/SingleResolver.html +496 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000122.html +18 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000123.html +19 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000124.html +49 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000125.html +18 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000126.html +21 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000127.html +25 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000128.html +78 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000129.html +21 -0
- data/doc/classes/Dnsruby/TheLog.html +196 -0
- data/doc/classes/Dnsruby/TheLog.src/M000188.html +20 -0
- data/doc/classes/Dnsruby/TheLog.src/M000189.html +20 -0
- data/doc/classes/Dnsruby/TheLog.src/M000190.html +20 -0
- data/doc/classes/Dnsruby/Types.html +426 -0
- data/doc/classes/Dnsruby/Update.html +368 -0
- data/doc/classes/Dnsruby/Update.src/M000191.html +32 -0
- data/doc/classes/Dnsruby/Update.src/M000192.html +37 -0
- data/doc/classes/Dnsruby/Update.src/M000193.html +32 -0
- data/doc/classes/Dnsruby/Update.src/M000194.html +41 -0
- data/doc/classes/Dnsruby/Update.src/M000195.html +34 -0
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.html +183 -0
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000097.html +19 -0
- data/doc/classes/Dnsruby/ZoneTransfer.html +248 -0
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000095.html +22 -0
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000096.html +35 -0
- data/doc/classes/Dnsruby.html +388 -0
- data/doc/created.rid +1 -0
- data/doc/files/lib/Dnsruby/Config_rb.html +101 -0
- data/doc/files/lib/Dnsruby/DNSSEC_rb.html +101 -0
- data/doc/files/lib/Dnsruby/DNS_rb.html +110 -0
- data/doc/files/lib/Dnsruby/Hosts_rb.html +108 -0
- data/doc/files/lib/Dnsruby/Resolver_rb.html +108 -0
- data/doc/files/lib/Dnsruby/SingleResolver_rb.html +108 -0
- data/doc/files/lib/Dnsruby/TheLog_rb.html +110 -0
- data/doc/files/lib/Dnsruby/code_mapper_rb.html +101 -0
- data/doc/files/lib/Dnsruby/ipv4_rb.html +101 -0
- data/doc/files/lib/Dnsruby/ipv6_rb.html +101 -0
- data/doc/files/lib/Dnsruby/message_rb.html +109 -0
- data/doc/files/lib/Dnsruby/name_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/AAAA_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/AFSDB_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/A_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/CERT_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/HINFO_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/IN_rb.html +112 -0
- data/doc/files/lib/Dnsruby/resource/ISDN_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/LOC_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/MINFO_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/MX_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/NAPTR_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/NSAP_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/OPT_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/PX_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/RP_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/RT_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/SOA_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/SPF_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/SRV_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/TKEY_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/TSIG_rb.html +110 -0
- data/doc/files/lib/Dnsruby/resource/TXT_rb.html +108 -0
- data/doc/files/lib/Dnsruby/resource/X25_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/domain_name_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/generic_rb.html +125 -0
- data/doc/files/lib/Dnsruby/resource/resource_rb.html +110 -0
- data/doc/files/lib/Dnsruby/select_thread_rb.html +111 -0
- data/doc/files/lib/Dnsruby/update_rb.html +101 -0
- data/doc/files/lib/Dnsruby/zone_transfer_rb.html +101 -0
- data/doc/files/lib/dnsruby_rb.html +118 -0
- data/doc/fr_class_index.html +102 -0
- data/doc/fr_file_index.html +68 -0
- data/doc/fr_method_index.html +256 -0
- data/doc/index.html +24 -0
- data/lib/Dnsruby/Config.rb +350 -0
- data/lib/Dnsruby/DNS.rb +253 -0
- data/lib/Dnsruby/DNSSEC.rb +29 -0
- data/lib/Dnsruby/Hosts.rb +119 -0
- data/lib/Dnsruby/Resolver.rb +618 -0
- data/lib/Dnsruby/SingleResolver.rb +312 -0
- data/lib/Dnsruby/TheLog.rb +61 -0
- data/lib/Dnsruby/code_mapper.rb +164 -0
- data/lib/Dnsruby/ipv4.rb +83 -0
- data/lib/Dnsruby/ipv6.rb +142 -0
- data/lib/Dnsruby/message.rb +819 -0
- data/lib/Dnsruby/name.rb +325 -0
- data/lib/Dnsruby/resource/A.rb +56 -0
- data/lib/Dnsruby/resource/AAAA.rb +54 -0
- data/lib/Dnsruby/resource/AFSDB.rb +68 -0
- data/lib/Dnsruby/resource/CERT.rb +89 -0
- data/lib/Dnsruby/resource/HINFO.rb +52 -0
- data/lib/Dnsruby/resource/IN.rb +69 -0
- data/lib/Dnsruby/resource/ISDN.rb +54 -0
- data/lib/Dnsruby/resource/LOC.rb +255 -0
- data/lib/Dnsruby/resource/MINFO.rb +66 -0
- data/lib/Dnsruby/resource/MX.rb +66 -0
- data/lib/Dnsruby/resource/NAPTR.rb +90 -0
- data/lib/Dnsruby/resource/NSAP.rb +172 -0
- data/lib/Dnsruby/resource/OPT.rb +153 -0
- data/lib/Dnsruby/resource/PX.rb +71 -0
- data/lib/Dnsruby/resource/RP.rb +67 -0
- data/lib/Dnsruby/resource/RT.rb +67 -0
- data/lib/Dnsruby/resource/SOA.rb +89 -0
- data/lib/Dnsruby/resource/SPF.rb +29 -0
- data/lib/Dnsruby/resource/SRV.rb +108 -0
- data/lib/Dnsruby/resource/TKEY.rb +160 -0
- data/lib/Dnsruby/resource/TSIG.rb +328 -0
- data/lib/Dnsruby/resource/TXT.rb +76 -0
- data/lib/Dnsruby/resource/X25.rb +53 -0
- data/lib/Dnsruby/resource/domain_name.rb +58 -0
- data/lib/Dnsruby/resource/generic.rb +142 -0
- data/lib/Dnsruby/resource/resource.rb +444 -0
- data/lib/Dnsruby/select_thread.rb +474 -0
- data/lib/Dnsruby/update.rb +263 -0
- data/lib/Dnsruby/zone_transfer.rb +296 -0
- data/lib/dnsruby.rb +468 -0
- data/test/custom.txt +4 -0
- data/test/resolv.conf +4 -0
- data/test/tc_axfr.rb +42 -0
- data/test/tc_dns.rb +231 -0
- data/test/tc_dnsruby.rb +42 -0
- data/test/tc_escapedchars.rb +510 -0
- data/test/tc_header.rb +104 -0
- data/test/tc_misc.rb +139 -0
- data/test/tc_name.rb +53 -0
- data/test/tc_packet.rb +158 -0
- data/test/tc_packet_unique_push.rb +102 -0
- data/test/tc_question.rb +52 -0
- data/test/tc_res_config.rb +92 -0
- data/test/tc_res_env.rb +62 -0
- data/test/tc_res_file.rb +42 -0
- data/test/tc_res_opt.rb +185 -0
- data/test/tc_resolver.rb +177 -0
- data/test/tc_rr-opt.rb +42 -0
- data/test/tc_rr-txt.rb +137 -0
- data/test/tc_rr-unknown.rb +99 -0
- data/test/tc_rr.rb +259 -0
- data/test/tc_single_resolver.rb +153 -0
- data/test/tc_soak.rb +310 -0
- data/test/tc_tcp.rb +35 -0
- data/test/tc_tkey.rb +106 -0
- data/test/tc_update.rb +215 -0
- data/test/ts_dnsruby.rb +17 -0
- data/test/ts_offline.rb +35 -0
- data/test/ts_online.rb +40 -0
- metadata +512 -0
data/test/tc_soak.rb
ADDED
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2007 Nominet UK
|
|
3
|
+
#
|
|
4
|
+
#Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
#you may not use this file except in compliance with the License.
|
|
6
|
+
#You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
#Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
#See the License for the specific language governing permissions and
|
|
14
|
+
#limitations under the License.
|
|
15
|
+
#++
|
|
16
|
+
require 'rubygems'
|
|
17
|
+
require 'test/unit'
|
|
18
|
+
require 'Dnsruby'
|
|
19
|
+
begin
|
|
20
|
+
require 'test/tc_single_resolver'
|
|
21
|
+
rescue Exception
|
|
22
|
+
require 'tc_single_resolver'
|
|
23
|
+
end
|
|
24
|
+
include Dnsruby
|
|
25
|
+
# This class tries to soak test the Dnsruby library.
|
|
26
|
+
# It can't do this very well, owing to the small number of sockets allowed to be open simultaneously.
|
|
27
|
+
# @TODO@ Future versions of dnsruby will allow random streaming over a fixed number of (cycling) random sockets,
|
|
28
|
+
# so this test can be beefed up considerably at that point.
|
|
29
|
+
# @todo@ A test DNS server running on localhost is really needed here
|
|
30
|
+
class TestSingleResolverSoak < TestSingleResolver
|
|
31
|
+
|
|
32
|
+
# def test_many_queries_single_socket
|
|
33
|
+
# @todo@ Implement this test?
|
|
34
|
+
# end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def test_many_asynchronous_queries_one_single_resolver
|
|
38
|
+
run_many_asynch_queries_test_single_res(1)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_many_asynchronous_queries_many_single_resolvers
|
|
42
|
+
run_many_asynch_queries_test_single_res(50)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def run_many_asynch_queries_test_single_res(num_resolvers)
|
|
46
|
+
q = Queue.new
|
|
47
|
+
resolvers = []
|
|
48
|
+
timed_out = 0
|
|
49
|
+
query_count = 0
|
|
50
|
+
num_resolvers.times do |n|
|
|
51
|
+
resolvers.push(SingleResolver.new)
|
|
52
|
+
resolvers[n].packet_timeout=4
|
|
53
|
+
end
|
|
54
|
+
res_pos = 0
|
|
55
|
+
start = Time.now
|
|
56
|
+
# @todo@ On windows, MAX_FILES is 256. This means that we have to limit
|
|
57
|
+
# this test while we're not using single sockets.
|
|
58
|
+
# We run four queries per iteration, so we're limited to 64 runs.
|
|
59
|
+
63.times do |i|
|
|
60
|
+
rr_count = 0
|
|
61
|
+
Rrs.each do |data|
|
|
62
|
+
rr_count+=1
|
|
63
|
+
res = resolvers[res_pos]
|
|
64
|
+
res_pos=+1
|
|
65
|
+
if (res_pos >= num_resolvers)
|
|
66
|
+
res_pos = 0
|
|
67
|
+
end
|
|
68
|
+
res.send_async(Message.new(data[:name], data[:type]), [i,rr_count], q)
|
|
69
|
+
# p "Sent #{i}, #{rr_count}, Queue #{q}"
|
|
70
|
+
query_count+=1
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
query_count.times do |i|
|
|
74
|
+
id,ret, error = q.pop
|
|
75
|
+
# p "Got response #{i}"
|
|
76
|
+
if (error.class == ResolvTimeout)
|
|
77
|
+
timed_out+=1
|
|
78
|
+
elsif (ret.class != Message)
|
|
79
|
+
p "ERROR RETURNED : #{error}"
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
stop=Time.now
|
|
84
|
+
time_taken=stop-start
|
|
85
|
+
p "Query count : #{query_count}, #{timed_out} timed out. #{time_taken} time taken"
|
|
86
|
+
assert(timed_out < query_count * 0.1, "#{timed_out} of #{query_count} timed out!")
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def test_many_threads_on_one_single_resolver_synchronous
|
|
91
|
+
# Test multi-threaded behaviour
|
|
92
|
+
# Check the header IDs to make sure they're all different
|
|
93
|
+
threads = Array.new
|
|
94
|
+
res = SingleResolver.new
|
|
95
|
+
ids = []
|
|
96
|
+
mutex = Mutex.new
|
|
97
|
+
timed_out = 0
|
|
98
|
+
query_count = 0
|
|
99
|
+
res.packet_timeout=4
|
|
100
|
+
start=Time.now
|
|
101
|
+
# Windows limits us to 256 sockets
|
|
102
|
+
num_times=250
|
|
103
|
+
if (/java/ =~ RUBY_PLATFORM)
|
|
104
|
+
# JRuby threads are native threads, so let's not go too mad!
|
|
105
|
+
num_times=50
|
|
106
|
+
end
|
|
107
|
+
num_times.times do |i|
|
|
108
|
+
threads[i] = Thread.new{
|
|
109
|
+
4.times do |j|
|
|
110
|
+
Rrs.each do |data|
|
|
111
|
+
mutex.synchronize do
|
|
112
|
+
query_count+=1
|
|
113
|
+
end
|
|
114
|
+
packet=nil
|
|
115
|
+
begin
|
|
116
|
+
packet = res.query(data[:name], data[:type])
|
|
117
|
+
rescue ResolvTimeout
|
|
118
|
+
# p "TIMEOUT for Thread #{i}, reply #{j}, type #{data[:type]}"
|
|
119
|
+
mutex.synchronize {
|
|
120
|
+
timed_out+=1
|
|
121
|
+
}
|
|
122
|
+
next
|
|
123
|
+
end
|
|
124
|
+
assert(packet)
|
|
125
|
+
ids.push(packet.header.id)
|
|
126
|
+
assert_equal(packet.question[0].qclass, 'IN', 'Class correct' )
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
}
|
|
130
|
+
end
|
|
131
|
+
threads.each do |thread|
|
|
132
|
+
thread.join
|
|
133
|
+
end
|
|
134
|
+
stop=Time.now
|
|
135
|
+
time_taken=stop-start
|
|
136
|
+
p "Query count : #{query_count}, #{timed_out} timed out. #{time_taken} time taken"
|
|
137
|
+
# check_ids(ids) # only do this if we expect all different IDs - e.g. if we stream over a single socket
|
|
138
|
+
assert(timed_out < query_count * 0.1, "#{timed_out} of #{query_count} timed out!")
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def check_ids(ids)
|
|
142
|
+
ids.sort!
|
|
143
|
+
count = 0
|
|
144
|
+
ids.each do |id|
|
|
145
|
+
count+=1
|
|
146
|
+
if (count < ids.length-1)
|
|
147
|
+
assert(ids[count+1] != id, "Two identical header ids used!")
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def test_many_threads_on_many_single_resolvers
|
|
153
|
+
# Test multi-threaded behaviour
|
|
154
|
+
# @todo@ Check the header IDs to make sure they're all different
|
|
155
|
+
threads = Array.new
|
|
156
|
+
mutex = Mutex.new
|
|
157
|
+
timed_out = 0
|
|
158
|
+
query_count = 0
|
|
159
|
+
start=Time.now
|
|
160
|
+
num_times=250
|
|
161
|
+
if (/java/ =~ RUBY_PLATFORM)
|
|
162
|
+
# JRuby threads are native threads, so let's not go too mad!
|
|
163
|
+
num_times=50
|
|
164
|
+
end
|
|
165
|
+
num_times.times do |i|
|
|
166
|
+
threads[i] = Thread.new{
|
|
167
|
+
res = SingleResolver.new
|
|
168
|
+
res.packet_timeout=4
|
|
169
|
+
4.times do |j|
|
|
170
|
+
Rrs.each do |data|
|
|
171
|
+
mutex.synchronize do
|
|
172
|
+
query_count+=1
|
|
173
|
+
end
|
|
174
|
+
q = Queue.new
|
|
175
|
+
res.send_async(Message.new(data[:name], data[:type]), [i,j], q)
|
|
176
|
+
id, packet, error = q.pop
|
|
177
|
+
if (error.class == ResolvTimeout)
|
|
178
|
+
# p "TIMEOUT for Thread #{i}, reply #{j}, type #{data[:type]}"
|
|
179
|
+
mutex.synchronize {
|
|
180
|
+
timed_out+=1
|
|
181
|
+
}
|
|
182
|
+
next
|
|
183
|
+
elsif (packet.class!=Message)
|
|
184
|
+
p "ERROR! #{error}"
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# p packet.to_s
|
|
188
|
+
assert(packet)
|
|
189
|
+
assert_equal(packet.question[0].qclass, 'IN', 'Class correct' )
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
}
|
|
193
|
+
end
|
|
194
|
+
threads.each do |thread|
|
|
195
|
+
thread.join
|
|
196
|
+
end
|
|
197
|
+
stop=Time.now
|
|
198
|
+
time_taken=stop-start
|
|
199
|
+
p "Query count : #{query_count}, #{timed_out} timed out. #{time_taken} time taken"
|
|
200
|
+
assert(timed_out < query_count * 0.1, "#{timed_out} of #{query_count} timed out!")
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
def test_continuous_queries_asynch_single_res
|
|
204
|
+
# Have two threads looping, with one sending, and one receiving queries.
|
|
205
|
+
# Never exceed more than 250 concurrent queries, but make sure they're always running.
|
|
206
|
+
num_loops = 2000
|
|
207
|
+
num_sent = 0
|
|
208
|
+
q = Queue.new
|
|
209
|
+
timed_out = 0
|
|
210
|
+
mutex = Mutex.new
|
|
211
|
+
start = Time.now
|
|
212
|
+
num_in_progress = 0
|
|
213
|
+
sender = Thread.new{
|
|
214
|
+
res = SingleResolver.new
|
|
215
|
+
res.packet_timeout=5
|
|
216
|
+
# On windows, MAX_FILES is 256. This means that we have to limit
|
|
217
|
+
# this test while we're not using single sockets.
|
|
218
|
+
# We run four queries per iteration, so we're limited to 64 runs.
|
|
219
|
+
num_loops.times do |i|
|
|
220
|
+
rr_count = 0
|
|
221
|
+
Rrs.each do |data|
|
|
222
|
+
rr_count+=1
|
|
223
|
+
while (mutex.synchronize{num_in_progress> 250}) do
|
|
224
|
+
sleep(0.01)
|
|
225
|
+
end
|
|
226
|
+
res.send_async(Message.new(data[:name], data[:type]), [i,rr_count], q)
|
|
227
|
+
num_sent+=1
|
|
228
|
+
mutex.synchronize {
|
|
229
|
+
num_in_progress+=1
|
|
230
|
+
}
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
}
|
|
235
|
+
receiver = Thread.new{
|
|
236
|
+
(num_loops*4).times do |i|
|
|
237
|
+
id,ret, error = q.pop
|
|
238
|
+
mutex.synchronize {
|
|
239
|
+
num_in_progress-=1
|
|
240
|
+
}
|
|
241
|
+
if (error.class == ResolvTimeout)
|
|
242
|
+
timed_out+=1
|
|
243
|
+
# p "Number #{i} timed out!"
|
|
244
|
+
elsif (ret.class != Message)
|
|
245
|
+
TheLog.debug("tc_single_resolver : Query #{i} ERROR RETURNED : #{error.class}, #{error}")
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
}
|
|
249
|
+
sender.join
|
|
250
|
+
receiver.join
|
|
251
|
+
assert(num_in_progress==0)
|
|
252
|
+
stop=Time.now
|
|
253
|
+
time_taken=stop-start
|
|
254
|
+
p "Query count : #{num_sent}, #{timed_out} timed out. #{time_taken} time taken"
|
|
255
|
+
assert(timed_out < num_sent * 0.1, "#{timed_out} of #{num_sent} timed out!")
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
def test_continuous_queries_asynch_resolver
|
|
259
|
+
# Have two threads looping, with one sending, and one receiving queries.
|
|
260
|
+
# Never exceed more than 250 concurrent queries, but make sure they're always running.
|
|
261
|
+
num_loops = 1000
|
|
262
|
+
num_sent = 0
|
|
263
|
+
q = Queue.new
|
|
264
|
+
timed_out = 0
|
|
265
|
+
mutex = Mutex.new
|
|
266
|
+
start = Time.now
|
|
267
|
+
num_in_progress = 0
|
|
268
|
+
sender = Thread.new{
|
|
269
|
+
res = Resolver.new
|
|
270
|
+
# On windows, MAX_FILES is 256. This means that we have to limit
|
|
271
|
+
# this test while we're not using single sockets.
|
|
272
|
+
# We run four queries per iteration, so we're limited to 64 runs.
|
|
273
|
+
num_loops.times do |i|
|
|
274
|
+
while (mutex.synchronize{num_in_progress> 50}) do # One query has several sockets in Resolver
|
|
275
|
+
sleep(0.01)
|
|
276
|
+
end
|
|
277
|
+
res.send_async(Message.new("example.com", Types.A), [i,1], q)
|
|
278
|
+
num_sent+=1
|
|
279
|
+
mutex.synchronize {
|
|
280
|
+
num_in_progress+=1
|
|
281
|
+
}
|
|
282
|
+
end
|
|
283
|
+
}
|
|
284
|
+
error_count=0
|
|
285
|
+
receiver = Thread.new{
|
|
286
|
+
(num_loops).times do |i|
|
|
287
|
+
id,ret, error = q.pop
|
|
288
|
+
mutex.synchronize {
|
|
289
|
+
num_in_progress-=1
|
|
290
|
+
}
|
|
291
|
+
if (error.class == ResolvTimeout)
|
|
292
|
+
timed_out+=1
|
|
293
|
+
# p "Number #{i} timed out!"
|
|
294
|
+
elsif (ret.class != Message)
|
|
295
|
+
error_count+=1
|
|
296
|
+
TheLog.error("tc_single_resolver : Query #{i} ERROR RETURNED : #{error.class}, #{error}")
|
|
297
|
+
end
|
|
298
|
+
end
|
|
299
|
+
}
|
|
300
|
+
sender.join
|
|
301
|
+
receiver.join
|
|
302
|
+
assert(num_in_progress==0)
|
|
303
|
+
stop=Time.now
|
|
304
|
+
time_taken=stop-start
|
|
305
|
+
p "Query count : #{num_sent}, #{timed_out} timed out, #{error_count} other errors. #{time_taken} time taken"
|
|
306
|
+
assert(timed_out < num_sent * 0.1, "#{timed_out} of #{num_sent} timed out!")
|
|
307
|
+
assert(error_count == 0)
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
end
|
data/test/tc_tcp.rb
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2007 Nominet UK
|
|
3
|
+
#
|
|
4
|
+
#Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
#you may not use this file except in compliance with the License.
|
|
6
|
+
#You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
#Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
#See the License for the specific language governing permissions and
|
|
14
|
+
#limitations under the License.
|
|
15
|
+
#++
|
|
16
|
+
require 'rubygems'
|
|
17
|
+
require 'test/unit'
|
|
18
|
+
require 'Dnsruby'
|
|
19
|
+
class TestTcp < Test::Unit::TestCase
|
|
20
|
+
def test_TCP
|
|
21
|
+
res = Dnsruby::Resolver.new()
|
|
22
|
+
res.use_tcp = true
|
|
23
|
+
ret=res.query("example.com")
|
|
24
|
+
assert(ret.is_a?(Dnsruby::Message))
|
|
25
|
+
end
|
|
26
|
+
def test_TCP_port
|
|
27
|
+
#@TODO@ Need a test server so we can tell what port this message was actually sent on!
|
|
28
|
+
res = Dnsruby::Resolver.new()
|
|
29
|
+
res.use_tcp = true
|
|
30
|
+
res.src_port=5379
|
|
31
|
+
ret=res.query("example.com")
|
|
32
|
+
assert(ret.is_a?(Dnsruby::Message))
|
|
33
|
+
end
|
|
34
|
+
#@TODO@ Check stuff like persistent sockets
|
|
35
|
+
end
|
data/test/tc_tkey.rb
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2007 Nominet UK
|
|
3
|
+
#
|
|
4
|
+
#Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
#you may not use this file except in compliance with the License.
|
|
6
|
+
#You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
#Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
#See the License for the specific language governing permissions and
|
|
14
|
+
#limitations under the License.
|
|
15
|
+
#++
|
|
16
|
+
require 'rubygems'
|
|
17
|
+
require 'test/unit'
|
|
18
|
+
require 'dnsruby'
|
|
19
|
+
require "digest/md5"
|
|
20
|
+
class TestTKey < Test::Unit::TestCase
|
|
21
|
+
def is_empty(string)
|
|
22
|
+
return (string == "; no data" || string == "; rdlength = 0")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_tkey
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
#------------------------------------------------------------------------------
|
|
29
|
+
# Canned data.
|
|
30
|
+
#------------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
zone = "example.com"
|
|
33
|
+
name = "123456789-test"
|
|
34
|
+
klass = "IN"
|
|
35
|
+
type = Dnsruby::Types.TKEY
|
|
36
|
+
algorithm = "fake.algorithm.example.com"
|
|
37
|
+
key = "fake key"
|
|
38
|
+
inception = 100000 # use a strange fixed inception time to give a fixed
|
|
39
|
+
# checksum
|
|
40
|
+
expiration = inception + 24*60*60
|
|
41
|
+
|
|
42
|
+
rr = nil
|
|
43
|
+
|
|
44
|
+
#------------------------------------------------------------------------------
|
|
45
|
+
# Packet creation.
|
|
46
|
+
#------------------------------------------------------------------------------
|
|
47
|
+
|
|
48
|
+
rr = Dnsruby::RR.create(
|
|
49
|
+
:name => name,
|
|
50
|
+
:type => "TKEY",
|
|
51
|
+
:ttl => 0,
|
|
52
|
+
:klass => "ANY",
|
|
53
|
+
:algorithm => algorithm,
|
|
54
|
+
:inception => inception,
|
|
55
|
+
:expiration => expiration,
|
|
56
|
+
:mode => 3, # GSSAPI
|
|
57
|
+
:key => "fake key",
|
|
58
|
+
:other_data => ""
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
packet = Dnsruby::Message.new(name, Dnsruby::Types.TKEY, "IN")
|
|
62
|
+
packet.add_answer(rr)
|
|
63
|
+
|
|
64
|
+
z = (packet.zone)[0]
|
|
65
|
+
|
|
66
|
+
assert(packet, 'new() returned packet') #2
|
|
67
|
+
assert_equal(Dnsruby::OpCode.QUERY, packet.header.opcode, 'header opcode correct') #3
|
|
68
|
+
assert_equal(name, z.zname.to_s, 'zname correct') #4
|
|
69
|
+
assert_equal(Dnsruby::Classes.IN, z.zclass, 'zclass correct') #5
|
|
70
|
+
assert_equal(Dnsruby::Types.TKEY, z.ztype, 'ztype correct') #6
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_tsig
|
|
76
|
+
|
|
77
|
+
name="example.com."
|
|
78
|
+
key = "1234"
|
|
79
|
+
print key.to_s + "\n"
|
|
80
|
+
tsig = Dnsruby::RR.create({
|
|
81
|
+
:name => name,
|
|
82
|
+
:type => "TSIG",
|
|
83
|
+
:ttl => 0,
|
|
84
|
+
:klass => "ANY",
|
|
85
|
+
:algorithm => "HMAC-MD5.SIG-ALG.REG.INT.",
|
|
86
|
+
:time_signed => 1189686346,
|
|
87
|
+
:fudge => 300,
|
|
88
|
+
:key => key,
|
|
89
|
+
:error => 0
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
message = Dnsruby::Message.new
|
|
94
|
+
message.header.id=(1234)
|
|
95
|
+
tsig.apply(message)
|
|
96
|
+
|
|
97
|
+
mac_string = Base64.encode64(message.additional[0].mac)
|
|
98
|
+
print mac_string + "\n"
|
|
99
|
+
|
|
100
|
+
assert_equal("S8w22c0nlOhC9wNwwHPY7g==", mac_string, "MAC wrong")
|
|
101
|
+
|
|
102
|
+
res = Dnsruby::Resolver.new
|
|
103
|
+
response = res.send_message(message)
|
|
104
|
+
print response+"\n"
|
|
105
|
+
end
|
|
106
|
+
end
|
data/test/tc_update.rb
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2007 Nominet UK
|
|
3
|
+
#
|
|
4
|
+
#Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
#you may not use this file except in compliance with the License.
|
|
6
|
+
#You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
#Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
#See the License for the specific language governing permissions and
|
|
14
|
+
#limitations under the License.
|
|
15
|
+
#++
|
|
16
|
+
require 'rubygems'
|
|
17
|
+
require 'test/unit'
|
|
18
|
+
require 'dnsruby'
|
|
19
|
+
include Dnsruby
|
|
20
|
+
class TestUpdate < Test::Unit::TestCase
|
|
21
|
+
def is_empty(string)
|
|
22
|
+
return true if string == nil || string.length == 0
|
|
23
|
+
|
|
24
|
+
return (string == "; no data" || string == "; rdlength = 0");
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_update
|
|
28
|
+
#------------------------------------------------------------------------------
|
|
29
|
+
# Canned data.
|
|
30
|
+
#------------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
zone = "example.com";
|
|
33
|
+
name = "foo.example.com";
|
|
34
|
+
klass = "HS";
|
|
35
|
+
klass2 = Classes.CH;
|
|
36
|
+
type = Types.A;
|
|
37
|
+
ttl = 43200;
|
|
38
|
+
rdata = "10.1.2.3";
|
|
39
|
+
rr = nil;
|
|
40
|
+
|
|
41
|
+
#------------------------------------------------------------------------------
|
|
42
|
+
# Packet creation.
|
|
43
|
+
#------------------------------------------------------------------------------
|
|
44
|
+
|
|
45
|
+
update = Dnsruby::Update.new(zone, klass);
|
|
46
|
+
z = (update.zone)[0];
|
|
47
|
+
|
|
48
|
+
assert(update, 'new() returned packet'); #2
|
|
49
|
+
assert_equal(update.header.opcode, OpCode.UPDATE, 'header opcode correct'); #3
|
|
50
|
+
assert_equal(z.zname.to_s, zone, 'zname correct'); #4
|
|
51
|
+
assert_equal(z.zclass.to_s, klass, 'zclass correct'); #5
|
|
52
|
+
assert_equal(z.ztype, Types.SOA, 'ztype correct'); #6
|
|
53
|
+
|
|
54
|
+
#------------------------------------------------------------------------------
|
|
55
|
+
# RRset exists (value-independent).
|
|
56
|
+
#------------------------------------------------------------------------------
|
|
57
|
+
|
|
58
|
+
rr = update.present(name, type);
|
|
59
|
+
|
|
60
|
+
assert(rr, 'yxrrset() returned RR'); #7
|
|
61
|
+
assert_equal(name, rr.name.to_s, 'yxrrset - right name'); #8
|
|
62
|
+
assert_equal(0, rr.ttl, 'yxrrset - right TTL'); #9
|
|
63
|
+
assert_equal('ANY', rr.klass.string, 'yxrrset - right class'); #10
|
|
64
|
+
assert_equal(type, rr.type, 'yxrrset - right type'); #11
|
|
65
|
+
assert(is_empty(rr.rdata), "yxrrset - data empty (#{rr.rdata})"); #12
|
|
66
|
+
|
|
67
|
+
rr = nil
|
|
68
|
+
|
|
69
|
+
#------------------------------------------------------------------------------
|
|
70
|
+
# RRset exists (value-dependent).
|
|
71
|
+
#------------------------------------------------------------------------------
|
|
72
|
+
|
|
73
|
+
rr = update.present(name, type, rdata, klass);
|
|
74
|
+
|
|
75
|
+
assert(rr, 'yxrrset() returned RR'); #13
|
|
76
|
+
assert_equal(name, rr.name.to_s, 'yxrrset - right name'); #14
|
|
77
|
+
assert_equal(0, rr.ttl, 'yxrrset - right TTL'); #15
|
|
78
|
+
assert_equal(klass, rr.klass.string, 'yxrrset - right class'); #16
|
|
79
|
+
assert_equal(type, rr.type, 'yxrrset - right type'); #17
|
|
80
|
+
assert_equal(rdata, rr.rdata, 'yxrrset - right data'); #18
|
|
81
|
+
|
|
82
|
+
rr=nil
|
|
83
|
+
|
|
84
|
+
#------------------------------------------------------------------------------
|
|
85
|
+
# RRset does not exist.
|
|
86
|
+
#------------------------------------------------------------------------------
|
|
87
|
+
|
|
88
|
+
rr = update.absent(name, type);
|
|
89
|
+
|
|
90
|
+
assert(rr, 'nxrrset() returned RR'); #19
|
|
91
|
+
assert_equal(name, rr.name.to_s, 'nxrrset - right name'); #20
|
|
92
|
+
assert_equal(0, rr.ttl, 'nxrrset - right ttl'); #21
|
|
93
|
+
assert_equal('NONE', rr.klass.string, 'nxrrset - right class'); #22
|
|
94
|
+
assert_equal(type, rr.type, 'nxrrset - right type'); #23
|
|
95
|
+
assert(is_empty(rr.rdata), 'nxrrset - data empty'); #24
|
|
96
|
+
|
|
97
|
+
rr = nil
|
|
98
|
+
|
|
99
|
+
#------------------------------------------------------------------------------
|
|
100
|
+
# Name is in use.
|
|
101
|
+
#------------------------------------------------------------------------------
|
|
102
|
+
|
|
103
|
+
rr = update.present(name);
|
|
104
|
+
|
|
105
|
+
assert(rr, 'yxdomain() returned RR'); #25
|
|
106
|
+
assert_equal(rr.name.to_s, name, 'yxdomain - right name'); #26
|
|
107
|
+
assert_equal(rr.ttl, 0, 'yxdomain - right ttl'); #27
|
|
108
|
+
assert_equal(rr.klass.string, 'ANY', 'yxdomain - right class'); #28
|
|
109
|
+
assert_equal(rr.type.string, 'ANY', 'yxdomain - right type'); #29
|
|
110
|
+
assert(is_empty(rr.rdata), 'yxdomain - data empty'); #30
|
|
111
|
+
|
|
112
|
+
rr = nil
|
|
113
|
+
|
|
114
|
+
#------------------------------------------------------------------------------
|
|
115
|
+
# Name is not in use. (No Class)
|
|
116
|
+
#------------------------------------------------------------------------------
|
|
117
|
+
|
|
118
|
+
rr = update.absent(name);
|
|
119
|
+
|
|
120
|
+
assert(rr, 'nxdomain() returned RR'); #31
|
|
121
|
+
assert_equal(rr.name.to_s, name, 'nxdomain - right name'); #32
|
|
122
|
+
assert_equal(rr.ttl, 0, 'nxdomain - right ttl'); #33
|
|
123
|
+
assert_equal(rr.klass.string, 'NONE', 'nxdomain - right class'); #34
|
|
124
|
+
assert_equal(rr.type.string, 'ANY', 'nxdomain - right type'); #35
|
|
125
|
+
assert(is_empty(rr.rdata), 'nxdomain - data empty'); #36
|
|
126
|
+
|
|
127
|
+
rr = nil
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
#------------------------------------------------------------------------------
|
|
132
|
+
# Add to an RRset.
|
|
133
|
+
#------------------------------------------------------------------------------
|
|
134
|
+
|
|
135
|
+
rr = update.add(name, type, ttl, rdata);
|
|
136
|
+
|
|
137
|
+
assert(rr, 'rr_add() returned RR'); #37
|
|
138
|
+
assert_equal(rr.name.to_s, name, 'rr_add - right name'); #38
|
|
139
|
+
assert_equal(rr.ttl, ttl, 'rr_add - right ttl'); #39
|
|
140
|
+
assert_equal(rr.klass, klass, 'rr_add - right class'); #40
|
|
141
|
+
assert_equal(rr.type, type, 'rr_add - right type'); #41
|
|
142
|
+
assert_equal(rr.rdata, rdata, 'rr_add - right data'); #42
|
|
143
|
+
|
|
144
|
+
rr = nil
|
|
145
|
+
|
|
146
|
+
#------------------------------------------------------------------------------
|
|
147
|
+
# Delete an RRset.
|
|
148
|
+
#------------------------------------------------------------------------------
|
|
149
|
+
|
|
150
|
+
rr = update.delete(name, type);
|
|
151
|
+
|
|
152
|
+
assert(rr, 'rr_del() returned RR'); #43
|
|
153
|
+
assert_equal(name, rr.name.to_s, 'rr_del - right name'); #44
|
|
154
|
+
assert_equal(0, rr.ttl, 'rr_del - right ttl'); #45
|
|
155
|
+
assert_equal('ANY', rr.klass.string, 'rr_del - right class'); #46
|
|
156
|
+
assert_equal(type, rr.type, 'rr_del - right type'); #47
|
|
157
|
+
assert(is_empty(rr.rdata), 'rr_del - data empty'); #48
|
|
158
|
+
|
|
159
|
+
rr = nil
|
|
160
|
+
|
|
161
|
+
#------------------------------------------------------------------------------
|
|
162
|
+
# Delete All RRsets From A Name.
|
|
163
|
+
#------------------------------------------------------------------------------
|
|
164
|
+
|
|
165
|
+
rr = update.delete(name);
|
|
166
|
+
|
|
167
|
+
assert(rr, 'rr_del() returned RR'); #49
|
|
168
|
+
assert_equal(name, rr.name.to_s, 'rr_del - right name'); #50
|
|
169
|
+
assert_equal(0, rr.ttl, 'rr_del - right ttl'); #51
|
|
170
|
+
assert_equal(Classes.ANY, rr.klass, 'rr_del - right class'); #52
|
|
171
|
+
assert_equal(Classes.ANY, rr.type, 'rr_del - right type'); #53
|
|
172
|
+
assert(is_empty(rr.rdata), 'rr_del - data empty'); #54
|
|
173
|
+
|
|
174
|
+
rr = nil
|
|
175
|
+
|
|
176
|
+
#------------------------------------------------------------------------------
|
|
177
|
+
# Delete An RR From An RRset.
|
|
178
|
+
#------------------------------------------------------------------------------
|
|
179
|
+
|
|
180
|
+
rr = update.delete(name, type, rdata);
|
|
181
|
+
|
|
182
|
+
assert(rr, 'rr_del() returned RR'); #55
|
|
183
|
+
assert_equal(name, rr.name.to_s, 'rr_del - right name'); #56
|
|
184
|
+
assert_equal(0, rr.ttl, 'rr_del - right ttl'); #57
|
|
185
|
+
assert_equal('NONE', rr.klass.string, 'rr_del - right class'); #58
|
|
186
|
+
assert_equal(type, rr.type, 'rr_del - right type'); #59
|
|
187
|
+
assert_equal(rdata, rr.rdata, 'rr_del - right data'); #60
|
|
188
|
+
|
|
189
|
+
rr = nil
|
|
190
|
+
|
|
191
|
+
#------------------------------------------------------------------------------
|
|
192
|
+
# Make sure RRs in an update packet have the same class as the zone, unless
|
|
193
|
+
# the class is NONE or ANY.
|
|
194
|
+
#------------------------------------------------------------------------------
|
|
195
|
+
|
|
196
|
+
update = Dnsruby::Update.new(zone, klass);
|
|
197
|
+
assert(update, 'packet created'); #61
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
update.present(name, type, rdata);
|
|
201
|
+
|
|
202
|
+
update.present(name, type, rdata);
|
|
203
|
+
|
|
204
|
+
update.present(name, type);
|
|
205
|
+
|
|
206
|
+
update.absent(name, type);
|
|
207
|
+
|
|
208
|
+
pre = update.pre;
|
|
209
|
+
|
|
210
|
+
assert_equal(3, pre.size, 'pushed inserted correctly'); #62
|
|
211
|
+
assert_equal(klass, pre[0].klass.string, 'first class right'); #63
|
|
212
|
+
assert_equal(Classes.ANY, pre[1].klass, 'third class right'); #65
|
|
213
|
+
assert_equal(Classes.NONE, pre[2].klass, 'forth class right'); #66
|
|
214
|
+
end
|
|
215
|
+
end
|
data/test/ts_dnsruby.rb
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2007 Nominet UK
|
|
3
|
+
#
|
|
4
|
+
#Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
#you may not use this file except in compliance with the License.
|
|
6
|
+
#You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
#Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
#See the License for the specific language governing permissions and
|
|
14
|
+
#limitations under the License.
|
|
15
|
+
#++
|
|
16
|
+
require "test/ts_online.rb"
|
|
17
|
+
require "test/ts_offline.rb"
|