windows_test.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. //go:build windows
  2. package windows
  3. import (
  4. "net"
  5. "testing"
  6. "github.com/docker/docker/libnetwork/driverapi"
  7. "github.com/docker/docker/libnetwork/netlabel"
  8. "github.com/docker/docker/libnetwork/types"
  9. )
  10. func testNetwork(networkType string, t *testing.T) {
  11. d := newDriver(networkType)
  12. bnw, _ := types.ParseCIDR("172.16.0.0/24")
  13. br, _ := types.ParseCIDR("172.16.0.1/16")
  14. netOption := make(map[string]interface{})
  15. networkOptions := map[string]string{
  16. NetworkName: "TestNetwork",
  17. }
  18. netOption[netlabel.GenericData] = networkOptions
  19. ipdList := []driverapi.IPAMData{
  20. {
  21. Pool: bnw,
  22. Gateway: br,
  23. },
  24. }
  25. err := d.CreateNetwork("dummy", netOption, nil, ipdList, nil)
  26. if err != nil {
  27. t.Fatalf("Failed to create bridge: %v", err)
  28. }
  29. defer func() {
  30. err = d.DeleteNetwork("dummy")
  31. if err != nil {
  32. t.Fatalf("Failed to create bridge: %v", err)
  33. }
  34. }()
  35. epOptions := make(map[string]interface{})
  36. te := &testEndpoint{}
  37. err = d.CreateEndpoint("dummy", "ep1", te.Interface(), epOptions)
  38. if err != nil {
  39. t.Fatalf("Failed to create an endpoint : %s", err.Error())
  40. }
  41. err = d.DeleteEndpoint("dummy", "ep1")
  42. if err != nil {
  43. t.Fatalf("Failed to delete an endpoint : %s", err.Error())
  44. }
  45. }
  46. func TestNAT(t *testing.T) {
  47. t.Skip("Test does not work on CI and was never running to begin with")
  48. testNetwork("nat", t)
  49. }
  50. func TestTransparent(t *testing.T) {
  51. t.Skip("Test does not work on CI and was never running to begin with")
  52. testNetwork("transparent", t)
  53. }
  54. type testEndpoint struct {
  55. t *testing.T
  56. src string
  57. dst string
  58. address string
  59. macAddress string
  60. gateway string
  61. disableGatewayService bool
  62. }
  63. func (test *testEndpoint) Interface() driverapi.InterfaceInfo {
  64. return test
  65. }
  66. func (test *testEndpoint) Address() *net.IPNet {
  67. if test.address == "" {
  68. return nil
  69. }
  70. nw, _ := types.ParseCIDR(test.address)
  71. return nw
  72. }
  73. func (test *testEndpoint) AddressIPv6() *net.IPNet {
  74. return nil
  75. }
  76. func (test *testEndpoint) MacAddress() net.HardwareAddr {
  77. if test.macAddress == "" {
  78. return nil
  79. }
  80. mac, _ := net.ParseMAC(test.macAddress)
  81. return mac
  82. }
  83. func (test *testEndpoint) SetMacAddress(mac net.HardwareAddr) error {
  84. if test.macAddress != "" {
  85. return types.ForbiddenErrorf("endpoint interface MAC address present (%s). Cannot be modified with %s.", test.macAddress, mac)
  86. }
  87. if mac == nil {
  88. return types.InvalidParameterErrorf("tried to set nil MAC address to endpoint interface")
  89. }
  90. test.macAddress = mac.String()
  91. return nil
  92. }
  93. func (test *testEndpoint) SetIPAddress(address *net.IPNet) error {
  94. if address.IP == nil {
  95. return types.InvalidParameterErrorf("tried to set nil IP address to endpoint interface")
  96. }
  97. test.address = address.String()
  98. return nil
  99. }
  100. func (test *testEndpoint) InterfaceName() driverapi.InterfaceNameInfo {
  101. return test
  102. }
  103. func (test *testEndpoint) SetGateway(ipv4 net.IP) error {
  104. return nil
  105. }
  106. func (test *testEndpoint) SetGatewayIPv6(ipv6 net.IP) error {
  107. return nil
  108. }
  109. func (test *testEndpoint) SetNames(src string, dst string) error {
  110. return nil
  111. }
  112. func (test *testEndpoint) AddStaticRoute(destination *net.IPNet, routeType int, nextHop net.IP) error {
  113. return nil
  114. }
  115. func (test *testEndpoint) DisableGatewayService() {
  116. test.disableGatewayService = true
  117. }