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  }