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