| package windowsipam |
| |
| import ( |
| "net" |
| "testing" |
| |
| "github.com/docker/docker/libnetwork/ipamapi" |
| "github.com/docker/docker/libnetwork/netlabel" |
| "github.com/docker/docker/libnetwork/types" |
| ) |
| |
| func TestWindowsIPAM(t *testing.T) { |
| a := &allocator{} |
| requestPool, _ := types.ParseCIDR("192.168.0.0/16") |
| requestAddress := net.ParseIP("192.168.1.1") |
| |
| pid, pool, _, err := a.RequestPool(localAddressSpace, "", "", nil, false) |
| if err != nil { |
| t.Fatal(err) |
| } |
| if !types.CompareIPNet(defaultPool, pool) || |
| pid != pool.String() { |
| t.Fatalf("Unexpected data returned. Expected %v : %s. Got: %v : %s", defaultPool, pid, pool, pool.String()) |
| } |
| |
| pid, pool, _, err = a.RequestPool(localAddressSpace, requestPool.String(), "", nil, false) |
| if err != nil { |
| t.Fatal(err) |
| } |
| if !types.CompareIPNet(requestPool, pool) || |
| pid != requestPool.String() { |
| t.Fatalf("Unexpected data returned. Expected %v : %s. Got: %v : %s", requestPool, requestPool.String(), pool, pool.String()) |
| } |
| |
| _, _, _, err = a.RequestPool(localAddressSpace, requestPool.String(), requestPool.String(), nil, false) |
| if err == nil { |
| t.Fatal("Unexpected success for subpool request") |
| } |
| |
| _, _, _, err = a.RequestPool(localAddressSpace, requestPool.String(), "", nil, true) |
| if err == nil { |
| t.Fatal("Unexpected success for v6 request") |
| } |
| |
| err = a.ReleasePool(requestPool.String()) |
| if err != nil { |
| t.Fatal(err) |
| } |
| |
| ip, _, err := a.RequestAddress(requestPool.String(), nil, map[string]string{}) |
| if err != nil { |
| t.Fatal(err) |
| } |
| |
| if ip != nil { |
| t.Fatalf("Unexpected data returned. Expected %v . Got: %v ", requestPool, ip) |
| } |
| |
| ip, _, err = a.RequestAddress(requestPool.String(), requestAddress, map[string]string{}) |
| if err != nil { |
| t.Fatal(err) |
| } |
| |
| if !ip.IP.Equal(requestAddress) { |
| t.Fatalf("Unexpected data returned. Expected %v . Got: %v ", requestAddress, ip.IP) |
| } |
| |
| requestOptions := map[string]string{} |
| requestOptions[ipamapi.RequestAddressType] = netlabel.Gateway |
| ip, _, err = a.RequestAddress(requestPool.String(), requestAddress, requestOptions) |
| if err != nil { |
| t.Fatal(err) |
| } |
| |
| if !ip.IP.Equal(requestAddress) { |
| t.Fatalf("Unexpected data returned. Expected %v . Got: %v ", requestAddress, ip.IP) |
| } |
| |
| err = a.ReleaseAddress(requestPool.String(), requestAddress) |
| if err != nil { |
| t.Fatal(err) |
| } |
| } |