@@ -30,29 +30,33 @@ func TestAllocate(t *testing.T) {
30
30
cidr string
31
31
free int
32
32
released string
33
- outOfRange1 string
34
- outOfRange2 string
35
- outOfRange3 string
33
+ outOfRange []string
36
34
alreadyAllocated string
37
35
}{
38
36
{
39
- name : "IPv4" ,
40
- cidr : "192.168.1.0/24" ,
41
- free : 254 ,
42
- released : "192.168.1.5" ,
43
- outOfRange1 : "192.168.0.1" ,
44
- outOfRange2 : "192.168.1.0" ,
45
- outOfRange3 : "192.168.1.255" ,
37
+ name : "IPv4" ,
38
+ cidr : "192.168.1.0/24" ,
39
+ free : 254 ,
40
+ released : "192.168.1.5" ,
41
+ outOfRange : []string {
42
+ "192.168.0.1" , // not in 192.168.1.0/24
43
+ "192.168.1.0" , // reserved (base address)
44
+ "192.168.1.255" , // reserved (broadcast address)
45
+ "192.168.2.2" , // not in 192.168.1.0/24
46
+ },
46
47
alreadyAllocated : "192.168.1.1" ,
47
48
},
48
49
{
49
- name : "IPv6" ,
50
- cidr : "2001:db8:1::/48" ,
51
- free : 65534 ,
52
- released : "2001:db8:1::5" ,
53
- outOfRange1 : "2001:db8::1" ,
54
- outOfRange2 : "2001:db8:1::" ,
55
- outOfRange3 : "2001:db8:1::ffff" ,
50
+ name : "IPv6" ,
51
+ cidr : "2001:db8:1::/48" ,
52
+ free : 65535 ,
53
+ released : "2001:db8:1::5" ,
54
+ outOfRange : []string {
55
+ "2001:db8::1" , // not in 2001:db8:1::/48
56
+ "2001:db8:1::" , // reserved (base address)
57
+ "2001:db8:1::1:0" , // not in the low 16 bits of 2001:db8:1::/48
58
+ "2001:db8:2::2" , // not in 2001:db8:1::/48
59
+ },
56
60
alreadyAllocated : "2001:db8:1::1" ,
57
61
},
58
62
}
@@ -119,21 +123,15 @@ func TestAllocate(t *testing.T) {
119
123
if err := r .Release (released ); err != nil {
120
124
t .Fatal (err )
121
125
}
122
- err = r .Allocate (net .ParseIP (tc .outOfRange1 ))
123
- if _ , ok := err .(* ErrNotInRange ); ! ok {
124
- t .Fatal (err )
126
+ for _ , outOfRange := range tc .outOfRange {
127
+ err = r .Allocate (net .ParseIP (outOfRange ))
128
+ if _ , ok := err .(* ErrNotInRange ); ! ok {
129
+ t .Fatal (err )
130
+ }
125
131
}
126
132
if err := r .Allocate (net .ParseIP (tc .alreadyAllocated )); err != ErrAllocated {
127
133
t .Fatal (err )
128
134
}
129
- err = r .Allocate (net .ParseIP (tc .outOfRange2 ))
130
- if _ , ok := err .(* ErrNotInRange ); ! ok {
131
- t .Fatal (err )
132
- }
133
- err = r .Allocate (net .ParseIP (tc .outOfRange3 ))
134
- if _ , ok := err .(* ErrNotInRange ); ! ok {
135
- t .Fatal (err )
136
- }
137
135
if f := r .Free (); f != 1 {
138
136
t .Errorf ("Test %s unexpected free %d" , tc .name , f )
139
137
}
@@ -213,51 +211,6 @@ func TestAllocateSmall(t *testing.T) {
213
211
t .Logf ("allocated: %v" , found )
214
212
}
215
213
216
- func TestRangeSize (t * testing.T ) {
217
- testCases := []struct {
218
- name string
219
- cidr string
220
- addrs int64
221
- }{
222
- {
223
- name : "supported IPv4 cidr" ,
224
- cidr : "192.168.1.0/24" ,
225
- addrs : 256 ,
226
- },
227
- {
228
- name : "supported large IPv4 cidr" ,
229
- cidr : "10.96.0.0/12" ,
230
- addrs : 1048576 ,
231
- },
232
- {
233
- name : "unsupported IPv4 cidr" ,
234
- cidr : "192.168.1.0/1" ,
235
- addrs : 0 ,
236
- },
237
- {
238
- name : "supported IPv6 cidr" ,
239
- cidr : "2001:db8::/48" ,
240
- addrs : 65536 ,
241
- },
242
- {
243
- name : "unsupported IPv6 mask" ,
244
- cidr : "2001:db8::/1" ,
245
- addrs : 0 ,
246
- },
247
- }
248
-
249
- for _ , tc := range testCases {
250
- _ , cidr , err := net .ParseCIDR (tc .cidr )
251
- if err != nil {
252
- t .Errorf ("failed to parse cidr for test %s, unexpected error: '%s'" , tc .name , err )
253
- }
254
- if size := RangeSize (cidr ); size != tc .addrs {
255
- t .Errorf ("test %s failed. %s should have a range size of %d, got %d" ,
256
- tc .name , tc .cidr , tc .addrs , size )
257
- }
258
- }
259
- }
260
-
261
214
func TestForEach (t * testing.T ) {
262
215
_ , cidr , err := net .ParseCIDR ("192.168.1.0/24" )
263
216
if err != nil {
0 commit comments