Skip to content

Commit b802b39

Browse files
committed
Adding test cases to test DNS options in RequestAddress
1 parent e609da1 commit b802b39

File tree

4 files changed

+60
-36
lines changed

4 files changed

+60
-36
lines changed

Diff for: ipam/allocator_test.go

+28-28
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ func TestSubnetsMarshal(t *testing.T) {
176176
if err != nil {
177177
t.Fatal(err)
178178
}
179-
_, _, err = a.RequestAddress(pid0, nil, nil)
179+
_, _, _, _, err = a.RequestAddress(pid0, nil, nil)
180180
if err != nil {
181181
t.Fatal(err)
182182
}
@@ -192,7 +192,7 @@ func TestSubnetsMarshal(t *testing.T) {
192192
}
193193

194194
expIP := &net.IPNet{IP: net.IP{192, 168, 0, 2}, Mask: net.IPMask{255, 255, 0, 0}}
195-
ip, _, err := a.RequestAddress(pid0, nil, nil)
195+
ip, _, _, _, err := a.RequestAddress(pid0, nil, nil)
196196
if err != nil {
197197
t.Fatal(err)
198198
}
@@ -201,7 +201,7 @@ func TestSubnetsMarshal(t *testing.T) {
201201
}
202202

203203
expIP = &net.IPNet{IP: net.IP{192, 169, 0, 1}, Mask: net.IPMask{255, 255, 0, 0}}
204-
ip, _, err = a.RequestAddress(pid1, nil, nil)
204+
ip, _, _, _, err = a.RequestAddress(pid1, nil, nil)
205205
if err != nil {
206206
t.Fatal(err)
207207
}
@@ -556,12 +556,12 @@ func TestGetSameAddress(t *testing.T) {
556556
}
557557

558558
ip := net.ParseIP("192.168.100.250")
559-
_, _, err = a.RequestAddress(pid, ip, nil)
559+
_, _, _, _, err = a.RequestAddress(pid, ip, nil)
560560
if err != nil {
561561
t.Fatal(err)
562562
}
563563

564-
_, _, err = a.RequestAddress(pid, ip, nil)
564+
_, _, _, _, err = a.RequestAddress(pid, ip, nil)
565565
if err == nil {
566566
t.Fatal(err)
567567
}
@@ -578,7 +578,7 @@ func TestGetAddressSubPoolEqualPool(t *testing.T) {
578578
t.Fatal(err)
579579
}
580580

581-
_, _, err = a.RequestAddress(pid, nil, nil)
581+
_, _, _, _, err = a.RequestAddress(pid, nil, nil)
582582
if err != nil {
583583
t.Fatal(err)
584584
}
@@ -606,7 +606,7 @@ func TestRequestReleaseAddressFromSubPool(t *testing.T) {
606606
expected := &net.IPNet{IP: net.IP{172, 28, 30, 255}, Mask: net.IPMask{255, 255, 0, 0}}
607607
for err == nil {
608608
var c *net.IPNet
609-
if c, _, err = a.RequestAddress(poolID, nil, nil); err == nil {
609+
if c, _, _, _, err = a.RequestAddress(poolID, nil, nil); err == nil {
610610
ip = c
611611
}
612612
}
@@ -620,7 +620,7 @@ func TestRequestReleaseAddressFromSubPool(t *testing.T) {
620620
if err = a.ReleaseAddress(poolID, rp.IP); err != nil {
621621
t.Fatal(err)
622622
}
623-
if ip, _, err = a.RequestAddress(poolID, nil, nil); err != nil {
623+
if ip, _, _, _, err = a.RequestAddress(poolID, nil, nil); err != nil {
624624
t.Fatal(err)
625625
}
626626
if !types.CompareIPNet(rp, ip) {
@@ -638,7 +638,7 @@ func TestRequestReleaseAddressFromSubPool(t *testing.T) {
638638
expected = &net.IPNet{IP: net.IP{10, 0, 0, 255}, Mask: net.IPMask{255, 255, 0, 0}}
639639
for err == nil {
640640
var c *net.IPNet
641-
if c, _, err = a.RequestAddress(poolID, nil, nil); err == nil {
641+
if c, _, _, _, err = a.RequestAddress(poolID, nil, nil); err == nil {
642642
ip = c
643643
}
644644
}
@@ -652,7 +652,7 @@ func TestRequestReleaseAddressFromSubPool(t *testing.T) {
652652
if err = a.ReleaseAddress(poolID, rp.IP); err != nil {
653653
t.Fatal(err)
654654
}
655-
if ip, _, err = a.RequestAddress(poolID, nil, nil); err != nil {
655+
if ip, _, _, _, err = a.RequestAddress(poolID, nil, nil); err != nil {
656656
t.Fatal(err)
657657
}
658658
if !types.CompareIPNet(rp, ip) {
@@ -666,23 +666,23 @@ func TestRequestReleaseAddressFromSubPool(t *testing.T) {
666666
if poolID, _, _, err = a.RequestPool("rosso", "10.2.0.0/16", "10.2.2.0/24", nil, false); err != nil {
667667
t.Fatal(err)
668668
}
669-
tre, _, err := a.RequestAddress(poolID, treExp.IP, nil)
669+
tre, _, _, _, err := a.RequestAddress(poolID, treExp.IP, nil)
670670
if err != nil {
671671
t.Fatal(err)
672672
}
673673
if !types.CompareIPNet(tre, treExp) {
674674
t.Fatalf("Unexpected address: %v", tre)
675675
}
676676

677-
uno, _, err := a.RequestAddress(poolID, nil, nil)
677+
uno, _, _, _, err := a.RequestAddress(poolID, nil, nil)
678678
if err != nil {
679679
t.Fatal(err)
680680
}
681681
if !types.CompareIPNet(uno, unoExp) {
682682
t.Fatalf("Unexpected address: %v", uno)
683683
}
684684

685-
due, _, err := a.RequestAddress(poolID, nil, nil)
685+
due, _, _, _, err := a.RequestAddress(poolID, nil, nil)
686686
if err != nil {
687687
t.Fatal(err)
688688
}
@@ -693,7 +693,7 @@ func TestRequestReleaseAddressFromSubPool(t *testing.T) {
693693
if err = a.ReleaseAddress(poolID, uno.IP); err != nil {
694694
t.Fatal(err)
695695
}
696-
uno, _, err = a.RequestAddress(poolID, nil, nil)
696+
uno, _, _, _, err = a.RequestAddress(poolID, nil, nil)
697697
if err != nil {
698698
t.Fatal(err)
699699
}
@@ -704,7 +704,7 @@ func TestRequestReleaseAddressFromSubPool(t *testing.T) {
704704
if err = a.ReleaseAddress(poolID, tre.IP); err != nil {
705705
t.Fatal(err)
706706
}
707-
tre, _, err = a.RequestAddress(poolID, nil, nil)
707+
tre, _, _, _, err = a.RequestAddress(poolID, nil, nil)
708708
if err != nil {
709709
t.Fatal(err)
710710
}
@@ -765,19 +765,19 @@ func TestRequestSyntaxCheck(t *testing.T) {
765765
t.Fatalf("Unexpected failure: %v", err)
766766
}
767767

768-
_, _, err = a.RequestAddress("", nil, nil)
768+
_, _, _, _, err = a.RequestAddress("", nil, nil)
769769
if err == nil {
770770
t.Fatalf("Failed to detect wrong request: no pool id specified")
771771
}
772772

773773
ip := net.ParseIP("172.17.0.23")
774-
_, _, err = a.RequestAddress(pid, ip, nil)
774+
_, _, _, _, err = a.RequestAddress(pid, ip, nil)
775775
if err == nil {
776776
t.Fatalf("Failed to detect wrong request: requested IP from different subnet")
777777
}
778778

779779
ip = net.ParseIP("192.168.0.50")
780-
_, _, err = a.RequestAddress(pid, ip, nil)
780+
_, _, _, _, err = a.RequestAddress(pid, ip, nil)
781781
if err != nil {
782782
t.Fatalf("Unexpected failure: %v", err)
783783
}
@@ -848,7 +848,7 @@ func TestRelease(t *testing.T) {
848848

849849
// Allocate all addresses
850850
for err != ipamapi.ErrNoAvailableIPs {
851-
_, _, err = a.RequestAddress(pid, nil, nil)
851+
_, _, _, _, err = a.RequestAddress(pid, nil, nil)
852852
}
853853

854854
toRelease := []struct {
@@ -887,7 +887,7 @@ func TestRelease(t *testing.T) {
887887
t.Fatalf("Failed to update free address count after release. Expected %d, Found: %d", i+1, bm.Unselected())
888888
}
889889

890-
nw, _, err := a.RequestAddress(pid, nil, nil)
890+
nw, _, _, _, err := a.RequestAddress(pid, nil, nil)
891891
if err != nil {
892892
t.Fatalf("Failed to obtain the address: %s", err.Error())
893893
}
@@ -954,7 +954,7 @@ func assertNRequests(t *testing.T, subnet string, numReq int, lastExpectedIP str
954954
i := 0
955955
start := time.Now()
956956
for ; i < numReq; i++ {
957-
nw, _, err = a.RequestAddress(pid, nil, nil)
957+
nw, _, _, _, err = a.RequestAddress(pid, nil, nil)
958958
}
959959
if printTime {
960960
fmt.Printf("\nTaken %v, to allocate %d addresses on %s\n", time.Since(start), numReq, subnet)
@@ -968,7 +968,7 @@ func assertNRequests(t *testing.T, subnet string, numReq int, lastExpectedIP str
968968
func benchmarkRequest(b *testing.B, a *Allocator, subnet string) {
969969
pid, _, _, err := a.RequestPool(localAddressSpace, subnet, "", nil, false)
970970
for err != ipamapi.ErrNoAvailableIPs {
971-
_, _, err = a.RequestAddress(pid, nil, nil)
971+
_, _, _, _, err = a.RequestAddress(pid, nil, nil)
972972
}
973973
}
974974

@@ -1019,7 +1019,7 @@ func testAllocateRandomDeallocate(t *testing.T, pool, subPool string, num int) {
10191019
indices := make(map[int]*net.IPNet, num)
10201020
allocated := make(map[string]bool, num)
10211021
for i := 0; i < num; i++ {
1022-
ip, _, err := a.RequestAddress(pid, nil, nil)
1022+
ip, _, _, _, err := a.RequestAddress(pid, nil, nil)
10231023
if err != nil {
10241024
t.Fatal(err)
10251025
}
@@ -1052,7 +1052,7 @@ func testAllocateRandomDeallocate(t *testing.T, pool, subPool string, num int) {
10521052

10531053
// Request a quarter of addresses
10541054
for i := 0; i < num/2; i++ {
1055-
ip, _, err := a.RequestAddress(pid, nil, nil)
1055+
ip, _, _, _, err := a.RequestAddress(pid, nil, nil)
10561056
if err != nil {
10571057
t.Fatal(err)
10581058
}
@@ -1082,7 +1082,7 @@ func TestRetrieveFromStore(t *testing.T) {
10821082
t.Fatal(err)
10831083
}
10841084
for i := 0; i < num; i++ {
1085-
if _, _, err := a.RequestAddress(pid, nil, nil); err != nil {
1085+
if _, _, _, _, err := a.RequestAddress(pid, nil, nil); err != nil {
10861086
t.Fatal(err)
10871087
}
10881088
}
@@ -1104,7 +1104,7 @@ func TestRetrieveFromStore(t *testing.T) {
11041104
t.Fatal(err)
11051105
}
11061106
for i := 0; i < num/2; i++ {
1107-
if _, _, err := a1.RequestAddress(pid, nil, nil); err != nil {
1107+
if _, _, _, _, err := a1.RequestAddress(pid, nil, nil); err != nil {
11081108
t.Fatal(err)
11091109
}
11101110
}
@@ -1121,7 +1121,7 @@ func TestRetrieveFromStore(t *testing.T) {
11211121
t.Fatal(err)
11221122
}
11231123
for i := 0; i < num/2; i++ {
1124-
if _, _, err := a2.RequestAddress(pid, nil, nil); err != nil {
1124+
if _, _, _, _, err := a2.RequestAddress(pid, nil, nil); err != nil {
11251125
t.Fatal(err)
11261126
}
11271127
}
@@ -1138,7 +1138,7 @@ func TestRetrieveFromStore(t *testing.T) {
11381138
t.Fatal(err)
11391139
}
11401140
for i := 0; i < num/2; i++ {
1141-
if _, _, err := a3.RequestAddress(pid, nil, nil); err != nil {
1141+
if _, _, _, _, err := a3.RequestAddress(pid, nil, nil); err != nil {
11421142
t.Fatal(err)
11431143
}
11441144
}

Diff for: ipams/remote/remote_test.go

+27-3
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,12 @@ func TestRemoteDriver(t *testing.T) {
197197
ip = "172.20.0.34"
198198
}
199199
ip = fmt.Sprintf("%s/16", ip)
200+
dnsList := []string{"172.20.0.1", "172.20.0.2"}
201+
dnsSearchList := []string{"domain1", "domain2"}
200202
return map[string]interface{}{
201-
"Address": ip,
203+
"Address": ip,
204+
"DNSServers": dnsList,
205+
"DNSSearchDomains": dnsSearchList,
202206
}
203207
})
204208

@@ -267,16 +271,36 @@ func TestRemoteDriver(t *testing.T) {
267271
}
268272

269273
// Request any address
270-
addr, _, err := d.RequestAddress(poolID2, nil, nil)
274+
addr, dnsList, dnsSearchDomains, _, err := d.RequestAddress(poolID2, nil, nil)
271275
if err != nil {
272276
t.Fatal(err)
273277
}
274278
if addr == nil || addr.String() != "172.20.0.34/16" {
275279
t.Fatalf("Unexpected address: %s", addr)
276280
}
277281

282+
expectedDNSList := []string{"172.20.0.1", "172.20.0.2"}
283+
if dnsList == nil || len(dnsList) != len(expectedDNSList) {
284+
t.Fatalf("Unexpected DNS list: %+v", dnsList)
285+
}
286+
for i, exp := range expectedDNSList {
287+
if dnsList[i] != exp {
288+
t.Fatalf("Expected DNS IP: %s, got %s", exp, dnsList[i])
289+
}
290+
}
291+
292+
expectedDNSSearchDomains := []string{"domain1", "domain2"}
293+
if dnsSearchDomains == nil || len(dnsSearchDomains) != len(expectedDNSSearchDomains) {
294+
t.Fatalf("Unexpected DNS Search Domains: %+v", dnsSearchDomains)
295+
}
296+
for i, exp := range expectedDNSSearchDomains {
297+
if dnsSearchDomains[i] != exp {
298+
t.Fatalf("Expected DNS Search domain: %s, got %s", exp, dnsSearchDomains[i])
299+
}
300+
}
301+
278302
// Request specific address
279-
addr2, _, err := d.RequestAddress(poolID2, net.ParseIP("172.20.1.45"), nil)
303+
addr2, _, _, _, err := d.RequestAddress(poolID2, net.ParseIP("172.20.1.45"), nil)
280304
if err != nil {
281305
t.Fatal(err)
282306
}

Diff for: ipams/windowsipam/windowsipam.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,12 @@ func (a *allocator) RequestAddress(poolID string, prefAddress net.IP, opts map[s
6868
_, ipNet, err := net.ParseCIDR(poolID)
6969

7070
if err != nil {
71-
return nil, nil, err
71+
return nil, nil, nil, nil, err
7272
}
7373
if prefAddress == nil {
74-
return ipNet, nil, nil
74+
return ipNet, nil, nil, nil, nil
7575
}
76-
return &net.IPNet{IP: prefAddress, Mask: ipNet.Mask}, nil, nil
76+
return &net.IPNet{IP: prefAddress, Mask: ipNet.Mask}, nil, nil, nil, nil
7777
}
7878

7979
// ReleaseAddress releases the address - always succeeds

Diff for: ipams/windowsipam/windowsipam_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func TestWindowsIPAM(t *testing.T) {
4646
t.Fatal(err)
4747
}
4848

49-
ip, _, err := a.RequestAddress(requestPool.String(), nil, map[string]string{})
49+
ip, _, _, _, err := a.RequestAddress(requestPool.String(), nil, map[string]string{})
5050
if err != nil {
5151
t.Fatal(err)
5252
}
@@ -55,7 +55,7 @@ func TestWindowsIPAM(t *testing.T) {
5555
t.Fatalf("Unexpected data returned. Expected %v . Got: %v ", requestPool, ip)
5656
}
5757

58-
ip, _, err = a.RequestAddress(requestPool.String(), requestAddress, map[string]string{})
58+
ip, _, _, _, err = a.RequestAddress(requestPool.String(), requestAddress, map[string]string{})
5959
if err != nil {
6060
t.Fatal(err)
6161
}

0 commit comments

Comments
 (0)