From f508ba820ddee2624cfec7109d00acf7e6cf4296 Mon Sep 17 00:00:00 2001 From: Prince Pereira Date: Fri, 13 Mar 2026 00:22:36 +0530 Subject: [PATCH 1/3] Added some exported functions for few of the windows errors. --- hcn/hcnerrors.go | 29 ++++++- hcn/hcnerrors_test.go | 5 +- hcn/hcnerrors_unit_test.go | 151 ++++++++++++++++++++++++++++++++++++ hcn/hcnloadbalancer_test.go | 35 ++------- hcn/hcnnetwork_test.go | 14 +--- hcn/hcnroute_test.go | 20 +---- hcn/hcnutils_test.go | 13 ++++ 7 files changed, 207 insertions(+), 60 deletions(-) create mode 100644 hcn/hcnerrors_unit_test.go diff --git a/hcn/hcnerrors.go b/hcn/hcnerrors.go index 78c2ab6..72f22cb 100644 --- a/hcn/hcnerrors.go +++ b/hcn/hcnerrors.go @@ -37,7 +37,7 @@ func checkForErrors(methodName string, hr error, resultBuffer *uint16) error { } if errorFound { - returnError := new(hr, methodName, result) + returnError := newHcnError(hr, methodName, result) logrus.Debugf(returnError.Error()) // HCN errors logged for debugging. return returnError } @@ -52,6 +52,11 @@ const ( ERROR_NOT_FOUND = ErrorCode(windows.ERROR_NOT_FOUND) HCN_E_PORT_ALREADY_EXISTS ErrorCode = ErrorCode(windows.HCN_E_PORT_ALREADY_EXISTS) HCN_E_NOTIMPL ErrorCode = ErrorCode(windows.E_NOTIMPL) + HCN_E_NETWORK_NOT_FOUND ErrorCode = ErrorCode(windows.HCN_E_NETWORK_NOT_FOUND) + HCN_E_ENDPOINT_NOT_FOUND ErrorCode = ErrorCode(windows.HCN_E_ENDPOINT_NOT_FOUND) + HCN_E_PORT_NOT_FOUND ErrorCode = ErrorCode(windows.HCN_E_PORT_NOT_FOUND) + HCN_E_INVALID_IP ErrorCode = ErrorCode(windows.HCN_E_INVALID_IP) + HCN_E_ADAPTER_NOT_FOUND ErrorCode = ErrorCode(windows.HCN_E_ADAPTER_NOT_FOUND) ) type HcnError struct { @@ -83,7 +88,27 @@ func IsNotImplemented(err error) bool { return CheckErrorWithCode(err, HCN_E_NOTIMPL) } -func new(hr error, title string, rest string) error { +func IsNetworkNotFoundError(err error) bool { + return CheckErrorWithCode(err, HCN_E_NETWORK_NOT_FOUND) +} + +func IsEndpointNotFoundError(err error) bool { + return CheckErrorWithCode(err, HCN_E_ENDPOINT_NOT_FOUND) +} + +func IsPortNotFoundError(err error) bool { + return CheckErrorWithCode(err, HCN_E_PORT_NOT_FOUND) +} + +func IsInvalidIPError(err error) bool { + return CheckErrorWithCode(err, HCN_E_INVALID_IP) +} + +func IsAdapterNotFoundError(err error) bool { + return CheckErrorWithCode(err, HCN_E_ADAPTER_NOT_FOUND) +} + +func newHcnError(hr error, title string, rest string) error { err := &HcnError{} hnsError := hns.NewHnsError(hr, title, rest) err.HnsError = hnsError.(*hns.HnsError) //nolint:errorlint diff --git a/hcn/hcnerrors_test.go b/hcn/hcnerrors_test.go index 8ea8835..50fa6ac 100644 --- a/hcn/hcnerrors_test.go +++ b/hcn/hcnerrors_test.go @@ -66,10 +66,7 @@ func TestMissingNamespaceById(t *testing.T) { } func TestEndpointAlreadyExistsError(t *testing.T) { - testNetwork, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal("Failed to create overlay network for setup.", err) - } + testNetwork := CreateTestOverlayNetworkOrSkip(t) defer testNetwork.Delete() //nolint:errcheck portMappingSetting := PortMappingPolicySetting{ Protocol: 17, diff --git a/hcn/hcnerrors_unit_test.go b/hcn/hcnerrors_unit_test.go new file mode 100644 index 0000000..aaa8168 --- /dev/null +++ b/hcn/hcnerrors_unit_test.go @@ -0,0 +1,151 @@ +//go:build windows +// +build windows + +package hcn + +import ( + "fmt" + "testing" + + "golang.org/x/sys/windows" +) + +func TestHCNErrorHelpers(t *testing.T) { + for _, tc := range []struct { + name string + err error + checkFn func(error) bool + expected bool + }{ + // IsElementNotFoundError + { + name: "IsElementNotFoundError with matching error", + err: newHcnError(windows.Errno(windows.ERROR_NOT_FOUND), "test", ""), + checkFn: IsElementNotFoundError, + expected: true, + }, + { + name: "IsElementNotFoundError with non-matching error", + err: newHcnError(windows.Errno(windows.E_NOTIMPL), "test", ""), + checkFn: IsElementNotFoundError, + expected: false, + }, + + // IsPortAlreadyExistsError + { + name: "IsPortAlreadyExistsError with matching error", + err: newHcnError(windows.Errno(windows.HCN_E_PORT_ALREADY_EXISTS), "test", ""), + checkFn: IsPortAlreadyExistsError, + expected: true, + }, + { + name: "IsPortAlreadyExistsError with non-matching error", + err: newHcnError(windows.Errno(windows.ERROR_NOT_FOUND), "test", ""), + checkFn: IsPortAlreadyExistsError, + expected: false, + }, + + // IsNotImplemented + { + name: "IsNotImplemented with matching error", + err: newHcnError(windows.Errno(windows.E_NOTIMPL), "test", ""), + checkFn: IsNotImplemented, + expected: true, + }, + { + name: "IsNotImplemented with non-matching error", + err: newHcnError(windows.Errno(windows.ERROR_NOT_FOUND), "test", ""), + checkFn: IsNotImplemented, + expected: false, + }, + + // IsNetworkNotFound + { + name: "IsNetworkNotFoundError with matching error", + err: newHcnError(windows.Errno(windows.HCN_E_NETWORK_NOT_FOUND), "test", ""), + checkFn: IsNetworkNotFoundError, + expected: true, + }, + { + name: "IsNetworkNotFoundError with non-matching error", + err: newHcnError(windows.Errno(windows.ERROR_NOT_FOUND), "test", ""), + checkFn: IsNetworkNotFoundError, + expected: false, + }, + + // IsEndpointNotFoundError + { + name: "IsEndpointNotFoundError with matching error", + err: newHcnError(windows.Errno(windows.HCN_E_ENDPOINT_NOT_FOUND), "test", ""), + checkFn: IsEndpointNotFoundError, + expected: true, + }, + { + name: "IsEndpointNotFoundError with non-matching error", + err: newHcnError(windows.Errno(windows.ERROR_NOT_FOUND), "test", ""), + checkFn: IsEndpointNotFoundError, + expected: false, + }, + + // IsPortNotFoundError + { + name: "IsPortNotFoundError with matching error", + err: newHcnError(windows.Errno(windows.HCN_E_PORT_NOT_FOUND), "test", ""), + checkFn: IsPortNotFoundError, + expected: true, + }, + { + name: "IsPortNotFoundError with non-matching error", + err: newHcnError(windows.Errno(windows.ERROR_NOT_FOUND), "test", ""), + checkFn: IsPortNotFoundError, + expected: false, + }, + + // IsInvalidIPError + { + name: "IsInvalidIPError with matching error", + err: newHcnError(windows.Errno(windows.HCN_E_INVALID_IP), "test", ""), + checkFn: IsInvalidIPError, + expected: true, + }, + { + name: "IsInvalidIPError with non-matching error", + err: newHcnError(windows.Errno(windows.ERROR_NOT_FOUND), "test", ""), + checkFn: IsInvalidIPError, + expected: false, + }, + + // IsAdapterNotFoundError + { + name: "IsAdapterNotFoundError with matching error", + err: newHcnError(windows.Errno(windows.HCN_E_ADAPTER_NOT_FOUND), "test", ""), + checkFn: IsAdapterNotFoundError, + expected: true, + }, + { + name: "IsAdapterNotFoundError with non-matching error", + err: newHcnError(windows.Errno(windows.ERROR_NOT_FOUND), "test", ""), + checkFn: IsAdapterNotFoundError, + expected: false, + }, + + // Non-HcnError + { + name: "non-HcnError returns false", + err: fmt.Errorf("random error"), + checkFn: IsPortAlreadyExistsError, + expected: false, + }, + } { + t.Run(tc.name, func(t *testing.T) { + if got := tc.checkFn(tc.err); got != tc.expected { + t.Errorf("expected %t, got %t for error: %v", tc.expected, got, tc.err) + } + // Also test wrapped error + wrapped := fmt.Errorf("wrapped: %w", tc.err) + if got := tc.checkFn(wrapped); got != tc.expected { + t.Errorf("expected %t for wrapped error, got %t for error: %v", tc.expected, got, wrapped) + } + }) + } +} diff --git a/hcn/hcnloadbalancer_test.go b/hcn/hcnloadbalancer_test.go index b6dbe20..60706a0 100644 --- a/hcn/hcnloadbalancer_test.go +++ b/hcn/hcnloadbalancer_test.go @@ -12,10 +12,7 @@ import ( ) func TestCreateDeleteLoadBalancer(t *testing.T) { - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -45,10 +42,7 @@ func TestCreateDeleteLoadBalancer(t *testing.T) { } func TestCreateUpdateDeleteLoadBalancer(t *testing.T) { - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -109,10 +103,7 @@ func TestCreateUpdateDeleteLoadBalancer(t *testing.T) { } func TestGetLoadBalancerById(t *testing.T) { - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -150,10 +141,7 @@ func TestListLoadBalancer(t *testing.T) { } func TestLoadBalancerAddRemoveEndpoint(t *testing.T) { - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -202,10 +190,7 @@ func TestLoadBalancerAddRemoveEndpoint(t *testing.T) { } func TestAddLoadBalancer(t *testing.T) { - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -238,10 +223,7 @@ func TestAddLoadBalancer(t *testing.T) { } func TestAddDSRLoadBalancer(t *testing.T) { - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -283,10 +265,7 @@ func TestAddDSRLoadBalancer(t *testing.T) { } func TestAddILBLoadBalancer(t *testing.T) { - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) diff --git a/hcn/hcnnetwork_test.go b/hcn/hcnnetwork_test.go index f8adff7..4ad69d9 100644 --- a/hcn/hcnnetwork_test.go +++ b/hcn/hcnnetwork_test.go @@ -98,15 +98,12 @@ func TestListNetwork(t *testing.T) { func testNetworkPolicy(t *testing.T, policiesToTest *PolicyNetworkRequest) { t.Helper() - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) _ = network.AddPolicy(*policiesToTest) //Reload the network object from HNS. - network, err = GetNetworkByID(network.Id) + network, err := GetNetworkByID(network.Id) if err != nil { t.Fatal(err) } @@ -179,13 +176,10 @@ func TestAddRemoveNetworACLPolicy(t *testing.T) { } func TestNetworkFlags(t *testing.T) { - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) //Reload the network object from HNS. - network, err = GetNetworkByID(network.Id) + network, err := GetNetworkByID(network.Id) if err != nil { t.Fatal(err) } diff --git a/hcn/hcnroute_test.go b/hcn/hcnroute_test.go index a6eb106..824b3b2 100644 --- a/hcn/hcnroute_test.go +++ b/hcn/hcnroute_test.go @@ -9,10 +9,7 @@ import ( ) func TestCreateDeleteRoute(t *testing.T) { - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -42,10 +39,7 @@ func TestCreateDeleteRoute(t *testing.T) { } func TestGetRouteById(t *testing.T) { - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -88,10 +82,7 @@ func TestListRoutes(t *testing.T) { } func TestRouteAddRemoveEndpoint(t *testing.T) { - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -133,10 +124,7 @@ func TestRouteAddRemoveEndpoint(t *testing.T) { } func TestAddRoute(t *testing.T) { - network, err := CreateTestOverlayNetwork() - if err != nil { - t.Fatal(err) - } + network := CreateTestOverlayNetworkOrSkip(t) endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) diff --git a/hcn/hcnutils_test.go b/hcn/hcnutils_test.go index 536f33f..6ec3713 100644 --- a/hcn/hcnutils_test.go +++ b/hcn/hcnutils_test.go @@ -5,6 +5,7 @@ package hcn import ( "encoding/json" + "testing" ) func CreateSubnet(AddressPrefix string, NextHop string, DestPrefix string) *Subnet { @@ -78,6 +79,18 @@ func HcnCreateTestNATNetwork() (*HostComputeNetwork, error) { return HcnCreateTestNATNetworkWithSubnet(GetDefaultSubnet()) } +func CreateTestOverlayNetworkOrSkip(t *testing.T) *HostComputeNetwork { + t.Helper() + network, err := CreateTestOverlayNetwork() + if err != nil { + if IsAdapterNotFoundError(err) { + t.Skip("Skipping: overlay network not supported, adapter not found.", err) + } + t.Fatal(err) + } + return network +} + func CreateTestOverlayNetwork() (*HostComputeNetwork, error) { cleanup(OverlayTestNetworkName) subnet := GetDefaultSubnet() From 297d2aab0c3bba2eb719d201565126fb65edf7cd Mon Sep 17 00:00:00 2001 From: Prince Pereira Date: Fri, 13 Mar 2026 10:45:51 +0530 Subject: [PATCH 2/3] Adding more tests to pipeline. --- hcn/hcntestconsts_test.go | 11 +++++++++++ hcn/hcnutils_test.go | 4 ++-- hcn/hnsv1_test.go | 7 ------- 3 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 hcn/hcntestconsts_test.go diff --git a/hcn/hcntestconsts_test.go b/hcn/hcntestconsts_test.go new file mode 100644 index 0000000..d7b8d4d --- /dev/null +++ b/hcn/hcntestconsts_test.go @@ -0,0 +1,11 @@ +//go:build windows +// +build windows + +package hcn + +const ( + NatTestNetworkName string = "GoTestNat" + NatTestEndpointName string = "GoTestNatEndpoint" + OverlayTestNetworkName string = "GoTestOverlay" + BridgeTestNetworkName string = "GoTestL2Bridge" +) diff --git a/hcn/hcnutils_test.go b/hcn/hcnutils_test.go index 6ec3713..56c3beb 100644 --- a/hcn/hcnutils_test.go +++ b/hcn/hcnutils_test.go @@ -1,5 +1,5 @@ -//go:build windows && integration -// +build windows,integration +//go:build windows +// +build windows package hcn diff --git a/hcn/hnsv1_test.go b/hcn/hnsv1_test.go index 9090bbd..923365c 100644 --- a/hcn/hnsv1_test.go +++ b/hcn/hnsv1_test.go @@ -10,13 +10,6 @@ import ( "github.com/Microsoft/hnslib" ) -const ( - NatTestNetworkName string = "GoTestNat" - NatTestEndpointName string = "GoTestNatEndpoint" - OverlayTestNetworkName string = "GoTestOverlay" - BridgeTestNetworkName string = "GoTestL2Bridge" -) - func TestMain(m *testing.M) { os.Exit(m.Run()) } From a463f57d642b49fd45a14662a8ae8be806c20cbc Mon Sep 17 00:00:00 2001 From: Prince Pereira Date: Fri, 13 Mar 2026 10:56:31 +0530 Subject: [PATCH 3/3] Enabling loadbalancer tests. --- .github/workflows/ci.yml | 4 +-- .github/workflows/integration.yml | 4 +-- hcn/hcnerrors_test.go | 5 ++- hcn/hcnloadbalancer_test.go | 55 +++++++++++++++++++++++-------- hcn/hcnnetwork_test.go | 14 +++++--- hcn/hcnroute_test.go | 20 ++++++++--- hcn/hcnutils_test.go | 15 ++------- 7 files changed, 77 insertions(+), 40 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c928f6a..29edccb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,14 +12,14 @@ on: jobs: build: - runs-on: "windows-2022" + runs-on: "windows-2025" steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v4 with: - go-version: '1.22' + go-version: '1.25' - name: Verify Dependencies run: go mod verify diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 1129b27..09464d4 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -8,14 +8,14 @@ on: jobs: integration: - runs-on: windows-2022 + runs-on: windows-2025 steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v4 with: - go-version: '1.22' + go-version: '1.25' - name: Run integration tests run: | diff --git a/hcn/hcnerrors_test.go b/hcn/hcnerrors_test.go index 50fa6ac..8ea8835 100644 --- a/hcn/hcnerrors_test.go +++ b/hcn/hcnerrors_test.go @@ -66,7 +66,10 @@ func TestMissingNamespaceById(t *testing.T) { } func TestEndpointAlreadyExistsError(t *testing.T) { - testNetwork := CreateTestOverlayNetworkOrSkip(t) + testNetwork, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal("Failed to create overlay network for setup.", err) + } defer testNetwork.Delete() //nolint:errcheck portMappingSetting := PortMappingPolicySetting{ Protocol: 17, diff --git a/hcn/hcnloadbalancer_test.go b/hcn/hcnloadbalancer_test.go index 60706a0..8a6235e 100644 --- a/hcn/hcnloadbalancer_test.go +++ b/hcn/hcnloadbalancer_test.go @@ -1,7 +1,5 @@ -//go:build windows && integration_loadbalancer -// +build windows,integration_loadbalancer - -// TODO: https://github.com/microsoft/hnslib/issues/19 +//go:build windows && integration +// +build windows,integration package hcn @@ -12,7 +10,10 @@ import ( ) func TestCreateDeleteLoadBalancer(t *testing.T) { - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -42,7 +43,10 @@ func TestCreateDeleteLoadBalancer(t *testing.T) { } func TestCreateUpdateDeleteLoadBalancer(t *testing.T) { - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -66,7 +70,12 @@ func TestCreateUpdateDeleteLoadBalancer(t *testing.T) { loadBalancer, err = loadBalancer.Update(loadBalancer.Id) if err != nil { - t.Fatal(err) + if IsNotImplemented(err) { + t.Logf("LoadBalancer Update is not implemented on this version of Windows") + return + } else { + t.Fatal(err) + } } if len(loadBalancer.HostComputeEndpoints) != 2 { @@ -77,7 +86,11 @@ func TestCreateUpdateDeleteLoadBalancer(t *testing.T) { loadBalancer, err = loadBalancer.Update(loadBalancer.Id) if err != nil { - t.Fatal(err) + if IsNotImplemented(err) { + t.Logf("LoadBalancer Update is not implemented on this version of Windows") + } else { + t.Fatal(err) + } } if len(loadBalancer.HostComputeEndpoints) != 1 { @@ -103,7 +116,10 @@ func TestCreateUpdateDeleteLoadBalancer(t *testing.T) { } func TestGetLoadBalancerById(t *testing.T) { - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -141,7 +157,10 @@ func TestListLoadBalancer(t *testing.T) { } func TestLoadBalancerAddRemoveEndpoint(t *testing.T) { - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -190,12 +209,14 @@ func TestLoadBalancerAddRemoveEndpoint(t *testing.T) { } func TestAddLoadBalancer(t *testing.T) { - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) } - loadBalancer, err := AddLoadBalancer([]HostComputeEndpoint{*endpoint}, LoadBalancerFlagsNone, LoadBalancerPortMappingFlagsNone, "10.0.0.1", []string{"1.1.1.2", "1.1.1.3"}, 6, 8080, 80) if err != nil { t.Fatal(err) @@ -223,7 +244,10 @@ func TestAddLoadBalancer(t *testing.T) { } func TestAddDSRLoadBalancer(t *testing.T) { - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -265,7 +289,10 @@ func TestAddDSRLoadBalancer(t *testing.T) { } func TestAddILBLoadBalancer(t *testing.T) { - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) diff --git a/hcn/hcnnetwork_test.go b/hcn/hcnnetwork_test.go index 4ad69d9..f8adff7 100644 --- a/hcn/hcnnetwork_test.go +++ b/hcn/hcnnetwork_test.go @@ -98,12 +98,15 @@ func TestListNetwork(t *testing.T) { func testNetworkPolicy(t *testing.T, policiesToTest *PolicyNetworkRequest) { t.Helper() - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } _ = network.AddPolicy(*policiesToTest) //Reload the network object from HNS. - network, err := GetNetworkByID(network.Id) + network, err = GetNetworkByID(network.Id) if err != nil { t.Fatal(err) } @@ -176,10 +179,13 @@ func TestAddRemoveNetworACLPolicy(t *testing.T) { } func TestNetworkFlags(t *testing.T) { - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } //Reload the network object from HNS. - network, err := GetNetworkByID(network.Id) + network, err = GetNetworkByID(network.Id) if err != nil { t.Fatal(err) } diff --git a/hcn/hcnroute_test.go b/hcn/hcnroute_test.go index 824b3b2..a6eb106 100644 --- a/hcn/hcnroute_test.go +++ b/hcn/hcnroute_test.go @@ -9,7 +9,10 @@ import ( ) func TestCreateDeleteRoute(t *testing.T) { - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -39,7 +42,10 @@ func TestCreateDeleteRoute(t *testing.T) { } func TestGetRouteById(t *testing.T) { - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -82,7 +88,10 @@ func TestListRoutes(t *testing.T) { } func TestRouteAddRemoveEndpoint(t *testing.T) { - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) @@ -124,7 +133,10 @@ func TestRouteAddRemoveEndpoint(t *testing.T) { } func TestAddRoute(t *testing.T) { - network := CreateTestOverlayNetworkOrSkip(t) + network, err := CreateTestOverlayNetwork() + if err != nil { + t.Fatal(err) + } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { t.Fatal(err) diff --git a/hcn/hcnutils_test.go b/hcn/hcnutils_test.go index 56c3beb..9919630 100644 --- a/hcn/hcnutils_test.go +++ b/hcn/hcnutils_test.go @@ -5,7 +5,7 @@ package hcn import ( "encoding/json" - "testing" + "time" ) func CreateSubnet(AddressPrefix string, NextHop string, DestPrefix string) *Subnet { @@ -36,6 +36,7 @@ func cleanup(networkName string) { return } } + time.Sleep(2 * time.Second) } func HcnGenerateNATNetwork(subnet *Subnet) *HostComputeNetwork { @@ -79,18 +80,6 @@ func HcnCreateTestNATNetwork() (*HostComputeNetwork, error) { return HcnCreateTestNATNetworkWithSubnet(GetDefaultSubnet()) } -func CreateTestOverlayNetworkOrSkip(t *testing.T) *HostComputeNetwork { - t.Helper() - network, err := CreateTestOverlayNetwork() - if err != nil { - if IsAdapterNotFoundError(err) { - t.Skip("Skipping: overlay network not supported, adapter not found.", err) - } - t.Fatal(err) - } - return network -} - func CreateTestOverlayNetwork() (*HostComputeNetwork, error) { cleanup(OverlayTestNetworkName) subnet := GetDefaultSubnet()