github.com/rawahars/moby@v24.0.4+incompatible/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/docker/docker/libnetwork/driverapi" 10 "github.com/docker/docker/libnetwork/idm" 11 "github.com/docker/docker/libnetwork/netlabel" 12 "github.com/docker/docker/libnetwork/types" 13 "gotest.tools/v3/assert" 14 is "gotest.tools/v3/assert/cmp" 15 ) 16 17 func newDriver(t *testing.T) *driver { 18 d := &driver{ 19 networks: networkTable{}, 20 } 21 22 vxlanIdm, err := idm.New(nil, "vxlan-id", vxlanIDStart, vxlanIDEnd) 23 assert.NilError(t, err) 24 25 d.vxlanIdm = vxlanIdm 26 return d 27 } 28 29 func parseCIDR(t *testing.T, ipnet string) *net.IPNet { 30 subnet, err := types.ParseCIDR(ipnet) 31 assert.NilError(t, err) 32 return subnet 33 } 34 35 func TestNetworkAllocateFree(t *testing.T) { 36 d := newDriver(t) 37 38 ipamData := []driverapi.IPAMData{ 39 { 40 Pool: parseCIDR(t, "10.1.1.0/24"), 41 }, 42 { 43 Pool: parseCIDR(t, "10.1.2.0/24"), 44 }, 45 } 46 47 vals, err := d.NetworkAllocate("testnetwork", nil, ipamData, nil) 48 assert.NilError(t, err) 49 50 vxlanIDs, ok := vals[netlabel.OverlayVxlanIDList] 51 assert.Check(t, is.Equal(true, ok)) 52 assert.Check(t, is.Len(strings.Split(vxlanIDs, ","), 2)) 53 54 err = d.NetworkFree("testnetwork") 55 assert.NilError(t, err) 56 } 57 58 func TestNetworkAllocateUserDefinedVNIs(t *testing.T) { 59 d := newDriver(t) 60 61 ipamData := []driverapi.IPAMData{ 62 { 63 Pool: parseCIDR(t, "10.1.1.0/24"), 64 }, 65 { 66 Pool: parseCIDR(t, "10.1.2.0/24"), 67 }, 68 } 69 70 options := make(map[string]string) 71 // Intentionally add mode vnis than subnets 72 options[netlabel.OverlayVxlanIDList] = fmt.Sprintf("%d,%d,%d", vxlanIDStart, vxlanIDStart+1, vxlanIDStart+2) 73 74 vals, err := d.NetworkAllocate("testnetwork", options, ipamData, nil) 75 assert.NilError(t, err) 76 77 vxlanIDs, ok := vals[netlabel.OverlayVxlanIDList] 78 assert.Check(t, is.Equal(true, ok)) 79 80 // We should only get exactly the same number of vnis as 81 // subnets. No more, no less, even if we passed more vnis. 82 assert.Check(t, is.Len(strings.Split(vxlanIDs, ","), 2)) 83 assert.Check(t, is.Equal(fmt.Sprintf("%d,%d", vxlanIDStart, vxlanIDStart+1), vxlanIDs)) 84 85 err = d.NetworkFree("testnetwork") 86 assert.NilError(t, err) 87 }