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  }