github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/libnetwork/drivers/overlay/ovmanager/ovmanager_test.go (about)

     1  package ovmanager
     2  
     3  import (
     4  	"fmt"
     5  	"net"
     6  	"strings"
     7  	"testing"
     8  
     9  	"github.com/Prakhar-Agarwal-byte/moby/libnetwork/driverapi"
    10  	"github.com/Prakhar-Agarwal-byte/moby/libnetwork/netlabel"
    11  	"github.com/Prakhar-Agarwal-byte/moby/libnetwork/types"
    12  	"gotest.tools/v3/assert"
    13  	is "gotest.tools/v3/assert/cmp"
    14  )
    15  
    16  func parseCIDR(t *testing.T, ipnet string) *net.IPNet {
    17  	subnet, err := types.ParseCIDR(ipnet)
    18  	assert.NilError(t, err)
    19  	return subnet
    20  }
    21  
    22  func TestNetworkAllocateFree(t *testing.T) {
    23  	d := newDriver()
    24  
    25  	ipamData := []driverapi.IPAMData{
    26  		{
    27  			Pool: parseCIDR(t, "10.1.1.0/24"),
    28  		},
    29  		{
    30  			Pool: parseCIDR(t, "10.1.2.0/24"),
    31  		},
    32  	}
    33  
    34  	vals, err := d.NetworkAllocate("testnetwork", nil, ipamData, nil)
    35  	assert.NilError(t, err)
    36  
    37  	vxlanIDs, ok := vals[netlabel.OverlayVxlanIDList]
    38  	assert.Check(t, is.Equal(true, ok))
    39  	assert.Check(t, is.Len(strings.Split(vxlanIDs, ","), 2))
    40  
    41  	err = d.NetworkFree("testnetwork")
    42  	assert.NilError(t, err)
    43  }
    44  
    45  func TestNetworkAllocateUserDefinedVNIs(t *testing.T) {
    46  	d := newDriver()
    47  
    48  	ipamData := []driverapi.IPAMData{
    49  		{
    50  			Pool: parseCIDR(t, "10.1.1.0/24"),
    51  		},
    52  		{
    53  			Pool: parseCIDR(t, "10.1.2.0/24"),
    54  		},
    55  	}
    56  
    57  	options := make(map[string]string)
    58  	// Intentionally add mode vnis than subnets
    59  	options[netlabel.OverlayVxlanIDList] = fmt.Sprintf("%d,%d,%d", vxlanIDStart, vxlanIDStart+1, vxlanIDStart+2)
    60  
    61  	vals, err := d.NetworkAllocate("testnetwork", options, ipamData, nil)
    62  	assert.NilError(t, err)
    63  
    64  	vxlanIDs, ok := vals[netlabel.OverlayVxlanIDList]
    65  	assert.Check(t, is.Equal(true, ok))
    66  
    67  	// We should only get exactly the same number of vnis as
    68  	// subnets. No more, no less, even if we passed more vnis.
    69  	assert.Check(t, is.Len(strings.Split(vxlanIDs, ","), 2))
    70  	assert.Check(t, is.Equal(fmt.Sprintf("%d,%d", vxlanIDStart, vxlanIDStart+1), vxlanIDs))
    71  
    72  	err = d.NetworkFree("testnetwork")
    73  	assert.NilError(t, err)
    74  }