pNet-DNS 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +68 -0
- data/lib/Net/DNS.rb +879 -0
- data/lib/Net/DNS/Header.rb +303 -0
- data/lib/Net/DNS/Nameserver.rb +601 -0
- data/lib/Net/DNS/Packet.rb +851 -0
- data/lib/Net/DNS/Question.rb +117 -0
- data/lib/Net/DNS/RR.rb +630 -0
- data/lib/Net/DNS/RR/A.rb +103 -0
- data/lib/Net/DNS/RR/AAAA.rb +147 -0
- data/lib/Net/DNS/RR/AFSDB.rb +114 -0
- data/lib/Net/DNS/RR/CERT.rb +191 -0
- data/lib/Net/DNS/RR/CNAME.rb +89 -0
- data/lib/Net/DNS/RR/DNAME.rb +84 -0
- data/lib/Net/DNS/RR/EID.rb +70 -0
- data/lib/Net/DNS/RR/HINFO.rb +108 -0
- data/lib/Net/DNS/RR/ISDN.rb +118 -0
- data/lib/Net/DNS/RR/LOC.rb +341 -0
- data/lib/Net/DNS/RR/MB.rb +92 -0
- data/lib/Net/DNS/RR/MG.rb +96 -0
- data/lib/Net/DNS/RR/MINFO.rb +109 -0
- data/lib/Net/DNS/RR/MR.rb +92 -0
- data/lib/Net/DNS/RR/MX.rb +124 -0
- data/lib/Net/DNS/RR/NAPTR.rb +182 -0
- data/lib/Net/DNS/RR/NIMLOC.rb +70 -0
- data/lib/Net/DNS/RR/NS.rb +100 -0
- data/lib/Net/DNS/RR/NSAP.rb +273 -0
- data/lib/Net/DNS/RR/NULL.rb +68 -0
- data/lib/Net/DNS/RR/OPT.rb +251 -0
- data/lib/Net/DNS/RR/PTR.rb +93 -0
- data/lib/Net/DNS/RR/PX.rb +131 -0
- data/lib/Net/DNS/RR/RP.rb +108 -0
- data/lib/Net/DNS/RR/RT.rb +115 -0
- data/lib/Net/DNS/RR/SOA.rb +195 -0
- data/lib/Net/DNS/RR/SPF.rb +46 -0
- data/lib/Net/DNS/RR/SRV.rb +153 -0
- data/lib/Net/DNS/RR/SSHFP.rb +190 -0
- data/lib/Net/DNS/RR/TKEY.rb +219 -0
- data/lib/Net/DNS/RR/TSIG.rb +358 -0
- data/lib/Net/DNS/RR/TXT.rb +162 -0
- data/lib/Net/DNS/RR/UNKNOWN.rb +76 -0
- data/lib/Net/DNS/RR/X25.rb +90 -0
- data/lib/Net/DNS/Resolver.rb +2090 -0
- data/lib/Net/DNS/Resolver/Recurse.rb +478 -0
- data/lib/Net/DNS/Update.rb +189 -0
- data/test/custom.txt +4 -0
- data/test/resolv.conf +4 -0
- data/test/tc_escapedchars.rb +498 -0
- data/test/tc_header.rb +91 -0
- data/test/tc_inet6.rb +169 -0
- data/test/tc_misc.rb +137 -0
- data/test/tc_online.rb +236 -0
- data/test/tc_packet.rb +174 -0
- data/test/tc_packet_unique_push.rb +126 -0
- data/test/tc_question.rb +49 -0
- data/test/tc_recurse.rb +69 -0
- data/test/tc_res_env.rb +59 -0
- data/test/tc_res_file.rb +55 -0
- data/test/tc_res_opt.rb +135 -0
- data/test/tc_resolver.rb +102 -0
- data/test/tc_rr-opt.rb +40 -0
- data/test/tc_rr-rrsort.rb +116 -0
- data/test/tc_rr-txt.rb +138 -0
- data/test/tc_rr-unknown.rb +95 -0
- data/test/tc_rr.rb +246 -0
- data/test/tc_tcp.rb +34 -0
- data/test/tc_tkey.rb +115 -0
- data/test/tc_update.rb +226 -0
- data/test/ts_netdns.rb +17 -0
- data/test/ts_offline.rb +32 -0
- data/test/ts_online.rb +33 -0
- metadata +119 -0
data/test/tc_res_file.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
# The contents of this file are subject to the Mozilla
|
2
|
+
# Public Licence Version 1.1 (the "Licence"); you may
|
3
|
+
# not use this file except in compliance with the
|
4
|
+
# Licence. You may obtain a copy of the Licence at
|
5
|
+
# http://www.mozilla.org/MPL
|
6
|
+
# Software distributed under the Licence is distributed
|
7
|
+
# on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
|
8
|
+
# either express or implied. See the Licence of the
|
9
|
+
# specific language governing rights and limitations
|
10
|
+
# under the Licence.
|
11
|
+
# The Original Code is pNet::DNS.
|
12
|
+
# The Initial Developer of the Original Code is
|
13
|
+
# Nominet UK (www.nominet.org.uk). Portions created by
|
14
|
+
# Nominet UK are Copyright (c) Nominet UK 2006.
|
15
|
+
# All rights reserved.
|
16
|
+
require 'test/unit'
|
17
|
+
require 'Net/DNS'
|
18
|
+
class TestAResolverFile < Test::Unit::TestCase
|
19
|
+
def test_resFile
|
20
|
+
#~ BEGIN {
|
21
|
+
#~ chdir 't/' || die "Couldn't chdir to t/\n"
|
22
|
+
#~ unshift(@INC, '../blib/lib', '../blib/arch')
|
23
|
+
#~ use_ok('Net::DNS')
|
24
|
+
#~ }
|
25
|
+
|
26
|
+
#~ SKIP: {
|
27
|
+
|
28
|
+
#~ skip 'File parsing only supported on unix.', 7
|
29
|
+
#~ unless $Net::DNS::Resolver::ISA[0] eq 'Net::DNS::Resolver::UNIX'
|
30
|
+
|
31
|
+
#~ skip 'Could not read configuration file', 7
|
32
|
+
#~ unless -r '.resolv.conf' && -o _
|
33
|
+
|
34
|
+
res = Net::DNS::Resolver.new(:config_file => "test/resolv.conf")
|
35
|
+
|
36
|
+
assert(res, "new() returned something")
|
37
|
+
assert(res.nameservers, "nameservers() works")
|
38
|
+
|
39
|
+
servers = res.nameservers
|
40
|
+
|
41
|
+
assert_equal(servers[0], '10.0.1.128', 'Nameserver set correctly')
|
42
|
+
assert_equal(servers[1], '10.0.2.128', 'Nameserver set correctly')
|
43
|
+
|
44
|
+
|
45
|
+
search = res.searchlist
|
46
|
+
assert_equal(search[0], 'net-dns.org', 'Search set correctly' )
|
47
|
+
assert_equal(search[1], 'lib.net-dns.org', 'Search set correctly' )
|
48
|
+
|
49
|
+
assert_equal(res.domain, 't.net-dns.org', 'Local domain works' )
|
50
|
+
#~ }
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
data/test/tc_res_opt.rb
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
# The contents of this file are subject to the Mozilla
|
2
|
+
# Public Licence Version 1.1 (the "Licence"); you may
|
3
|
+
# not use this file except in compliance with the
|
4
|
+
# Licence. You may obtain a copy of the Licence at
|
5
|
+
# http://www.mozilla.org/MPL
|
6
|
+
# Software distributed under the Licence is distributed
|
7
|
+
# on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
|
8
|
+
# either express or implied. See the Licence of the
|
9
|
+
# specific language governing rights and limitations
|
10
|
+
# under the Licence.
|
11
|
+
# The Original Code is pNet::DNS.
|
12
|
+
# The Initial Developer of the Original Code is
|
13
|
+
# Nominet UK (www.nominet.org.uk). Portions created by
|
14
|
+
# Nominet UK are Copyright (c) Nominet UK 2006.
|
15
|
+
# All rights reserved.
|
16
|
+
require 'test/unit'
|
17
|
+
require 'Net/DNS'
|
18
|
+
class TestResOpt < Test::Unit::TestCase
|
19
|
+
def test_res_opt
|
20
|
+
|
21
|
+
# .txt because this test will run under windows, unlike the other file
|
22
|
+
# configuration tests.
|
23
|
+
#test_file = File::Spec.catfile('t', 'custom.txt')
|
24
|
+
|
25
|
+
#res = Net::DNS::Resolver.new(:config_file => :test_file)
|
26
|
+
res = Net::DNS::Resolver.new(:config_file => 'test/custom.txt')
|
27
|
+
|
28
|
+
assert(res, 'new() returned something')
|
29
|
+
assert_instance_of(Net::DNS::Resolver, res, 'new() returns an object of the correct class.')
|
30
|
+
assert(res.nameservers, 'nameservers() works')
|
31
|
+
|
32
|
+
servers = res.nameservers
|
33
|
+
|
34
|
+
assert_equal(servers[0], '10.0.1.42', 'Nameserver set correctly')
|
35
|
+
assert_equal(servers[1], '10.0.2.42', 'Nameserver set correctly')
|
36
|
+
|
37
|
+
|
38
|
+
search = res.searchlist
|
39
|
+
assert_equal(search[0], 'alt.net-dns.org', 'Search set correctly' )
|
40
|
+
assert_equal(search[1], 'ext.net-dns.org', 'Search set correctly' )
|
41
|
+
|
42
|
+
assert_equal(res.domain, 't2.net-dns.org', 'Local domain works' )
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_no_file
|
46
|
+
res=nil
|
47
|
+
begin
|
48
|
+
res = Net::DNS::Resolver.new(:config_file => 'nosuch.txt')
|
49
|
+
assert(false, "Should throw error trying to open non-existant file.")
|
50
|
+
rescue Exception
|
51
|
+
#assert($@, 'Error thrown trying to open non-existant file.')
|
52
|
+
assert(res==nil, 'Net::DNS::Resolver->new returned undef')
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_config
|
57
|
+
#
|
58
|
+
# Check that we can set things in new()
|
59
|
+
#
|
60
|
+
res=nil
|
61
|
+
|
62
|
+
test_config = {
|
63
|
+
:nameservers => ['10.0.0.1', '10.0.0.2'],
|
64
|
+
:port => 54,
|
65
|
+
:srcaddr => '10.1.0.1',
|
66
|
+
:srcport => 53,
|
67
|
+
:domain => 'net-dns.org',
|
68
|
+
:searchlist => ['net-dns.org', 't.net-dns.org'],
|
69
|
+
:retrans => 6,
|
70
|
+
:retry => 5,
|
71
|
+
:usevc => 1,
|
72
|
+
:stayopen => 1,
|
73
|
+
:igntc => 1,
|
74
|
+
:recurse => 0,
|
75
|
+
:defnames => 0,
|
76
|
+
:dnsrch => 0,
|
77
|
+
:debug => 1,
|
78
|
+
:tcp_timeout => 60,
|
79
|
+
:udp_timeout => 60,
|
80
|
+
:persistent_tcp => 1,
|
81
|
+
#@todo Add dnssec when dnssec added to Net::DNS
|
82
|
+
# 'dnssec' => 1,
|
83
|
+
}
|
84
|
+
|
85
|
+
res = Net::DNS::Resolver.new(test_config)
|
86
|
+
|
87
|
+
|
88
|
+
test_config.keys.each do |item|
|
89
|
+
assert_equal(res.send_method(item), test_config[item], "#{item} is correct")
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_bad_input
|
94
|
+
#
|
95
|
+
# Check that new() is vetting things properly.
|
96
|
+
#
|
97
|
+
|
98
|
+
[:nameservers, :searchlist].each do |test|
|
99
|
+
[{}, 'string',1,'\1',nil].each do |input|
|
100
|
+
res=nil
|
101
|
+
begin
|
102
|
+
res = Net::DNS::Resolver.new({test => input})
|
103
|
+
assert(false, "Accepted invalid input")
|
104
|
+
rescue
|
105
|
+
assert(res==nil, 'No resolver should be returned for #{test} = #{input}')
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
def test_bad_config
|
113
|
+
res=nil
|
114
|
+
|
115
|
+
bad_input = {
|
116
|
+
:tsig_rr => 'set',
|
117
|
+
:errorstring => 'set',
|
118
|
+
:answerfrom => 'set',
|
119
|
+
:answersize => 'set',
|
120
|
+
:querytime => 'set',
|
121
|
+
:axfr_sel => 'set',
|
122
|
+
:axfr_rr => 'set',
|
123
|
+
:axfr_soa_count => 'set',
|
124
|
+
:udppacketsize => 'set',
|
125
|
+
:cdflag => 'set',
|
126
|
+
}
|
127
|
+
|
128
|
+
res = Net::DNS::Resolver.new(bad_input)
|
129
|
+
|
130
|
+
bad_input.keys.each do |key|
|
131
|
+
assert_not_equal(res.send_method(key), 'set', "#{key} is not set")
|
132
|
+
end
|
133
|
+
|
134
|
+
end
|
135
|
+
end
|
data/test/tc_resolver.rb
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
# The contents of this file are subject to the Mozilla
|
2
|
+
# Public Licence Version 1.1 (the "Licence"); you may
|
3
|
+
# not use this file except in compliance with the
|
4
|
+
# Licence. You may obtain a copy of the Licence at
|
5
|
+
# http://www.mozilla.org/MPL
|
6
|
+
# Software distributed under the Licence is distributed
|
7
|
+
# on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
|
8
|
+
# either express or implied. See the Licence of the
|
9
|
+
# specific language governing rights and limitations
|
10
|
+
# under the Licence.
|
11
|
+
# The Original Code is pNet::DNS.
|
12
|
+
# The Initial Developer of the Original Code is
|
13
|
+
# Nominet UK (www.nominet.org.uk). Portions created by
|
14
|
+
# Nominet UK are Copyright (c) Nominet UK 2006.
|
15
|
+
# All rights reserved.
|
16
|
+
require 'test/unit'
|
17
|
+
require 'Net/DNS'
|
18
|
+
class TestResolver < Test::Unit::TestCase
|
19
|
+
def test_resolver
|
20
|
+
res = Net::DNS::Resolver.new();
|
21
|
+
assert(res, "new returned something");
|
22
|
+
assert_instance_of(Net::DNS::Resolver, res, "new() returns an object of the correct class.");
|
23
|
+
|
24
|
+
assert(res.nameservers, 'nameservers() works');
|
25
|
+
|
26
|
+
searchlist = ["t.net-dns.org", "t2.net-dns.org"];
|
27
|
+
assert_equal(res.searchlist=searchlist, searchlist, 'setting searchlist returns correctly.');
|
28
|
+
assert_equal(res.searchlist, searchlist, 'setting searchlist stickts.');
|
29
|
+
|
30
|
+
|
31
|
+
good_input = {
|
32
|
+
"port" => 54,
|
33
|
+
"srcaddr" => '10.1.0.1',
|
34
|
+
"srcport" => 53,
|
35
|
+
"domain" => 'net-dns.org',
|
36
|
+
"retrans" => 6,
|
37
|
+
"retry" => 5,
|
38
|
+
"usevc" => 1,
|
39
|
+
"stayopen" => 1,
|
40
|
+
"igntc" => 1,
|
41
|
+
"recurse" => 0,
|
42
|
+
"defnames" => 0,
|
43
|
+
"dnsrch" => 0,
|
44
|
+
"debug" => 1,
|
45
|
+
"tcp_timeout" => 60,
|
46
|
+
"udp_timeout" => 60,
|
47
|
+
"persistent_tcp" => 1,
|
48
|
+
"dnssec" => 1,
|
49
|
+
"force_v4" => 1,
|
50
|
+
};
|
51
|
+
|
52
|
+
#~ #diag "\n\nIf you do not have Net::DNS::SEC installed you will see a warning.\n";
|
53
|
+
#~ #diag "It is safe to ignore this\n";
|
54
|
+
|
55
|
+
good_input.each do | param, value |
|
56
|
+
# puts("Setting " + param);
|
57
|
+
assert_equal(res.port=(value), value, "setting " + param + " returns correctly");
|
58
|
+
assert_equal(res.port, value, "setting #param sticks");
|
59
|
+
end;
|
60
|
+
|
61
|
+
bad_input = {
|
62
|
+
"tsig_rr" => 'set',
|
63
|
+
"errorstring" => 'set',
|
64
|
+
"answerfrom" => 'set',
|
65
|
+
"answersize" => 'set',
|
66
|
+
"querytime" => 'set',
|
67
|
+
"axfr_sel" => 'set',
|
68
|
+
"axfr_rr" => 'set',
|
69
|
+
"axfr_soa_count" => 'set',
|
70
|
+
"udppacketsize" => 'set',
|
71
|
+
"cdflag" => 'set',
|
72
|
+
};
|
73
|
+
|
74
|
+
# Some people try to run these on private address space."
|
75
|
+
|
76
|
+
#~ use Net::IP;
|
77
|
+
|
78
|
+
#~ use IO::Socket::INET;
|
79
|
+
#~ sock = IO::Socket::INET.new(PeerAddr => '193.0.14.129', # k.root-servers.net.
|
80
|
+
#~ PeerPort => '25',
|
81
|
+
#~ Proto => 'udp');
|
82
|
+
|
83
|
+
|
84
|
+
#~ ip=Net::IP.new(inet_ntoa(sock.sockaddr));
|
85
|
+
|
86
|
+
# @todo Test whether we are online
|
87
|
+
# If we are online, then run the next set of tests
|
88
|
+
|
89
|
+
res = Net::DNS::Resolver.new
|
90
|
+
|
91
|
+
res.nameservers=('a.t.net-dns.org')
|
92
|
+
ip = res.nameservers()[0]
|
93
|
+
print ip.inspect
|
94
|
+
assert_equal('10.0.1.128', ip, 'Nameservers() looks up IP.')
|
95
|
+
|
96
|
+
res.nameservers=('cname.t.net-dns.org')
|
97
|
+
ip = (res.nameservers)[0]
|
98
|
+
assert_equal(ip, '10.0.1.128', 'Nameservers() looks up cname.')
|
99
|
+
|
100
|
+
|
101
|
+
end
|
102
|
+
end
|
data/test/tc_rr-opt.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# The contents of this file are subject to the Mozilla
|
2
|
+
# Public Licence Version 1.1 (the "Licence"); you may
|
3
|
+
# not use this file except in compliance with the
|
4
|
+
# Licence. You may obtain a copy of the Licence at
|
5
|
+
# http://www.mozilla.org/MPL
|
6
|
+
# Software distributed under the Licence is distributed
|
7
|
+
# on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
|
8
|
+
# either express or implied. See the Licence of the
|
9
|
+
# specific language governing rights and limitations
|
10
|
+
# under the Licence.
|
11
|
+
# The Original Code is pNet::DNS.
|
12
|
+
# The Initial Developer of the Original Code is
|
13
|
+
# Nominet UK (www.nominet.org.uk). Portions created by
|
14
|
+
# Nominet UK are Copyright (c) Nominet UK 2006.
|
15
|
+
# All rights reserved.
|
16
|
+
require 'test/unit'
|
17
|
+
require 'Net/DNS'
|
18
|
+
class TestRrOpt < Test::Unit::TestCase
|
19
|
+
def test_RrOpt
|
20
|
+
size=2048;
|
21
|
+
ednsflags=0x9e22;
|
22
|
+
|
23
|
+
|
24
|
+
optrr= Net::DNS::RR.create( { :type => 'OPT',
|
25
|
+
:name => '',
|
26
|
+
:class => size, # Decimal UDPpayload
|
27
|
+
:ednsflags => ednsflags # first bit set see RFC 3225
|
28
|
+
})
|
29
|
+
# @TODO replace DO bit stuff when DNSSEC is implemented
|
30
|
+
#assert(optrr.do,"DO bit set")
|
31
|
+
#assert_equal(optrr.clear_do,0x1e22,"Clearing do, leaving the other bits ");
|
32
|
+
#assert(!optrr.do,"DO bit cleared")
|
33
|
+
#assert_equal(optrr.set_do,0x9e22,"Clearing do, leaving the other bits ");
|
34
|
+
|
35
|
+
|
36
|
+
assert_equal(optrr.size,2048,"Size read")
|
37
|
+
assert_equal(optrr.size=(1498),1498,"Size set")
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
# The contents of this file are subject to the Mozilla
|
2
|
+
# Public Licence Version 1.1 (the "Licence"); you may
|
3
|
+
# not use this file except in compliance with the
|
4
|
+
# Licence. You may obtain a copy of the Licence at
|
5
|
+
# http://www.mozilla.org/MPL
|
6
|
+
# Software distributed under the Licence is distributed
|
7
|
+
# on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
|
8
|
+
# either express or implied. See the Licence of the
|
9
|
+
# specific language governing rights and limitations
|
10
|
+
# under the Licence.
|
11
|
+
# The Original Code is pNet::DNS.
|
12
|
+
# The Initial Developer of the Original Code is
|
13
|
+
# Nominet UK (www.nominet.org.uk). Portions created by
|
14
|
+
# Nominet UK are Copyright (c) Nominet UK 2006.
|
15
|
+
# All rights reserved.
|
16
|
+
require 'test/unit'
|
17
|
+
require 'Net/DNS'
|
18
|
+
class TestRrRrSort < Test::Unit::TestCase
|
19
|
+
def test_RrRrSort
|
20
|
+
rr1=Net::DNS::RR.create("example.com. 600 IN SRV 0 0 5060 A.example.com.")
|
21
|
+
assert_instance_of(Net::DNS::RR::SRV,rr1,"SRV RR1 created")
|
22
|
+
rr2=Net::DNS::RR.create("example.com. 600 IN SRV 1 0 5060 A.example.com.")
|
23
|
+
assert_instance_of(Net::DNS::RR::SRV,rr2,"SRV RR2 created")
|
24
|
+
rr3=Net::DNS::RR.create("example.com. 600 IN SRV 2 0 5060 A.example.com.")
|
25
|
+
assert_instance_of(Net::DNS::RR::SRV,rr3,"SRV RR3 created")
|
26
|
+
rr4=Net::DNS::RR.create("example.com. 600 IN SRV 3 0 5060 A.example.com.")
|
27
|
+
assert_instance_of(Net::DNS::RR::SRV,rr4,"SRV RR4 created")
|
28
|
+
rr5=Net::DNS::RR.create("example.com. 600 IN SRV 3 1 5060 A.example.com.")
|
29
|
+
assert_instance_of(Net::DNS::RR::SRV,rr5,"SRV RR5 created")
|
30
|
+
rr6=Net::DNS::RR.create("example.com. 600 IN SRV 3 2 5060 A.example.com.")
|
31
|
+
assert_instance_of(Net::DNS::RR::SRV,rr6,"SRV RR6 created")
|
32
|
+
rr7=Net::DNS::RR.create("example.com. 600 IN SRV 1 3 5070 A.example.com.")
|
33
|
+
assert_instance_of(Net::DNS::RR::SRV,rr7,"SRV RR7 created")
|
34
|
+
rr8=Net::DNS::RR.create("example.com. 600 IN SRV 3 3 5070 A.example.com.")
|
35
|
+
assert_instance_of(Net::DNS::RR::SRV,rr8,"SRV RR8 created")
|
36
|
+
rr9=Net::DNS::RR.create("example.com. 600 IN A 192.168.0.1")
|
37
|
+
assert_instance_of(Net::DNS::RR::A,rr9,"A RR9 created")
|
38
|
+
|
39
|
+
|
40
|
+
rrarray=[rr1, rr2, rr3, rr4, rr5, rr6, rr7, rr8, rr9]
|
41
|
+
expectedrdata=[rr1, rr2, rr3, rr7, rr4, rr5, rr6, rr8]
|
42
|
+
expectedpriority=[rr1, rr7, rr2, rr3, rr8, rr6, rr5, rr4]
|
43
|
+
expectedweight=[rr7, rr8, rr6, rr5, rr1, rr2, rr3, rr4]
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
assert_equal(nil,Net::DNS.rrsort("SRV"),"rrsort returns rrerly whith undefined arguments")
|
48
|
+
|
49
|
+
assert_equal(8,Net::DNS.rrsort("SRV",rrarray).length,"rrsort returns properly whith undefined attribute (1)")
|
50
|
+
|
51
|
+
#assert_equal(rrsort("SRV",,@rrarray),8,"rrsort returns properly whith undefined attribute (2)")
|
52
|
+
|
53
|
+
assert_equal(8,Net::DNS.rrsort("SRV","",rrarray).length,"rrsort returns properly whith undefined attribute (3)")
|
54
|
+
|
55
|
+
prioritysorted= Net::DNS.rrsort("SRV","priority",rrarray)
|
56
|
+
weightsorted= Net::DNS.rrsort("SRV","weight",rrarray)
|
57
|
+
defaultsorted= Net::DNS.rrsort("SRV",rrarray)
|
58
|
+
portsorted= Net::DNS.rrsort("SRV","port",rrarray)
|
59
|
+
|
60
|
+
foosorted= Net::DNS.rrsort("SRV","foo",rrarray)
|
61
|
+
assert_equal(8,foosorted.length,"rrsort returns properly whith undefined attribute (3)")
|
62
|
+
|
63
|
+
assert_equal(8, prioritysorted.length,"rrsort correctly maintains RRs test 2")
|
64
|
+
|
65
|
+
|
66
|
+
# assert_equal(expectedpriority, prioritysorted, "Sorting on SRV priority works")
|
67
|
+
max = 0
|
68
|
+
prioritysorted.each { |i| assert(i.priority >= max); max = i.priority}
|
69
|
+
# assert_equal(expectedpriority, defaultsorted, "Default SRV sort works")
|
70
|
+
max = 0
|
71
|
+
defaultsorted.each { |i| assert(i.priority >= max); max = i.priority}
|
72
|
+
# assert_equal(expectedweight, weightsorted, "Weight sorted SRV sort works")
|
73
|
+
max = 0
|
74
|
+
weightsorted.each { |i| assert(i.weight >= max); max = i.weight}
|
75
|
+
|
76
|
+
|
77
|
+
assert_equal(1, Net::DNS.rrsort("A","priority",rrarray).length,"rrsort correctly maintains RRs test 1")
|
78
|
+
assert_equal(nil, Net::DNS.rrsort("MX","priority",rrarray),"rrsort correctly maintains RRs test 3")
|
79
|
+
|
80
|
+
|
81
|
+
#
|
82
|
+
# Test with MX RRs.
|
83
|
+
#
|
84
|
+
|
85
|
+
mxrr1=Net::DNS::RR.create("example.com. 600 IN MX 10 mx1.example.com")
|
86
|
+
mxrr2=Net::DNS::RR.create("example.com. 600 IN MX 6 mx2.example.com")
|
87
|
+
|
88
|
+
mxrr3=Net::DNS::RR.create("example.com. 600 IN MX 66 mx3.example.com")
|
89
|
+
mxrr4=Net::DNS::RR.create("example.com. 600 IN RT 6 rt1.example.com")
|
90
|
+
|
91
|
+
|
92
|
+
mxrrarray=[mxrr1, mxrr2, mxrr3, mxrr4]
|
93
|
+
expectedmxarray=[mxrr2,mxrr1,mxrr3]
|
94
|
+
sortedmxarray=Net::DNS.rrsort("MX",mxrrarray)
|
95
|
+
|
96
|
+
assert_equal(expectedmxarray,sortedmxarray,"MX sorting")
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
nsrr1=Net::DNS::RR.create("example.com. 600 IN NS ns2.example.com")
|
102
|
+
nsrr2=Net::DNS::RR.create("example.com. 600 IN NS ns4.example.com")
|
103
|
+
nsrr3=Net::DNS::RR.create("example.com. 600 IN NS ns1.example.com")
|
104
|
+
nsrr4=Net::DNS::RR.create("example.com. 600 IN RT 6 rt1.example.com")
|
105
|
+
|
106
|
+
nsrrarray=[nsrr1, nsrr2, nsrr3, nsrr4]
|
107
|
+
expectednsarray=[nsrr3,nsrr1,nsrr2]
|
108
|
+
sortednsarray=Net::DNS.rrsort("NS",nsrrarray)
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
assert_equal(expectednsarray,sortednsarray,"NS sorting")
|
114
|
+
|
115
|
+
end
|
116
|
+
end
|