netaddr 1.5.1 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/LICENSE +201 -0
- data/README.md +29 -0
- data/lib/eui48.rb +65 -0
- data/lib/eui64.rb +77 -0
- data/lib/ipv4.rb +87 -0
- data/lib/ipv4net.rb +262 -0
- data/lib/ipv6.rb +120 -0
- data/lib/ipv6net.rb +267 -0
- data/lib/mask128.rb +70 -0
- data/lib/mask32.rb +105 -0
- data/lib/netaddr.rb +123 -27
- data/lib/util.rb +307 -0
- data/test/eui48_test.rb +30 -0
- data/test/eui64_test.rb +32 -0
- data/test/examples.rb +155 -0
- data/test/ipv4_test.rb +60 -0
- data/test/ipv4net_test.rb +177 -0
- data/test/ipv6_test.rb +96 -0
- data/test/ipv6net_test.rb +157 -0
- data/test/mask128_test.rb +45 -0
- data/test/mask32_test.rb +56 -0
- data/test/netaddr_test.rb +148 -0
- data/test/run_all.rb +10 -0
- metadata +29 -24
- data/Errors +0 -7
- data/README +0 -17
- data/changelog +0 -58
- data/lib/cidr.rb +0 -2189
- data/lib/cidr_shortcuts.rb +0 -440
- data/lib/eui.rb +0 -463
- data/lib/ip_math.rb +0 -259
- data/lib/methods.rb +0 -1079
- data/lib/tree.rb +0 -921
- data/lib/validation_shortcuts.rb +0 -219
- data/license +0 -13
- data/test/cidr_test.rb +0 -544
- data/test/eui_test.rb +0 -101
- data/test/methods_test.rb +0 -331
- data/test/tree_test.rb +0 -347
data/test/eui_test.rb
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
|
-
|
3
|
-
require 'lib/netaddr.rb'
|
4
|
-
require 'test/unit'
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
class TestEUI < Test::Unit::TestCase
|
9
|
-
|
10
|
-
def test_new
|
11
|
-
assert_not_nil(NetAddr::EUI48.new('aabbccddeeff') )
|
12
|
-
assert_not_nil(NetAddr::EUI48.new('aabbccddeeff') )
|
13
|
-
assert_not_nil(NetAddr::EUI64.new('aabbccddeeff0001') )
|
14
|
-
assert_not_nil(NetAddr::EUI48.new(0x000000000001) )
|
15
|
-
assert_not_nil(NetAddr::EUI64.new(0x0000000000000001) )
|
16
|
-
|
17
|
-
assert_raise(ArgumentError){ NetAddr::EUI48.new() }
|
18
|
-
assert_raise(ArgumentError){ NetAddr::EUI48.new({}) }
|
19
|
-
assert_raise(ArgumentError){ NetAddr::EUI64.new() }
|
20
|
-
assert_raise(ArgumentError){ NetAddr::EUI64.new({}) }
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_create
|
24
|
-
assert_not_nil(NetAddr::EUI.create('aa-bb-cc-dd-ee-ff') )
|
25
|
-
assert_not_nil(NetAddr::EUI.create('aa:bb:cc:dd:ee:ff') )
|
26
|
-
assert_not_nil(NetAddr::EUI.create('aabb.ccdd.eeff') )
|
27
|
-
assert_not_nil(NetAddr::EUI.create('aa-bb-cc-dd-ee-ff-00-01') )
|
28
|
-
|
29
|
-
assert_raise(ArgumentError){ NetAddr::EUI.create() }
|
30
|
-
assert_raise(ArgumentError){ NetAddr::EUI.create(0x0000000000000001) }
|
31
|
-
|
32
|
-
assert_kind_of(NetAddr::EUI48, NetAddr::EUI.create('aa-bb-cc-dd-ee-ff'))
|
33
|
-
assert_kind_of(NetAddr::EUI64, NetAddr::EUI.create('aa-bb-cc-dd-ee-ff-00-01'))
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_simple
|
37
|
-
mac = NetAddr::EUI.create('aa-bb-cc-dd-ee-ff')
|
38
|
-
assert_raise(ArgumentError) {mac.oui(:test => true)}
|
39
|
-
assert_raise(ArgumentError) {mac.ei(:test => true)}
|
40
|
-
|
41
|
-
assert_equal('aa-bb-cc', mac.oui )
|
42
|
-
assert_equal('dd-ee-ff', mac.ei )
|
43
|
-
assert_equal('aa:bb:cc', mac.oui(:Delimiter => ':' ) )
|
44
|
-
assert_equal('dd:ee:ff', mac.ei(:Delimiter => ':' ) )
|
45
|
-
assert_equal('aa-bb-cc-dd-ee-ff', mac.address )
|
46
|
-
assert_equal('aa:bb:cc:dd:ee:ff', mac.address(:Delimiter => ':') )
|
47
|
-
assert_equal('aabb.ccdd.eeff', mac.address(:Delimiter => '.') )
|
48
|
-
assert_equal(0xaabbccddeeff, mac.to_i )
|
49
|
-
assert_equal(NetAddr::EUI48, mac.class )
|
50
|
-
|
51
|
-
mac = NetAddr::EUI.create('aa-bb-cc-dd-ee-ff-01-02')
|
52
|
-
assert_raise(ArgumentError) {mac.oui(:test => true)}
|
53
|
-
assert_raise(ArgumentError) {mac.ei(:test => true)}
|
54
|
-
assert_equal('aa-bb-cc', mac.oui )
|
55
|
-
assert_equal('dd-ee-ff-01-02', mac.ei )
|
56
|
-
assert_equal('aa:bb:cc', mac.oui(:Delimiter => ':') )
|
57
|
-
assert_equal('dd:ee:ff:01:02', mac.ei(:Delimiter => ':' ) )
|
58
|
-
assert_equal('aa-bb-cc-dd-ee-ff-01-02', mac.address )
|
59
|
-
assert_equal('aa:bb:cc:dd:ee:ff:01:02', mac.address(:Delimiter => ':') )
|
60
|
-
assert_equal('aabb.ccdd.eeff.0102', mac.address(:Delimiter => '.') )
|
61
|
-
assert_equal(0xaabbccddeeff0102, mac.to_i )
|
62
|
-
assert_equal(NetAddr::EUI64, mac.class )
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_link_local
|
67
|
-
mac = NetAddr::EUI.create('aa-bb-cc-dd-ee-ff')
|
68
|
-
assert_equal('fe80:0000:0000:0000:a8bb:ccff:fedd:eeff', mac.link_local )
|
69
|
-
|
70
|
-
mac = NetAddr::EUI.create('1234.5678.9abc')
|
71
|
-
assert_equal('fe80:0000:0000:0000:1034:56ff:fe78:9abc', mac.link_local )
|
72
|
-
|
73
|
-
mac = NetAddr::EUI.create('1234.5678.9abc.def0')
|
74
|
-
assert_equal('fe80:0000:0000:0000:1034:5678:9abc:def0', mac.link_local(:Objectify => true).ip )
|
75
|
-
assert_raise(ArgumentError) {mac.link_local(:test => true)}
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_to_eui64
|
79
|
-
mac = NetAddr::EUI.create('aa-bb-cc-dd-ee-ff')
|
80
|
-
assert_equal('aa-bb-cc-ff-fe-dd-ee-ff', mac.to_eui64.address )
|
81
|
-
|
82
|
-
# check that to_eui64 has no side effects
|
83
|
-
b = mac.to_eui64
|
84
|
-
c = mac.to_eui64
|
85
|
-
assert_equal(b.to_s, c.to_s)
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_to_ipv6
|
89
|
-
mac = NetAddr::EUI.create('aa-bb-cc-dd-ee-ff')
|
90
|
-
assert_equal('fe80:0000:0000:0000:a8bb:ccff:fedd:eeff', mac.to_ipv6('fe80::/64') )
|
91
|
-
|
92
|
-
mac = NetAddr::EUI.create('1234.5678.9abc')
|
93
|
-
assert_equal('fe80:0000:0000:0000:1034:56ff:fe78:9abc', mac.to_ipv6('fe80::/64') )
|
94
|
-
|
95
|
-
mac = NetAddr::EUI.create('1234.5678.9abc.def0')
|
96
|
-
assert_equal('fe80:0000:0000:0000:1034:5678:9abc:def0', mac.to_ipv6('fe80::/64', :Objectify => true).ip )
|
97
|
-
assert_raise(ArgumentError) {mac.link_local(:test => true)}
|
98
|
-
assert_raise(NetAddr::ValidationError) {mac.to_ipv6('fe80::/65')}
|
99
|
-
end
|
100
|
-
|
101
|
-
end
|
data/test/methods_test.rb
DELETED
@@ -1,331 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
|
-
|
3
|
-
require 'lib/netaddr.rb'
|
4
|
-
require 'test/unit'
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
class TestMethods < Test::Unit::TestCase
|
9
|
-
|
10
|
-
def test_i_to_bits
|
11
|
-
assert_equal(32, NetAddr.i_to_bits(2**32-1) )
|
12
|
-
assert_equal(24, NetAddr.i_to_bits((2**32 - 2**8 ) ) )
|
13
|
-
assert_equal(128, NetAddr.i_to_bits(2**128-1) )
|
14
|
-
assert_equal(96, NetAddr.i_to_bits((2**128 - 2**32)) )
|
15
|
-
|
16
|
-
assert_raise(ArgumentError){ NetAddr.i_to_bits('1') }
|
17
|
-
assert_raise(ArgumentError){ NetAddr.i_to_bits({}) }
|
18
|
-
assert_raise(ArgumentError){ NetAddr.i_to_bits('1')}
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_i_to_ip
|
22
|
-
assert_raise(ArgumentError) {NetAddr.i_to_ip(2**32-1, :test => true)}
|
23
|
-
assert_equal('255.255.255.255', NetAddr.i_to_ip(2**32-1) )
|
24
|
-
assert_equal('0.0.0.0', NetAddr.i_to_ip(0, :Version => 4) )
|
25
|
-
assert_equal('0000:0000:0000:0000:0000:0000:0000:0000', NetAddr.i_to_ip(0, :Version => 6) )
|
26
|
-
assert_equal('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', NetAddr.i_to_ip(2**128-1) )
|
27
|
-
assert_equal('0000:0000:0000:0000:0000:0000:ffff:ffff', NetAddr.i_to_ip(2**32-1, :Version => 6) )
|
28
|
-
assert_equal('0000:0000:0000:0000:0000:ffff:10.1.0.1', NetAddr.i_to_ip(0xffff0a010001,
|
29
|
-
:IPv4Mapped => true,
|
30
|
-
:Version => 6) )
|
31
|
-
assert_raise(ArgumentError){ NetAddr.i_to_ip('1') }
|
32
|
-
assert_raise(ArgumentError){ NetAddr.i_to_ip({}) }
|
33
|
-
assert_raise(NetAddr::VersionError){ NetAddr.i_to_ip(0xffffffff,:Version => 5) }
|
34
|
-
assert_raise(ArgumentError){ NetAddr.i_to_ip('1', :Version => 4) }
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_ip_to_i
|
38
|
-
assert_raise(ArgumentError) {NetAddr.ip_to_i('255.255.255.255', :test => true)}
|
39
|
-
assert_equal(2**128-1, NetAddr.ip_to_i('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
|
40
|
-
assert_equal(1, NetAddr.ip_to_i('::1') )
|
41
|
-
assert_equal(2**32-1, NetAddr.ip_to_i('255.255.255.255') )
|
42
|
-
assert_equal(2**128-1, NetAddr.ip_to_i('ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255') )
|
43
|
-
assert_equal(0, NetAddr.ip_to_i('::') )
|
44
|
-
assert_equal(2**32-1, NetAddr.ip_to_i('::255.255.255.255') )
|
45
|
-
assert_equal(0x0a0a0a0a, NetAddr.ip_to_i('10.10.10.10') )
|
46
|
-
assert_equal(2**127+1, NetAddr.ip_to_i('8000::0.0.0.1') )
|
47
|
-
assert_equal(0x8080000000000000000080800a0a0a0a, NetAddr.ip_to_i('8080::8080:10.10.10.10') )
|
48
|
-
assert_equal(0xffff0a010001, NetAddr.ip_to_i('::ffff:10.1.0.1') )
|
49
|
-
assert_equal(2**127+1, NetAddr.ip_to_i('8000::1') )
|
50
|
-
assert_equal(1, NetAddr.ip_to_i('::1') )
|
51
|
-
assert_equal(2**127, NetAddr.ip_to_i('8000::') )
|
52
|
-
|
53
|
-
assert_raise(ArgumentError){ NetAddr.ip_to_i({}) }
|
54
|
-
assert_raise(NetAddr::VersionError){ NetAddr.ip_to_i('192.168.1.1',:Version => 5) }
|
55
|
-
assert_raise(ArgumentError){ NetAddr.ip_to_i(0xffffffff,:Version => 4) }
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_merge
|
59
|
-
assert_raise(ArgumentError){ NetAddr.merge(1) }
|
60
|
-
assert_raise(ArgumentError){ NetAddr.merge({}) }
|
61
|
-
|
62
|
-
subs = NetAddr::CIDR.create('10.0.0.0/24').subnet(:Bits => 26, :Objectify => true)
|
63
|
-
subs.concat( NetAddr::CIDR.create('10.1.0.0/24').subnet(:Bits => 29, :NumSubnets => 4, :Objectify => true) )
|
64
|
-
subs.delete_at(2)
|
65
|
-
subs.delete_at(7)
|
66
|
-
assert_equal(['10.0.0.0/25', '10.0.0.192/26', '10.1.0.0/27', '10.1.0.64/26', '10.1.0.128/25'], NetAddr.merge(subs) )
|
67
|
-
|
68
|
-
cidr = NetAddr::CIDR.create('fec0::/64')
|
69
|
-
subs = cidr.range(1, 8, :Objectify => true)
|
70
|
-
subs.concat([NetAddr::CIDR.create('192.168.0.0/27'), NetAddr::CIDR.create('192.168.0.32/27')])
|
71
|
-
assert_equal(['192.168.0.0/26', 'fec0::1/128', 'fec0::2/127', 'fec0::4/126', 'fec0::8/128',], NetAddr.merge(subs, :Short => true) )
|
72
|
-
|
73
|
-
subs = []
|
74
|
-
NetAddr.range('192.168.35.0','192.168.39.255',
|
75
|
-
:Inclusive => true, :Bitstep => 32).each {|x| subs.push(NetAddr::CIDR.create("#{x}/27")) }
|
76
|
-
assert_equal(['192.168.35.0/24', '192.168.36.0/22'], NetAddr.merge(subs) )
|
77
|
-
|
78
|
-
subs = NetAddr::CIDR.create('10.0.0.0/24').subnet(:Bits => 26, :Objectify => true)
|
79
|
-
subs.concat( subs.pop.subnet(:Bits => 27, :Objectify => true) )
|
80
|
-
subs.concat( subs.pop.subnet(:Bits => 28, :Objectify => true) )
|
81
|
-
subs[5].tag[:test] = true
|
82
|
-
merged = NetAddr.merge(subs, :Objectify => true)
|
83
|
-
assert_equal('10.0.0.0/24', merged[0].desc)
|
84
|
-
assert_equal('10.0.0.240/28', merged[0].tag[:Subnets][5].desc)
|
85
|
-
assert(merged[0].tag[:Subnets][5].tag[:test])
|
86
|
-
|
87
|
-
assert_equal(['10.0.0.0/8','192.168.0.0/24'], NetAddr.merge(['10.0.0.0/8', '10.0.0.0/12', '10.0.0.0/24','192.168.0.0/24','192.168.0.64/26']) )
|
88
|
-
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_minimum_size
|
92
|
-
assert_raise(ArgumentError) {NetAddr.minimum_size(200, :test => true)}
|
93
|
-
assert_equal(24, NetAddr.minimum_size(200))
|
94
|
-
assert_equal(96, NetAddr.minimum_size(2**32-1, :Version => 6))
|
95
|
-
assert_equal('255.255.255.0', NetAddr.minimum_size(200, :Extended => true))
|
96
|
-
assert_equal('255.255.255.224', NetAddr.minimum_size(17, :Extended => true))
|
97
|
-
assert_equal(24, NetAddr.minimum_size(200, :Extended => false))
|
98
|
-
assert_equal(96, NetAddr.minimum_size(2**32-1, :Version => 6, :Extended => true))
|
99
|
-
assert_raise(ArgumentError){ NetAddr.minimum_size({}) }
|
100
|
-
end
|
101
|
-
|
102
|
-
def test_netmask_to_i
|
103
|
-
assert_raise(ArgumentError) {NetAddr.netmask_to_i('32', :test => true)}
|
104
|
-
assert_equal(2**32-1, NetAddr.netmask_to_i('255.255.255.255') )
|
105
|
-
assert_equal(2**32-1, NetAddr.netmask_to_i('32') )
|
106
|
-
assert_equal(2**32-1, NetAddr.netmask_to_i('/32') )
|
107
|
-
assert_equal(2**32-1, NetAddr.netmask_to_i(32) )
|
108
|
-
assert_equal(2**128-1, NetAddr.netmask_to_i('128', :Version => 6) )
|
109
|
-
assert_equal(2**128-1, NetAddr.netmask_to_i('/128', :Version => 6) )
|
110
|
-
assert_equal(2**128-1, NetAddr.netmask_to_i(128, :Version => 6) )
|
111
|
-
assert_raise(ArgumentError){ NetAddr.netmask_to_i({}) }
|
112
|
-
assert_raise(NetAddr::VersionError){ NetAddr.netmask_to_i('/24',:Version => 5) }
|
113
|
-
assert_raise(ArgumentError){ NetAddr.netmask_to_i([], :Version => 4) }
|
114
|
-
end
|
115
|
-
|
116
|
-
def test_range
|
117
|
-
cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
|
118
|
-
cidr4_2 = NetAddr::CIDR.create('192.168.1.50/24')
|
119
|
-
cidr4_3 = NetAddr::CIDR.create('192.168.1.2/24')
|
120
|
-
cidr6_1 = NetAddr::CIDR.create('fec0::/64')
|
121
|
-
cidr6_2 = NetAddr::CIDR.create('fec0::32/64')
|
122
|
-
|
123
|
-
assert_raise(ArgumentError) {NetAddr.range(cidr4_1,cidr4_2, :test => true)}
|
124
|
-
assert_equal(['192.168.1.1'], NetAddr.range(cidr4_1,cidr4_2, :Limit => 1) )
|
125
|
-
assert_equal(['fec0:0000:0000:0000:0000:0000:0000:0001'], NetAddr.range(cidr6_1,cidr6_2, :Limit => 1) )
|
126
|
-
|
127
|
-
list = NetAddr.range('192.168.1.0/24','192.168.1.50/24', :Bitstep => 2)
|
128
|
-
assert_equal(25, list.length)
|
129
|
-
assert_equal('192.168.1.49', list[24])
|
130
|
-
|
131
|
-
list = NetAddr.range(cidr4_1,cidr4_3, :Objectify => true)
|
132
|
-
assert_kind_of(NetAddr::CIDR, list[0])
|
133
|
-
assert_equal('192.168.1.1/32', (list[0]).desc)
|
134
|
-
|
135
|
-
assert_raise(ArgumentError){ NetAddr.range(:Limit => 1) }
|
136
|
-
assert_raise(NetAddr::VersionError){ NetAddr.range(cidr4_1,cidr6_2) }
|
137
|
-
|
138
|
-
assert_equal(256, NetAddr.range('192.168.0.0', '192.168.0.255', :Size => true, :Inclusive => true) )
|
139
|
-
end
|
140
|
-
|
141
|
-
def test_shorten
|
142
|
-
assert_equal('fec0::', NetAddr.shorten('fec0:0000:0000:0000:0000:0000:0000:0000') )
|
143
|
-
assert_equal('fec0::2:0:0:1', NetAddr.shorten('fec0:0000:0000:0000:0002:0000:0000:0001') )
|
144
|
-
assert_equal('fec0::2:0:0:1', NetAddr.shorten('fec0:00:0000:0:02:0000:0:1') )
|
145
|
-
assert_equal('fec0::2:2:0:0:1', NetAddr.shorten('fec0:0000:0000:0002:0002:0000:0000:0001') )
|
146
|
-
assert_equal('fec0:0:0:1::', NetAddr.shorten('fec0:0000:0000:0001:0000:0000:0000:0000') )
|
147
|
-
assert_equal('fec0:1:1:1:1:1:1:1', NetAddr.shorten('fec0:0001:0001:0001:0001:0001:0001:0001') )
|
148
|
-
assert_equal('fec0:ffff:ffff:0:ffff:ffff:ffff:ffff', NetAddr.shorten('fec0:ffff:ffff:0000:ffff:ffff:ffff:ffff') )
|
149
|
-
assert_equal('fec0:ffff:ffff:ffff:ffff:ffff:ffff:ffff', NetAddr.shorten('fec0:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
|
150
|
-
assert_equal('fec0::', NetAddr.shorten('fec0::') )
|
151
|
-
assert_equal('fec0::192.168.1.1', NetAddr.shorten('fec0:0:0:0:0:0:192.168.1.1') )
|
152
|
-
assert_raise(ArgumentError){ NetAddr.shorten(1) }
|
153
|
-
end
|
154
|
-
|
155
|
-
def test_sort
|
156
|
-
cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
|
157
|
-
cidr4_2 = NetAddr::CIDR.create('192.168.1.128/25')
|
158
|
-
cidr4_3 = NetAddr::CIDR.create('192.168.1.64/26')
|
159
|
-
cidr4_4 = NetAddr::CIDR.create('192.168.1.0/30')
|
160
|
-
cidr4_5 = '192.168.2.0/24'
|
161
|
-
|
162
|
-
cidr6_1 = NetAddr::CIDR.create('fec0::0/64')
|
163
|
-
cidr6_2 = NetAddr::CIDR.create('fec0::0/10')
|
164
|
-
cidr6_3 = NetAddr::CIDR.create('fe80::0/10')
|
165
|
-
cidr6_4 = 'fe80::0'
|
166
|
-
|
167
|
-
sort1 = NetAddr.sort(['192.168.1.0/24','192.168.1.128/25','192.168.1.64/26','192.168.1.0/30','192.168.2.0/24'])
|
168
|
-
assert_equal(['192.168.1.0/24','192.168.1.0/30','192.168.1.64/26','192.168.1.128/25','192.168.2.0/24'], sort1)
|
169
|
-
sort1 = NetAddr.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5])
|
170
|
-
assert_equal([cidr4_1,cidr4_4,cidr4_3,cidr4_2,cidr4_5], sort1)
|
171
|
-
|
172
|
-
sort2 = NetAddr.sort(['fec0::0/64','fec0::0/10','fe80::0/10','fe80::0'])
|
173
|
-
assert_equal(['fe80::0/10','fe80::0','fec0::0/10','fec0::0/64'], sort2)
|
174
|
-
sort2 = NetAddr.sort([cidr6_1,cidr6_2,cidr6_3,cidr6_4])
|
175
|
-
assert_equal([cidr6_3,cidr6_4,cidr6_2,cidr6_1], sort2)
|
176
|
-
|
177
|
-
sort3 = NetAddr.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5], :Desc => true)
|
178
|
-
assert_equal([cidr4_5,cidr4_2,cidr4_3,cidr4_1,cidr4_4], sort3)
|
179
|
-
sort3 = NetAddr.sort(['192.168.1.0/24','192.168.1.128/25','192.168.1.64/26','192.168.1.0/30','192.168.2.0/24'], :Desc => true)
|
180
|
-
assert_equal(['192.168.2.0/24','192.168.1.128/25','192.168.1.64/26','192.168.1.0/24','192.168.1.0/30'], sort3)
|
181
|
-
|
182
|
-
sort4 = NetAddr.sort(['192.168.1.0/24','192.168.1.128/25','192.168.1.64/26','192.168.1.0/30','192.168.2.0/24'], :ByMask => true)
|
183
|
-
assert_equal(['192.168.1.0/24','192.168.2.0/24','192.168.1.128/25','192.168.1.64/26','192.168.1.0/30'], sort4)
|
184
|
-
sort4 = NetAddr.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5], :ByMask => true)
|
185
|
-
assert_equal([cidr4_1,cidr4_5,cidr4_2,cidr4_3,cidr4_4], sort4)
|
186
|
-
|
187
|
-
sort5 = NetAddr.sort(['192.168.1.0/24','192.168.1.128/25','192.168.1.64/26','192.168.1.0/30','192.168.2.0/24'], :ByMask => true, :Desc => true)
|
188
|
-
assert_equal(['192.168.1.0/30','192.168.1.64/26','192.168.1.128/25','192.168.1.0/24','192.168.2.0/24'], sort5)
|
189
|
-
sort5 = NetAddr.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5], :ByMask => true, :Desc => true)
|
190
|
-
assert_equal([cidr4_4,cidr4_3,cidr4_2,cidr4_1,cidr4_5], sort5)
|
191
|
-
end
|
192
|
-
|
193
|
-
def test_supernets
|
194
|
-
assert_raise(ArgumentError){ NetAddr.supernets(1) }
|
195
|
-
assert_raise(ArgumentError){ NetAddr.supernets({}) }
|
196
|
-
|
197
|
-
list4 = ['192.168.1.0', '192.168.1.1', '192.168.1.0/31', '10.1.1.0/24', '10.1.1.32/27']
|
198
|
-
list6 = ['fec0::/64', 'fec0::', 'fe80::/32', 'fe80::1']
|
199
|
-
assert_equal(['10.1.1.0/24','192.168.1.0/31'], NetAddr.supernets(list4) )
|
200
|
-
assert_equal(['fe80:0000:0000:0000:0000:0000:0000:0000/32', 'fec0:0000:0000:0000:0000:0000:0000:0000/64'], NetAddr.supernets(list6) )
|
201
|
-
assert_equal(['fe80::/32', 'fec0::/64'], NetAddr.supernets(list6, :Short => true) )
|
202
|
-
|
203
|
-
list4.push( NetAddr::CIDR.create('192.168.0.0/23') )
|
204
|
-
list6.push( NetAddr::CIDR.create('fec0::/48') )
|
205
|
-
summ = NetAddr.supernets(list4.concat(list6), :Objectify => true)
|
206
|
-
assert_equal('192.168.1.0/31', summ[0].tag[:Subnets][0].desc)
|
207
|
-
end
|
208
|
-
|
209
|
-
def test_unshorten
|
210
|
-
assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000', NetAddr.unshorten('fec0::') )
|
211
|
-
assert_equal('fec0:0000:0000:0000:0002:0000:0000:0001', NetAddr.unshorten('fec0::2:0:0:1') )
|
212
|
-
assert_equal('fec0:0000:0000:0000:0002:0000:0000:0001', NetAddr.unshorten('fec0:0:0:0:2:0:0:1') )
|
213
|
-
assert_equal('0000:0000:0000:0000:0000:ffff:10.1.0.1', NetAddr.unshorten('::ffff:10.1.0.1') )
|
214
|
-
|
215
|
-
assert_raise(ArgumentError){ NetAddr.unshorten(1) }
|
216
|
-
end
|
217
|
-
|
218
|
-
def test_validate_eui
|
219
|
-
assert_nothing_raised(NetAddr::ValidationError) {NetAddr.validate_eui('aa-bb-cc-dd-ee-ff')}
|
220
|
-
assert_nothing_raised(NetAddr::ValidationError) {NetAddr.validate_eui('aabb.ccdd.eeff') }
|
221
|
-
assert_nothing_raised(NetAddr::ValidationError) {NetAddr.validate_eui('aa:bb:cc:dd:ee:ff') }
|
222
|
-
assert_nothing_raised(NetAddr::ValidationError) {NetAddr.validate_eui('aabb.ccdd.eeff.1234') }
|
223
|
-
assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aabb.ccdd.eeff.123') }
|
224
|
-
assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aabb.ccdd.eeff.12312') }
|
225
|
-
assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aa-bb-c-dd-ee-ff') }
|
226
|
-
assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aa:bb:cc:dd:e:ff') }
|
227
|
-
assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aa:bb:cc:dd:ee:^^') }
|
228
|
-
assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aa:bb:cc:dd:ee:ZZ') }
|
229
|
-
assert_raise(ArgumentError){ NetAddr.validate_eui(0xaabbccddeeff) }
|
230
|
-
assert_raise(ArgumentError){ NetAddr.validate_eui() }
|
231
|
-
end
|
232
|
-
|
233
|
-
def test_validate_ip_addr
|
234
|
-
assert_raise(ArgumentError) {NetAddr.validate_ip_addr('192.168.1.0', :test => true)}
|
235
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('192.168.1.0')}
|
236
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('255.255.255.255')}
|
237
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('224.0.0.1')}
|
238
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('0.192.0.1')}
|
239
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('0.0.0.0')}
|
240
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr(0xff0000)}
|
241
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr(2**32-1)}
|
242
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr(0)}
|
243
|
-
|
244
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff')}
|
245
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('::')}
|
246
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('ffff::1')}
|
247
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('1234:5678:9abc:def0:1234:5678:9abc:def0')}
|
248
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('::1')}
|
249
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('ffff::')}
|
250
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('0001::1')}
|
251
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('2001:4800::64.39.2.1')}
|
252
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('::1.1.1.1')}
|
253
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('::192.168.255.0')}
|
254
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr(2**128-1)}
|
255
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('fec0:0:0:0:0:0:192.168.1.1')}
|
256
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('8080::8080:10.10.10.10')}
|
257
|
-
|
258
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('') }
|
259
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('10.0') }
|
260
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('10.0..0') }
|
261
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('192.168.1.256') }
|
262
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('192..168.1.1') }
|
263
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('192.168.1a.255') }
|
264
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('192.168.1.1.1') }
|
265
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('ff.ff.ff.ff') }
|
266
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr(2**128-1, :Version => 4) }
|
267
|
-
|
268
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('ffff::1111::1111') }
|
269
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('abcd:efgh::1') }
|
270
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('fffff::1') }
|
271
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('fffg::1') }
|
272
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('ffff:::0::1') }
|
273
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('1:0:0:0:0:0:0:0:1') }
|
274
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('::192.168.256.0') }
|
275
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('::192.168.a3.0') }
|
276
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('::192.168.1.1.0') }
|
277
|
-
|
278
|
-
assert_raise(ArgumentError){ NetAddr.validate_ip_addr({}) }
|
279
|
-
assert_raise(ArgumentError){ NetAddr.validate_ip_addr([])}
|
280
|
-
assert_raise(ArgumentError){ NetAddr.validate_ip_addr('192.168.1.0', :Version => 5)}
|
281
|
-
|
282
|
-
end
|
283
|
-
|
284
|
-
def test_validate_ip_netmask
|
285
|
-
assert_raise(ArgumentError) {NetAddr.validate_ip_netmask('255.255.255.255', :test => true)}
|
286
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('255.255.255.255')}
|
287
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('32')}
|
288
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('/32')}
|
289
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask(32)}
|
290
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask(0xffffffff, :Integer => true)}
|
291
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('128', :Version => 6)}
|
292
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('/128', :Version => 6)}
|
293
|
-
assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask(128, :Version => 6)}
|
294
|
-
|
295
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_netmask('255.192.255.0') }
|
296
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_netmask(33) }
|
297
|
-
assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_netmask(129, :Version => 6) }
|
298
|
-
|
299
|
-
assert_raise(ArgumentError){ NetAddr.validate_ip_netmask({}) }
|
300
|
-
assert_raise(ArgumentError){ NetAddr.validate_ip_netmask([])}
|
301
|
-
assert_raise(ArgumentError){ NetAddr.validate_ip_netmask('/24', :Version => 5)}
|
302
|
-
end
|
303
|
-
|
304
|
-
def test_wildcard
|
305
|
-
cidr = NetAddr.wildcard('192.168.*')
|
306
|
-
assert_equal(NetAddr::CIDRv4, cidr.class )
|
307
|
-
assert_equal(16, cidr.bits)
|
308
|
-
assert_equal('192.168.0.0', cidr.network)
|
309
|
-
|
310
|
-
cidr = NetAddr.wildcard('192.*.1.0')
|
311
|
-
assert_equal(8, cidr.bits)
|
312
|
-
assert_equal('192.0.0.0', cidr.network)
|
313
|
-
|
314
|
-
cidr = NetAddr.wildcard('fec0:*')
|
315
|
-
assert_equal(NetAddr::CIDRv6, cidr.class )
|
316
|
-
assert_equal(16, cidr.bits)
|
317
|
-
assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000', cidr.network)
|
318
|
-
|
319
|
-
cidr = NetAddr.wildcard('fec0:1:*')
|
320
|
-
assert_equal(32, cidr.bits)
|
321
|
-
assert_equal('fec0:0001:0000:0000:0000:0000:0000:0000', cidr.network)
|
322
|
-
|
323
|
-
assert_raise(ArgumentError){NetAddr.wildcard('fec0::*')}
|
324
|
-
assert_raise(ArgumentError){NetAddr.wildcard('::ffff:192.168.*')}
|
325
|
-
end
|
326
|
-
|
327
|
-
end
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
data/test/tree_test.rb
DELETED
@@ -1,347 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
|
-
|
3
|
-
require 'lib/netaddr.rb'
|
4
|
-
require 'test/unit'
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
class TestTree < Test::Unit::TestCase
|
9
|
-
|
10
|
-
def test_add
|
11
|
-
tree = NetAddr::Tree.new()
|
12
|
-
|
13
|
-
assert_nothing_raised(RuntimeError){tree.add!('192.168.1.0 255.255.255.0')}
|
14
|
-
assert_nothing_raised(RuntimeError){tree.add!('10.1.0.0/24')}
|
15
|
-
assert_nothing_raised(RuntimeError){tree.add!('10.1.0.0')}
|
16
|
-
assert_nothing_raised(RuntimeError){tree.add!('192.168.1.0/26')}
|
17
|
-
assert_nothing_raised(RuntimeError){tree.add!('fec0::/10')}
|
18
|
-
assert_nothing_raised(RuntimeError){tree.add!('fec0::/64')}
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_ancestors
|
23
|
-
tree = NetAddr::Tree.new()
|
24
|
-
|
25
|
-
tree.add!('192.168.1.0/24')
|
26
|
-
tree.add!('192.168.1.64/26')
|
27
|
-
tree.add!('192.168.1.64/27')
|
28
|
-
tree.add!('192.168.1.64/28')
|
29
|
-
tree.add!('192.168.2.0/24')
|
30
|
-
|
31
|
-
ancestors = tree.ancestors('192.168.1.64/28')
|
32
|
-
assert_equal('192.168.1.64/27', ancestors[0].desc)
|
33
|
-
assert_equal('192.168.1.64/26', ancestors[1].desc)
|
34
|
-
assert_equal('192.168.1.0/24', ancestors[2].desc)
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_children
|
39
|
-
tree = NetAddr::Tree.new()
|
40
|
-
|
41
|
-
tree.add!('192.168.1.0/24')
|
42
|
-
tree.add!('192.168.1.64/26')
|
43
|
-
tree.add!('192.168.1.64/27')
|
44
|
-
tree.add!('192.168.1.96/27')
|
45
|
-
tree.add!('192.168.1.64/28')
|
46
|
-
tree.add!('192.168.2.0/24')
|
47
|
-
|
48
|
-
children = tree.children('192.168.1.64/26')
|
49
|
-
assert_equal('192.168.1.64/27', children[0].desc)
|
50
|
-
assert_equal('192.168.1.96/27', children[1].desc)
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_delete
|
54
|
-
tree = NetAddr::Tree.new()
|
55
|
-
|
56
|
-
tree.add!('192.168.1.0/24')
|
57
|
-
tree.add!('192.168.1.64/26')
|
58
|
-
tree.add!('192.168.1.64/27')
|
59
|
-
tree.add!('192.168.1.64/28')
|
60
|
-
tree.add!('192.168.2.0/24')
|
61
|
-
|
62
|
-
tree.delete!('192.168.1.64/27')
|
63
|
-
assert_equal('192.168.1.64/28', tree.children('192.168.1.64/26')[0].desc)
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_descendants
|
67
|
-
tree = NetAddr::Tree.new()
|
68
|
-
|
69
|
-
tree.add!('192.168.1.0/24')
|
70
|
-
tree.add!('192.168.1.64/26')
|
71
|
-
tree.add!('192.168.1.64/27')
|
72
|
-
tree.add!('192.168.1.96/27')
|
73
|
-
tree.add!('192.168.1.64/28')
|
74
|
-
tree.add!('192.168.2.0/24')
|
75
|
-
|
76
|
-
descendants = tree.descendants('192.168.1.64/26')
|
77
|
-
assert_equal('192.168.1.64/27', descendants[0].desc)
|
78
|
-
assert_equal('192.168.1.64/28', descendants[1].desc)
|
79
|
-
assert_equal('192.168.1.96/27', descendants[2].desc)
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_dump
|
83
|
-
tree = NetAddr::Tree.new()
|
84
|
-
|
85
|
-
tree.add!('192.168.1.0/24')
|
86
|
-
tree.add!('10.1.0.0/24')
|
87
|
-
tree.add!('192.168.1.0/26')
|
88
|
-
tree.add!('192.168.1.0/30')
|
89
|
-
tree.add!('fec0::/10')
|
90
|
-
tree.add!('fe80::/10')
|
91
|
-
tree.add!('fec0::/64')
|
92
|
-
tree.add!('fec0::/126')
|
93
|
-
|
94
|
-
dump = tree.dump()
|
95
|
-
|
96
|
-
obj0 = dump[0][:CIDR]
|
97
|
-
obj1 = dump[1][:CIDR]
|
98
|
-
obj3 = dump[3][:CIDR]
|
99
|
-
assert_equal('10.1.0.0/24', obj0.desc)
|
100
|
-
assert_equal('192.168.1.0/24', obj1.desc)
|
101
|
-
assert_equal('192.168.1.0/30', obj3.desc)
|
102
|
-
|
103
|
-
obj4 = dump[4][:CIDR]
|
104
|
-
obj5 = dump[5][:CIDR]
|
105
|
-
obj7 = dump[7][:CIDR]
|
106
|
-
assert_equal('fe80:0000:0000:0000:0000:0000:0000:0000/10', obj4.desc)
|
107
|
-
assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/10', obj5.desc)
|
108
|
-
assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/126', obj7.desc)
|
109
|
-
|
110
|
-
end
|
111
|
-
|
112
|
-
def test_exists
|
113
|
-
|
114
|
-
tree = NetAddr::Tree.new()
|
115
|
-
|
116
|
-
tree.add!('192.168.1.0/24')
|
117
|
-
tree.add!('10.1.0.0/24')
|
118
|
-
tree.add!('192.168.1.64/26')
|
119
|
-
tree.add!('10.1.0.44/30')
|
120
|
-
|
121
|
-
assert_equal(true, tree.exists?('192.168.1.0/24'))
|
122
|
-
assert_equal(true, tree.exists?('10.1.0.44/30'))
|
123
|
-
assert_equal(false, tree.exists?('10.2.0.0/24'))
|
124
|
-
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_fill_in
|
128
|
-
tree = NetAddr::Tree.new()
|
129
|
-
|
130
|
-
tree.add!('192.168.1.0/24')
|
131
|
-
tree.add!('192.168.1.64/26')
|
132
|
-
|
133
|
-
tree.fill_in!('192.168.1.0/24')
|
134
|
-
children = tree.children('192.168.1.0/24')
|
135
|
-
|
136
|
-
assert_equal('192.168.1.0/26', children[0].desc)
|
137
|
-
assert_equal('192.168.1.64/26', children[1].desc)
|
138
|
-
assert_equal('192.168.1.128/25', children[2].desc)
|
139
|
-
end
|
140
|
-
|
141
|
-
def test_find
|
142
|
-
tree = NetAddr::Tree.new()
|
143
|
-
|
144
|
-
tree.add!('192.168.1.0/24')
|
145
|
-
tree.add!('10.1.0.0/24')
|
146
|
-
tree.add!('192.168.1.64/26')
|
147
|
-
tree.add!('10.1.0.44/30')
|
148
|
-
assert_equal('192.168.1.64/26', tree.longest_match('192.168.1.64/26').desc)
|
149
|
-
assert_equal('10.1.0.44/30', tree.longest_match('10.1.0.44/30').desc)
|
150
|
-
end
|
151
|
-
|
152
|
-
def test_find_space
|
153
|
-
tree = NetAddr::Tree.new()
|
154
|
-
|
155
|
-
cidr = ['192.168.1.0/24','192.168.1.0/26','192.168.1.64/26',
|
156
|
-
'192.168.1.128/26','192.168.1.192/26','192.168.1.0/27',
|
157
|
-
'192.168.1.0/28','192.168.1.16/30','192.168.1.16/29',
|
158
|
-
'192.168.1.32/27','192.168.1.24/30','192.168.1.28/30',
|
159
|
-
'192.168.1.64/27','192.168.1.25',
|
160
|
-
'fec0::/60','fec0::/66','fec0::4000:0:0:0/66',
|
161
|
-
'fec0::8000:0:0:0/66','fec0::c000:0:0:0/66','fec0::c000:0:0:0/67',
|
162
|
-
'fec0::/67','fec0::2000:0:0:0/67','fec0::8000:0:0:0/67','fec0::4000:0:0:0/69']
|
163
|
-
|
164
|
-
assert_raise(ArgumentError) {tree.find_space(:test => true)}
|
165
|
-
cidr.each {|x| tree.add!(x)}
|
166
|
-
assert_equal(10, tree.find_space(:IPCount => 16).length)
|
167
|
-
end
|
168
|
-
|
169
|
-
def test_longest_match
|
170
|
-
|
171
|
-
tree = NetAddr::Tree.new()
|
172
|
-
|
173
|
-
tree.add!('192.168.1.0/24')
|
174
|
-
tree.add!('10.1.0.0/24')
|
175
|
-
tree.add!('192.168.1.64/26')
|
176
|
-
tree.add!('10.1.0.44/30')
|
177
|
-
|
178
|
-
assert_equal('192.168.1.64/26', tree.longest_match('192.168.1.65').desc)
|
179
|
-
assert_equal('10.1.0.44/30', tree.longest_match('10.1.0.46').desc)
|
180
|
-
assert_equal('0.0.0.0/0', tree.longest_match('192.168.2.0').desc )
|
181
|
-
|
182
|
-
end
|
183
|
-
|
184
|
-
def test_merge_subnets
|
185
|
-
tree = NetAddr::Tree.new()
|
186
|
-
|
187
|
-
tree.add!('192.168.1.0/24')
|
188
|
-
tree.add!('192.168.1.0/26')
|
189
|
-
tree.add!('192.168.1.64/26')
|
190
|
-
tree.add!('192.168.1.192/26')
|
191
|
-
|
192
|
-
tree.merge_subnets!('192.168.1.0/24')
|
193
|
-
children = tree.children('192.168.1.0/24')
|
194
|
-
|
195
|
-
assert_equal('192.168.1.0/25', children[0].desc)
|
196
|
-
assert_equal('192.168.1.192/26', children[1].desc)
|
197
|
-
end
|
198
|
-
|
199
|
-
def test_prune
|
200
|
-
cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
|
201
|
-
cidr4_2 = NetAddr::CIDR.create('10.1.0.0/24')
|
202
|
-
cidr4_3 = NetAddr::CIDR.create('192.168.1.0/26')
|
203
|
-
cidr4_4 = NetAddr::CIDR.create('192.168.1.0/30')
|
204
|
-
cidr4_5 = NetAddr::CIDR.create('192.168.1.64/26')
|
205
|
-
cidr4_6 = NetAddr::CIDR.create('192.168.1.128/26')
|
206
|
-
cidr4_7 = NetAddr::CIDR.create('192.168.1.192/26')
|
207
|
-
|
208
|
-
tree4 = NetAddr::Tree.new()
|
209
|
-
|
210
|
-
tree4.add!(cidr4_1)
|
211
|
-
tree4.add!(cidr4_2)
|
212
|
-
tree4.add!(cidr4_3)
|
213
|
-
tree4.add!(cidr4_4)
|
214
|
-
tree4.add!(cidr4_5)
|
215
|
-
tree4.add!(cidr4_6)
|
216
|
-
tree4.add!(cidr4_7)
|
217
|
-
|
218
|
-
tree4.prune!(cidr4_5)
|
219
|
-
dump = tree4.dump
|
220
|
-
assert_equal(7, dump.length)
|
221
|
-
|
222
|
-
tree4.prune!(cidr4_1)
|
223
|
-
dump = tree4.dump
|
224
|
-
assert_equal(2, dump.length)
|
225
|
-
end
|
226
|
-
|
227
|
-
def test_remove
|
228
|
-
cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
|
229
|
-
cidr4_2 = NetAddr::CIDR.create('10.1.0.0/24')
|
230
|
-
cidr4_3 = NetAddr::CIDR.create('192.168.1.0/26')
|
231
|
-
cidr4_4 = NetAddr::CIDR.create('192.168.1.0/30')
|
232
|
-
cidr4_5 = NetAddr::CIDR.create('192.168.1.64/26')
|
233
|
-
cidr4_6 = NetAddr::CIDR.create('192.168.1.128/26')
|
234
|
-
cidr4_7 = NetAddr::CIDR.create('192.168.1.192/26')
|
235
|
-
|
236
|
-
tree4 = NetAddr::Tree.new()
|
237
|
-
|
238
|
-
tree4.add!(cidr4_1)
|
239
|
-
tree4.add!(cidr4_2)
|
240
|
-
tree4.add!(cidr4_3)
|
241
|
-
tree4.add!(cidr4_4)
|
242
|
-
tree4.add!(cidr4_5)
|
243
|
-
tree4.add!(cidr4_6)
|
244
|
-
tree4.add!(cidr4_7)
|
245
|
-
|
246
|
-
tree4.remove!(cidr4_5)
|
247
|
-
dump = tree4.dump
|
248
|
-
assert_equal(6, dump.length)
|
249
|
-
|
250
|
-
tree4.remove!(cidr4_1)
|
251
|
-
dump = tree4.dump
|
252
|
-
assert_equal(1, dump.length)
|
253
|
-
end
|
254
|
-
|
255
|
-
def test_root
|
256
|
-
tree = NetAddr::Tree.new()
|
257
|
-
|
258
|
-
tree.add!('192.168.1.0/24')
|
259
|
-
tree.add!('192.168.1.64/26')
|
260
|
-
tree.add!('192.168.1.64/27')
|
261
|
-
tree.add!('192.168.2.0/24')
|
262
|
-
|
263
|
-
assert_equal('192.168.1.0/24', tree.root('192.168.1.64/27').desc)
|
264
|
-
end
|
265
|
-
|
266
|
-
def test_show
|
267
|
-
cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
|
268
|
-
cidr4_2 = NetAddr::CIDR.create('10.1.0.0/24')
|
269
|
-
cidr4_3 = NetAddr::CIDR.create('192.168.1.0/26')
|
270
|
-
cidr4_4 =NetAddr::CIDR.create('192.168.1.0/30')
|
271
|
-
cidr4_5 = NetAddr::CIDR.create('192.168.1.64/26')
|
272
|
-
cidr4_6 = NetAddr::CIDR.create('192.168.1.128/26')
|
273
|
-
cidr4_7 = NetAddr::CIDR.create('192.168.1.192/26')
|
274
|
-
|
275
|
-
tree4 = NetAddr::Tree.new()
|
276
|
-
|
277
|
-
tree4.add!(cidr4_1)
|
278
|
-
tree4.add!(cidr4_2)
|
279
|
-
tree4.add!(cidr4_3)
|
280
|
-
tree4.add!(cidr4_4)
|
281
|
-
tree4.add!(cidr4_5)
|
282
|
-
tree4.add!(cidr4_6)
|
283
|
-
tree4.add!(cidr4_7)
|
284
|
-
|
285
|
-
assert_not_nil(tree4.show())
|
286
|
-
end
|
287
|
-
|
288
|
-
def test_siblings
|
289
|
-
tree = NetAddr::Tree.new()
|
290
|
-
|
291
|
-
tree.add!('192.168.1.0/24')
|
292
|
-
tree.add!('192.168.1.0/26')
|
293
|
-
tree.add!('192.168.1.64/26')
|
294
|
-
tree.add!('192.168.1.128/26')
|
295
|
-
tree.add!('192.168.1.192/26')
|
296
|
-
|
297
|
-
assert_equal(3, tree.siblings('192.168.1.0/26').length)
|
298
|
-
end
|
299
|
-
|
300
|
-
def test_interactions
|
301
|
-
show1 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.8/29\n 192.168.12.8/30\n"
|
302
|
-
show2 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.8/29\n 192.168.12.8/30\n 192.168.12.12/30\n"
|
303
|
-
show3 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.0/29\n 192.168.12.8/29\n 192.168.12.8/30\n" +
|
304
|
-
" 192.168.12.12/30\n 192.168.12.16/28\n 192.168.12.32/27\n"
|
305
|
-
show4 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.0/29\n 192.168.12.8/30\n 192.168.12.12/30\n" +
|
306
|
-
" 192.168.12.16/28\n 192.168.12.32/27\n"
|
307
|
-
show5 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.0/28\n 192.168.12.0/29\n" +
|
308
|
-
" 192.168.12.8/29\n 192.168.12.8/30\n 192.168.12.12/30\n 192.168.12.16/28\n 192.168.12.32/27\n"
|
309
|
-
show6 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.0/28\n 192.168.12.0/29\n" +
|
310
|
-
" 192.168.12.8/29\n 192.168.12.16/28\n 192.168.12.32/27\n"
|
311
|
-
show7 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.16/28\n 192.168.12.32/27\n"
|
312
|
-
show8 = "IPv4 Tree\n---------\n192.168.12.0/24\n 192.168.12.16/28\n 192.168.12.32/27\n 192.168.12.64/26\n"
|
313
|
-
show9 = "IPv4 Tree\n---------\n192.168.12.0/24\n 192.168.12.0/25\n 192.168.12.0/26\n" +
|
314
|
-
" 192.168.12.16/28\n 192.168.12.32/27\n 192.168.12.64/26\n"
|
315
|
-
|
316
|
-
tree = NetAddr::Tree.new
|
317
|
-
tree.add!('192.168.12.0/26')
|
318
|
-
tree.add!('192.168.12.8/29')
|
319
|
-
tree.add!('192.168.12.8/30')
|
320
|
-
assert_equal(show1, tree.show)
|
321
|
-
tree.fill_in! '192.168.12.8/29'
|
322
|
-
assert_equal(show2, tree.show)
|
323
|
-
tree.fill_in! '192.168.12.0/26'
|
324
|
-
assert_equal(show3, tree.show)
|
325
|
-
tree.delete!('192.168.12.8/29')
|
326
|
-
assert_equal(show4, tree.show)
|
327
|
-
tree.add!('192.168.12.8/29')
|
328
|
-
tree.add!('192.168.12.0/28')
|
329
|
-
tree.add!('192.168.12.0/29')
|
330
|
-
assert_equal(show5, tree.show)
|
331
|
-
tree.prune!('192.168.12.8/29')
|
332
|
-
assert_equal(show6, tree.show)
|
333
|
-
tree.remove!('192.168.12.0/28')
|
334
|
-
assert_equal(show7, tree.show)
|
335
|
-
tree.add!('192.168.12.64/26')
|
336
|
-
tree.resize!('192.168.12.0/26', 24)
|
337
|
-
assert_equal(show8, tree.show)
|
338
|
-
tree.add!('192.168.12.0/26')
|
339
|
-
tree.summarize_subnets!('192.168.12.0/24')
|
340
|
-
assert_equal(show9, tree.show)
|
341
|
-
end
|
342
|
-
|
343
|
-
end
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|