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