moby--moby/libnetwork/drivers/windows/windows_test.go

145 lines
3.3 KiB
Go

//go:build windows
// +build windows
package windows
import (
"net"
"testing"
"github.com/docker/docker/libnetwork/driverapi"
"github.com/docker/docker/libnetwork/netlabel"
"github.com/docker/docker/libnetwork/types"
)
func testNetwork(networkType string, t *testing.T) {
d := newDriver(networkType)
bnw, _ := types.ParseCIDR("172.16.0.0/24")
br, _ := types.ParseCIDR("172.16.0.1/16")
netOption := make(map[string]interface{})
networkOptions := map[string]string{
NetworkName: "TestNetwork",
}
netOption[netlabel.GenericData] = networkOptions
ipdList := []driverapi.IPAMData{
{
Pool: bnw,
Gateway: br,
},
}
err := d.CreateNetwork("dummy", netOption, nil, ipdList, nil)
if err != nil {
t.Fatalf("Failed to create bridge: %v", err)
}
defer func() {
err = d.DeleteNetwork("dummy")
if err != nil {
t.Fatalf("Failed to create bridge: %v", err)
}
}()
epOptions := make(map[string]interface{})
te := &testEndpoint{}
err = d.CreateEndpoint("dummy", "ep1", te.Interface(), epOptions)
if err != nil {
t.Fatalf("Failed to create an endpoint : %s", err.Error())
}
err = d.DeleteEndpoint("dummy", "ep1")
if err != nil {
t.Fatalf("Failed to delete an endpoint : %s", err.Error())
}
}
func TestNAT(t *testing.T) {
t.Skip("Test does not work on CI and was never running to begin with")
testNetwork("nat", t)
}
func TestTransparent(t *testing.T) {
t.Skip("Test does not work on CI and was never running to begin with")
testNetwork("transparent", t)
}
type testEndpoint struct {
t *testing.T
src string
dst string
address string
macAddress string
gateway string
disableGatewayService bool
}
func (test *testEndpoint) Interface() driverapi.InterfaceInfo {
return test
}
func (test *testEndpoint) Address() *net.IPNet {
if test.address == "" {
return nil
}
nw, _ := types.ParseCIDR(test.address)
return nw
}
func (test *testEndpoint) AddressIPv6() *net.IPNet {
return nil
}
func (test *testEndpoint) MacAddress() net.HardwareAddr {
if test.macAddress == "" {
return nil
}
mac, _ := net.ParseMAC(test.macAddress)
return mac
}
func (test *testEndpoint) SetMacAddress(mac net.HardwareAddr) error {
if test.macAddress != "" {
return types.ForbiddenErrorf("endpoint interface MAC address present (%s). Cannot be modified with %s.", test.macAddress, mac)
}
if mac == nil {
return types.BadRequestErrorf("tried to set nil MAC address to endpoint interface")
}
test.macAddress = mac.String()
return nil
}
func (test *testEndpoint) SetIPAddress(address *net.IPNet) error {
if address.IP == nil {
return types.BadRequestErrorf("tried to set nil IP address to endpoint interface")
}
test.address = address.String()
return nil
}
func (test *testEndpoint) InterfaceName() driverapi.InterfaceNameInfo {
return test
}
func (test *testEndpoint) SetGateway(ipv4 net.IP) error {
return nil
}
func (test *testEndpoint) SetGatewayIPv6(ipv6 net.IP) error {
return nil
}
func (test *testEndpoint) SetNames(src string, dst string) error {
return nil
}
func (test *testEndpoint) AddStaticRoute(destination *net.IPNet, routeType int, nextHop net.IP) error {
return nil
}
func (test *testEndpoint) DisableGatewayService() {
test.disableGatewayService = true
}