ovmanager_test.go 1.8 KB

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