github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/libnetwork/ipams/windowsipam/windowsipam_test.go (about) 1 package windowsipam 2 3 import ( 4 "net" 5 "testing" 6 7 "github.com/docker/libnetwork/ipamapi" 8 "github.com/docker/libnetwork/netlabel" 9 _ "github.com/docker/libnetwork/testutils" 10 "github.com/docker/libnetwork/types" 11 ) 12 13 func TestWindowsIPAM(t *testing.T) { 14 a := &allocator{} 15 requestPool, _ := types.ParseCIDR("192.168.0.0/16") 16 requestAddress := net.ParseIP("192.168.1.1") 17 18 pid, pool, _, err := a.RequestPool(localAddressSpace, "", "", nil, false) 19 if err != nil { 20 t.Fatal(err) 21 } 22 if !types.CompareIPNet(defaultPool, pool) || 23 pid != pool.String() { 24 t.Fatalf("Unexpected data returned. Expected %v : %s. Got: %v : %s", defaultPool, pid, pool, pool.String()) 25 } 26 27 pid, pool, _, err = a.RequestPool(localAddressSpace, requestPool.String(), "", nil, false) 28 if err != nil { 29 t.Fatal(err) 30 } 31 if !types.CompareIPNet(requestPool, pool) || 32 pid != requestPool.String() { 33 t.Fatalf("Unexpected data returned. Expected %v : %s. Got: %v : %s", requestPool, requestPool.String(), pool, pool.String()) 34 } 35 36 _, _, _, err = a.RequestPool(localAddressSpace, requestPool.String(), requestPool.String(), nil, false) 37 if err == nil { 38 t.Fatal("Unexpected success for subpool request") 39 } 40 41 _, _, _, err = a.RequestPool(localAddressSpace, requestPool.String(), "", nil, true) 42 if err == nil { 43 t.Fatal("Unexpected success for v6 request") 44 } 45 46 err = a.ReleasePool(requestPool.String()) 47 if err != nil { 48 t.Fatal(err) 49 } 50 51 ip, _, err := a.RequestAddress(requestPool.String(), nil, map[string]string{}) 52 if err != nil { 53 t.Fatal(err) 54 } 55 56 if ip != nil { 57 t.Fatalf("Unexpected data returned. Expected %v . Got: %v ", requestPool, ip) 58 } 59 60 ip, _, err = a.RequestAddress(requestPool.String(), requestAddress, map[string]string{}) 61 if err != nil { 62 t.Fatal(err) 63 } 64 65 if !ip.IP.Equal(requestAddress) { 66 t.Fatalf("Unexpected data returned. Expected %v . Got: %v ", requestAddress, ip.IP) 67 } 68 69 requestOptions := map[string]string{} 70 requestOptions[ipamapi.RequestAddressType] = netlabel.Gateway 71 ip, _, err = a.RequestAddress(requestPool.String(), requestAddress, requestOptions) 72 if err != nil { 73 t.Fatal(err) 74 } 75 76 if !ip.IP.Equal(requestAddress) { 77 t.Fatalf("Unexpected data returned. Expected %v . Got: %v ", requestAddress, ip.IP) 78 } 79 80 err = a.ReleaseAddress(requestPool.String(), requestAddress) 81 if err != nil { 82 t.Fatal(err) 83 } 84 }