netaddr 1.5.0 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,328 +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
- end
87
-
88
- def test_minimum_size
89
- assert_raise(ArgumentError) {NetAddr.minimum_size(200, :test => true)}
90
- assert_equal(24, NetAddr.minimum_size(200))
91
- assert_equal(96, NetAddr.minimum_size(2**32-1, :Version => 6))
92
- assert_equal('255.255.255.0', NetAddr.minimum_size(200, :Extended => true))
93
- assert_equal('255.255.255.224', NetAddr.minimum_size(17, :Extended => true))
94
- assert_equal(24, NetAddr.minimum_size(200, :Extended => false))
95
- assert_equal(96, NetAddr.minimum_size(2**32-1, :Version => 6, :Extended => true))
96
- assert_raise(ArgumentError){ NetAddr.minimum_size({}) }
97
- end
98
-
99
- def test_netmask_to_i
100
- assert_raise(ArgumentError) {NetAddr.netmask_to_i('32', :test => true)}
101
- assert_equal(2**32-1, NetAddr.netmask_to_i('255.255.255.255') )
102
- assert_equal(2**32-1, NetAddr.netmask_to_i('32') )
103
- assert_equal(2**32-1, NetAddr.netmask_to_i('/32') )
104
- assert_equal(2**32-1, NetAddr.netmask_to_i(32) )
105
- assert_equal(2**128-1, NetAddr.netmask_to_i('128', :Version => 6) )
106
- assert_equal(2**128-1, NetAddr.netmask_to_i('/128', :Version => 6) )
107
- assert_equal(2**128-1, NetAddr.netmask_to_i(128, :Version => 6) )
108
- assert_raise(ArgumentError){ NetAddr.netmask_to_i({}) }
109
- assert_raise(NetAddr::VersionError){ NetAddr.netmask_to_i('/24',:Version => 5) }
110
- assert_raise(ArgumentError){ NetAddr.netmask_to_i([], :Version => 4) }
111
- end
112
-
113
- def test_range
114
- cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
115
- cidr4_2 = NetAddr::CIDR.create('192.168.1.50/24')
116
- cidr4_3 = NetAddr::CIDR.create('192.168.1.2/24')
117
- cidr6_1 = NetAddr::CIDR.create('fec0::/64')
118
- cidr6_2 = NetAddr::CIDR.create('fec0::32/64')
119
-
120
- assert_raise(ArgumentError) {NetAddr.range(cidr4_1,cidr4_2, :test => true)}
121
- assert_equal(['192.168.1.1'], NetAddr.range(cidr4_1,cidr4_2, :Limit => 1) )
122
- assert_equal(['fec0:0000:0000:0000:0000:0000:0000:0001'], NetAddr.range(cidr6_1,cidr6_2, :Limit => 1) )
123
-
124
- list = NetAddr.range('192.168.1.0/24','192.168.1.50/24', :Bitstep => 2)
125
- assert_equal(25, list.length)
126
- assert_equal('192.168.1.49', list[24])
127
-
128
- list = NetAddr.range(cidr4_1,cidr4_3, :Objectify => true)
129
- assert_kind_of(NetAddr::CIDR, list[0])
130
- assert_equal('192.168.1.1/32', (list[0]).desc)
131
-
132
- assert_raise(ArgumentError){ NetAddr.range(:Limit => 1) }
133
- assert_raise(NetAddr::VersionError){ NetAddr.range(cidr4_1,cidr6_2) }
134
-
135
- assert_equal(256, NetAddr.range('192.168.0.0', '192.168.0.255', :Size => true, :Inclusive => true) )
136
- end
137
-
138
- def test_shorten
139
- assert_equal('fec0::', NetAddr.shorten('fec0:0000:0000:0000:0000:0000:0000:0000') )
140
- assert_equal('fec0::2:0:0:1', NetAddr.shorten('fec0:0000:0000:0000:0002:0000:0000:0001') )
141
- assert_equal('fec0::2:0:0:1', NetAddr.shorten('fec0:00:0000:0:02:0000:0:1') )
142
- assert_equal('fec0::2:2:0:0:1', NetAddr.shorten('fec0:0000:0000:0002:0002:0000:0000:0001') )
143
- assert_equal('fec0:0:0:1::', NetAddr.shorten('fec0:0000:0000:0001:0000:0000:0000:0000') )
144
- assert_equal('fec0:1:1:1:1:1:1:1', NetAddr.shorten('fec0:0001:0001:0001:0001:0001:0001:0001') )
145
- assert_equal('fec0:ffff:ffff:0:ffff:ffff:ffff:ffff', NetAddr.shorten('fec0:ffff:ffff:0000:ffff:ffff:ffff:ffff') )
146
- assert_equal('fec0:ffff:ffff:ffff:ffff:ffff:ffff:ffff', NetAddr.shorten('fec0:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
147
- assert_equal('fec0::', NetAddr.shorten('fec0::') )
148
- assert_equal('fec0::192.168.1.1', NetAddr.shorten('fec0:0:0:0:0:0:192.168.1.1') )
149
- assert_raise(ArgumentError){ NetAddr.shorten(1) }
150
- end
151
-
152
- def test_sort
153
- cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
154
- cidr4_2 = NetAddr::CIDR.create('192.168.1.128/25')
155
- cidr4_3 = NetAddr::CIDR.create('192.168.1.64/26')
156
- cidr4_4 = NetAddr::CIDR.create('192.168.1.0/30')
157
- cidr4_5 = '192.168.2.0/24'
158
-
159
- cidr6_1 = NetAddr::CIDR.create('fec0::0/64')
160
- cidr6_2 = NetAddr::CIDR.create('fec0::0/10')
161
- cidr6_3 = NetAddr::CIDR.create('fe80::0/10')
162
- cidr6_4 = 'fe80::0'
163
-
164
- 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'])
165
- 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)
166
- sort1 = NetAddr.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5])
167
- assert_equal([cidr4_1,cidr4_4,cidr4_3,cidr4_2,cidr4_5], sort1)
168
-
169
- sort2 = NetAddr.sort(['fec0::0/64','fec0::0/10','fe80::0/10','fe80::0'])
170
- assert_equal(['fe80::0/10','fe80::0','fec0::0/10','fec0::0/64'], sort2)
171
- sort2 = NetAddr.sort([cidr6_1,cidr6_2,cidr6_3,cidr6_4])
172
- assert_equal([cidr6_3,cidr6_4,cidr6_2,cidr6_1], sort2)
173
-
174
- sort3 = NetAddr.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5], :Desc => true)
175
- assert_equal([cidr4_5,cidr4_2,cidr4_3,cidr4_1,cidr4_4], sort3)
176
- 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)
177
- 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)
178
-
179
- 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)
180
- 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)
181
- sort4 = NetAddr.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5], :ByMask => true)
182
- assert_equal([cidr4_1,cidr4_5,cidr4_2,cidr4_3,cidr4_4], sort4)
183
-
184
- 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)
185
- 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)
186
- sort5 = NetAddr.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5], :ByMask => true, :Desc => true)
187
- assert_equal([cidr4_4,cidr4_3,cidr4_2,cidr4_1,cidr4_5], sort5)
188
- end
189
-
190
- def test_supernets
191
- assert_raise(ArgumentError){ NetAddr.supernets(1) }
192
- assert_raise(ArgumentError){ NetAddr.supernets({}) }
193
-
194
- list4 = ['192.168.1.0', '192.168.1.1', '192.168.1.0/31', '10.1.1.0/24', '10.1.1.32/27']
195
- list6 = ['fec0::/64', 'fec0::', 'fe80::/32', 'fe80::1']
196
- assert_equal(['10.1.1.0/24','192.168.1.0/31'], NetAddr.supernets(list4) )
197
- assert_equal(['fe80:0000:0000:0000:0000:0000:0000:0000/32', 'fec0:0000:0000:0000:0000:0000:0000:0000/64'], NetAddr.supernets(list6) )
198
- assert_equal(['fe80::/32', 'fec0::/64'], NetAddr.supernets(list6, :Short => true) )
199
-
200
- list4.push( NetAddr::CIDR.create('192.168.0.0/23') )
201
- list6.push( NetAddr::CIDR.create('fec0::/48') )
202
- summ = NetAddr.supernets(list4.concat(list6), :Objectify => true)
203
- assert_equal('192.168.1.0/31', summ[0].tag[:Subnets][0].desc)
204
- end
205
-
206
- def test_unshorten
207
- assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000', NetAddr.unshorten('fec0::') )
208
- assert_equal('fec0:0000:0000:0000:0002:0000:0000:0001', NetAddr.unshorten('fec0::2:0:0:1') )
209
- assert_equal('fec0:0000:0000:0000:0002:0000:0000:0001', NetAddr.unshorten('fec0:0:0:0:2:0:0:1') )
210
- assert_equal('0000:0000:0000:0000:0000:ffff:10.1.0.1', NetAddr.unshorten('::ffff:10.1.0.1') )
211
-
212
- assert_raise(ArgumentError){ NetAddr.unshorten(1) }
213
- end
214
-
215
- def test_validate_eui
216
- assert_nothing_raised(NetAddr::ValidationError) {NetAddr.validate_eui('aa-bb-cc-dd-ee-ff')}
217
- assert_nothing_raised(NetAddr::ValidationError) {NetAddr.validate_eui('aabb.ccdd.eeff') }
218
- assert_nothing_raised(NetAddr::ValidationError) {NetAddr.validate_eui('aa:bb:cc:dd:ee:ff') }
219
- assert_nothing_raised(NetAddr::ValidationError) {NetAddr.validate_eui('aabb.ccdd.eeff.1234') }
220
- assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aabb.ccdd.eeff.123') }
221
- assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aabb.ccdd.eeff.12312') }
222
- assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aa-bb-c-dd-ee-ff') }
223
- assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aa:bb:cc:dd:e:ff') }
224
- assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aa:bb:cc:dd:ee:^^') }
225
- assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aa:bb:cc:dd:ee:ZZ') }
226
- assert_raise(ArgumentError){ NetAddr.validate_eui(0xaabbccddeeff) }
227
- assert_raise(ArgumentError){ NetAddr.validate_eui() }
228
- end
229
-
230
- def test_validate_ip_addr
231
- assert_raise(ArgumentError) {NetAddr.validate_ip_addr('192.168.1.0', :test => true)}
232
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('192.168.1.0')}
233
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('255.255.255.255')}
234
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('224.0.0.1')}
235
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('0.192.0.1')}
236
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('0.0.0.0')}
237
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr(0xff0000)}
238
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr(2**32-1)}
239
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr(0)}
240
-
241
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff')}
242
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('::')}
243
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('ffff::1')}
244
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('1234:5678:9abc:def0:1234:5678:9abc:def0')}
245
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('::1')}
246
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('ffff::')}
247
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('0001::1')}
248
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('2001:4800::64.39.2.1')}
249
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('::1.1.1.1')}
250
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('::192.168.255.0')}
251
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr(2**128-1)}
252
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('fec0:0:0:0:0:0:192.168.1.1')}
253
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('8080::8080:10.10.10.10')}
254
-
255
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('') }
256
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('10.0') }
257
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('10.0..0') }
258
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('192.168.1.256') }
259
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('192..168.1.1') }
260
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('192.168.1a.255') }
261
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('192.168.1.1.1') }
262
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('ff.ff.ff.ff') }
263
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr(2**128-1, :Version => 4) }
264
-
265
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('ffff::1111::1111') }
266
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('abcd:efgh::1') }
267
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('fffff::1') }
268
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('fffg::1') }
269
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('ffff:::0::1') }
270
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('1:0:0:0:0:0:0:0:1') }
271
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('::192.168.256.0') }
272
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('::192.168.a3.0') }
273
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('::192.168.1.1.0') }
274
-
275
- assert_raise(ArgumentError){ NetAddr.validate_ip_addr({}) }
276
- assert_raise(ArgumentError){ NetAddr.validate_ip_addr([])}
277
- assert_raise(ArgumentError){ NetAddr.validate_ip_addr('192.168.1.0', :Version => 5)}
278
-
279
- end
280
-
281
- def test_validate_ip_netmask
282
- assert_raise(ArgumentError) {NetAddr.validate_ip_netmask('255.255.255.255', :test => true)}
283
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('255.255.255.255')}
284
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('32')}
285
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('/32')}
286
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask(32)}
287
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask(0xffffffff, :Integer => true)}
288
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('128', :Version => 6)}
289
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('/128', :Version => 6)}
290
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask(128, :Version => 6)}
291
-
292
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_netmask('255.192.255.0') }
293
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_netmask(33) }
294
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_netmask(129, :Version => 6) }
295
-
296
- assert_raise(ArgumentError){ NetAddr.validate_ip_netmask({}) }
297
- assert_raise(ArgumentError){ NetAddr.validate_ip_netmask([])}
298
- assert_raise(ArgumentError){ NetAddr.validate_ip_netmask('/24', :Version => 5)}
299
- end
300
-
301
- def test_wildcard
302
- cidr = NetAddr.wildcard('192.168.*')
303
- assert_equal(NetAddr::CIDRv4, cidr.class )
304
- assert_equal(16, cidr.bits)
305
- assert_equal('192.168.0.0', cidr.network)
306
-
307
- cidr = NetAddr.wildcard('192.*.1.0')
308
- assert_equal(8, cidr.bits)
309
- assert_equal('192.0.0.0', cidr.network)
310
-
311
- cidr = NetAddr.wildcard('fec0:*')
312
- assert_equal(NetAddr::CIDRv6, cidr.class )
313
- assert_equal(16, cidr.bits)
314
- assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000', cidr.network)
315
-
316
- cidr = NetAddr.wildcard('fec0:1:*')
317
- assert_equal(32, cidr.bits)
318
- assert_equal('fec0:0001:0000:0000:0000:0000:0000:0000', cidr.network)
319
-
320
- assert_raise(ArgumentError){NetAddr.wildcard('fec0::*')}
321
- assert_raise(ArgumentError){NetAddr.wildcard('::ffff:192.168.*')}
322
- end
323
-
324
- end
325
-
326
-
327
-
328
-
data/tests/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
-