From f670ba5ae4e2f8921d3cd1c6eb651abf7a1ed222 Mon Sep 17 00:00:00 2001 From: Madhan Raj Mookkandy Date: Thu, 11 Oct 2018 22:30:56 -0700 Subject: [PATCH] Fix tests to fail and continue Expose ELB DSR flag --- hcn/hcnendpoint_test.go | 122 ++++++++++++++-------------- hcn/hcnerrors_test.go | 12 +-- hcn/hcnloadbalancer.go | 10 ++- hcn/hcnloadbalancer_test.go | 146 +++++++++++++++++++++++++--------- hcn/hcnnamespace_test.go | 140 ++++++++++++++++---------------- hcn/hcnnetwork_test.go | 24 +++--- hcn/hcnsupport_test.go | 4 +- hcn/hcnutils_test.go | 3 + hcn/hcnv1schema_test.go | 27 ++++--- hcn/hnsv1_test.go | 20 ++--- hnspolicylist.go | 4 +- internal/hns/hnspolicylist.go | 4 +- 12 files changed, 305 insertions(+), 211 deletions(-) diff --git a/hcn/hcnendpoint_test.go b/hcn/hcnendpoint_test.go index fb297edc48..49228cd6a5 100644 --- a/hcn/hcnendpoint_test.go +++ b/hcn/hcnendpoint_test.go @@ -11,261 +11,261 @@ import ( func TestCreateDeleteEndpoint(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } Endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } jsonString, err := json.Marshal(Endpoint) if err != nil { - t.Error(err) + t.Fatal(err) } fmt.Printf("Endpoint JSON:\n%s \n", jsonString) _, err = Endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestGetEndpointById(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } Endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } foundEndpoint, err := GetEndpointByID(Endpoint.Id) if err != nil { - t.Error(err) + t.Fatal(err) } if foundEndpoint == nil { - t.Errorf("No Endpoint found") + t.Fatal("No Endpoint found") } _, err = foundEndpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestGetEndpointByName(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } Endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } foundEndpoint, err := GetEndpointByName(Endpoint.Name) if err != nil { - t.Error(err) + t.Fatal(err) } if foundEndpoint == nil { - t.Errorf("No Endpoint found") + t.Fatal("No Endpoint found") } _, err = foundEndpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestListEndpoints(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } Endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } foundEndpoints, err := ListEndpoints() if err != nil { - t.Error(err) + t.Fatal(err) } if len(foundEndpoints) == 0 { - t.Errorf("No Endpoint found") + t.Fatal("No Endpoint found") } _, err = Endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestListEndpointsOfNetwork(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } Endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } foundEndpoints, err := ListEndpointsOfNetwork(network.Id) if err != nil { - t.Error(err) + t.Fatal(err) } if len(foundEndpoints) == 0 { - t.Errorf("No Endpoint found") + t.Fatal("No Endpoint found") } _, err = Endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestEndpointNamespaceAttachDetach(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } namespace, err := HcnCreateTestNamespace() if err != nil { - t.Error(err) + t.Fatal(err) } err = endpoint.NamespaceAttach(namespace.Id) if err != nil { - t.Error(err) + t.Fatal(err) } err = endpoint.NamespaceDetach(namespace.Id) if err != nil { - t.Error(err) + t.Fatal(err) } _, err = namespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestCreateEndpointWithNamespace(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } namespace, err := HcnCreateTestNamespace() if err != nil { - t.Error(err) + t.Fatal(err) } Endpoint, err := HcnCreateTestEndpointWithNamespace(network, namespace) if err != nil { - t.Error(err) + t.Fatal(err) } if Endpoint.HostComputeNamespace == "" { - t.Errorf("No Namespace detected.") + t.Fatal("No Namespace detected.") } _, err = Endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestApplyPolicyOnEndpoint(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } Endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } endpointPolicyList, err := HcnCreateAcls() if err != nil { - t.Error(err) + t.Fatal(err) } jsonString, err := json.Marshal(*endpointPolicyList) if err != nil { - t.Error(err) + t.Fatal(err) } fmt.Printf("ACLS JSON:\n%s \n", jsonString) err = Endpoint.ApplyPolicy(*endpointPolicyList) if err != nil { - t.Error(err) + t.Fatal(err) } foundEndpoint, err := GetEndpointByName(Endpoint.Name) if err != nil { - t.Error(err) + t.Fatal(err) } if len(foundEndpoint.Policies) == 0 { - t.Errorf("No Endpoint Policies found") + t.Fatal("No Endpoint Policies found") } _, err = Endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestModifyEndpointSettings(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } endpointPolicy, err := HcnCreateAcls() if err != nil { - t.Error(err) + t.Fatal(err) } settingsJson, err := json.Marshal(endpointPolicy) if err != nil { - t.Error(err) + t.Fatal(err) } requestMessage := &ModifyEndpointSettingRequest{ @@ -276,23 +276,23 @@ func TestModifyEndpointSettings(t *testing.T) { err = ModifyEndpointSettings(endpoint.Id, requestMessage) if err != nil { - t.Error(err) + t.Fatal(err) } foundEndpoint, err := GetEndpointByName(endpoint.Name) if err != nil { - t.Error(err) + t.Fatal(err) } if len(foundEndpoint.Policies) == 0 { - t.Errorf("No Endpoint Policies found") + t.Fatal("No Endpoint Policies found") } _, err = endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } diff --git a/hcn/hcnerrors_test.go b/hcn/hcnerrors_test.go index dcd98c6604..51a1403b97 100644 --- a/hcn/hcnerrors_test.go +++ b/hcn/hcnerrors_test.go @@ -9,13 +9,13 @@ import ( func TestMissingNetworkByName(t *testing.T) { _, err := GetNetworkByName("Not found name") if err == nil { - t.Errorf("Error was not thrown.") + t.Fatal("Error was not thrown.") } if !IsNotFoundError(err) { - t.Errorf("Unrelated error was thrown.") + t.Fatal("Unrelated error was thrown.") } if _, ok := err.(NetworkNotFoundError); !ok { - t.Errorf("Wrong error type was thrown.") + t.Fatal("Wrong error type was thrown.") } } @@ -23,12 +23,12 @@ func TestMissingNetworkById(t *testing.T) { // Random guid _, err := GetNetworkByID("5f0b1190-63be-4e0c-b974-bd0f55675a42") if err == nil { - t.Errorf("Unrelated error was thrown.") + t.Fatal("Unrelated error was thrown.") } if !IsNotFoundError(err) { - t.Errorf("Unrelated error was thrown.") + t.Fatal("Unrelated error was thrown.") } if _, ok := err.(NetworkNotFoundError); !ok { - t.Errorf("Wrong error type was thrown.") + t.Fatal("Wrong error type was thrown.") } } diff --git a/hcn/hcnloadbalancer.go b/hcn/hcnloadbalancer.go index 90435f6870..a6c22de700 100644 --- a/hcn/hcnloadbalancer.go +++ b/hcn/hcnloadbalancer.go @@ -24,6 +24,7 @@ type HostComputeLoadBalancer struct { FrontendVIPs []string `json:",omitempty"` PortMappings []LoadBalancerPortMapping `json:",omitempty"` SchemaVersion SchemaVersion `json:",omitempty"` + Flags uint32 `json:",omitempty"` // 0: None, 1: EnableDirectServerReturn } func getLoadBalancer(loadBalancerGuid guid.GUID, query string) (*HostComputeLoadBalancer, error) { @@ -278,7 +279,7 @@ func (loadBalancer *HostComputeLoadBalancer) RemoveEndpoint(endpoint *HostComput } // AddLoadBalancer for the specified endpoints -func AddLoadBalancer(endpoints []HostComputeEndpoint, isILB bool, sourceVIP string, frontendVIPs []string, protocol uint16, internalPort uint16, externalPort uint16) (*HostComputeLoadBalancer, error) { +func AddLoadBalancer(endpoints []HostComputeEndpoint, isILB bool, isDSR bool, sourceVIP string, frontendVIPs []string, protocol uint16, internalPort uint16, externalPort uint16) (*HostComputeLoadBalancer, error) { logrus.Debugf("hcn::HostComputeLoadBalancer::AddLoadBalancer endpointId=%v, isILB=%v, sourceVIP=%s, frontendVIPs=%v, protocol=%v, internalPort=%v, externalPort=%v", endpoints, isILB, sourceVIP, frontendVIPs, protocol, internalPort, externalPort) var portMappingFlags uint32 @@ -287,6 +288,12 @@ func AddLoadBalancer(endpoints []HostComputeEndpoint, isILB bool, sourceVIP stri portMappingFlags = 1 } + var lbFlags uint32 + lbFlags = 0 + if isDSR { + lbFlags = 1 // EnableDirectServerReturn + } + loadBalancer := &HostComputeLoadBalancer{ SourceVIP: sourceVIP, PortMappings: []LoadBalancerPortMapping{ @@ -302,6 +309,7 @@ func AddLoadBalancer(endpoints []HostComputeEndpoint, isILB bool, sourceVIP stri Major: 2, Minor: 0, }, + Flags: lbFlags, } for _, endpoint := range endpoints { diff --git a/hcn/hcnloadbalancer_test.go b/hcn/hcnloadbalancer_test.go index 5373a44618..0d51625e0a 100644 --- a/hcn/hcnloadbalancer_test.go +++ b/hcn/hcnloadbalancer_test.go @@ -11,161 +11,233 @@ import ( func TestCreateDeleteLoadBalancer(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } loadBalancer, err := HcnCreateTestLoadBalancer(endpoint) if err != nil { - t.Error(err) + t.Fatal(err) } jsonString, err := json.Marshal(loadBalancer) if err != nil { - t.Error(err) + t.Fatal(err) } fmt.Printf("LoadBalancer JSON:\n%s \n", jsonString) _, err = loadBalancer.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestGetLoadBalancerById(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } loadBalancer, err := HcnCreateTestLoadBalancer(endpoint) if err != nil { - t.Error(err) + t.Fatal(err) } foundLB, err := GetLoadBalancerByID(loadBalancer.Id) if err != nil { - t.Error(err) + t.Fatal(err) } if foundLB == nil { - t.Errorf("No loadBalancer found") + t.Fatalf("No loadBalancer found") } _, err = loadBalancer.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestListLoadBalancer(t *testing.T) { _, err := ListLoadBalancers() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestLoadBalancerAddRemoveEndpoint(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } loadBalancer, err := HcnCreateTestLoadBalancer(endpoint) if err != nil { - t.Error(err) + t.Fatal(err) } secondEndpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } updatedLB, err := loadBalancer.AddEndpoint(secondEndpoint) if err != nil { - t.Error(err) + t.Fatal(err) } if len(updatedLB.HostComputeEndpoints) != 2 { - t.Errorf("Endpoint not added to loadBalancer") + t.Fatalf("Endpoint not added to loadBalancer") } updatedLB, err = loadBalancer.RemoveEndpoint(secondEndpoint) if err != nil { - t.Error(err) + t.Fatal(err) } if len(updatedLB.HostComputeEndpoints) != 1 { - t.Errorf("Endpoint not removed from loadBalancer") + t.Fatalf("Endpoint not removed from loadBalancer") } _, err = loadBalancer.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = secondEndpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestAddLoadBalancer(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } - loadBalancer, err := AddLoadBalancer([]HostComputeEndpoint{*endpoint}, false, "10.0.0.1", []string{"1.1.1.2", "1.1.1.3"}, 6, 8080, 80) + loadBalancer, err := AddLoadBalancer([]HostComputeEndpoint{*endpoint}, false, false, "10.0.0.1", []string{"1.1.1.2", "1.1.1.3"}, 6, 8080, 80) if err != nil { - t.Error(err) + t.Fatal(err) } foundLB, err := GetLoadBalancerByID(loadBalancer.Id) if err != nil { - t.Error(err) + t.Fatal(err) } if foundLB == nil { - t.Error(fmt.Errorf("No loadBalancer found")) + t.Fatal(fmt.Errorf("No loadBalancer found")) } _, err = loadBalancer.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) + } +} + +func TestAddDSRLoadBalancer(t *testing.T) { + network, err := HcnCreateTestNetwork() + if err != nil { + t.Fatal(err) + } + endpoint, err := HcnCreateTestEndpoint(network) + if err != nil { + t.Fatal(err) + } + + loadBalancer, err := AddLoadBalancer([]HostComputeEndpoint{*endpoint}, false, true, "10.0.0.1", []string{"1.1.1.2", "1.1.1.3"}, 6, 8080, 80) + if err != nil { + t.Fatal(err) + } + foundLB, err := GetLoadBalancerByID(loadBalancer.Id) + if err != nil { + t.Fatal(err) + } + if foundLB == nil { + t.Fatal(fmt.Errorf("No loadBalancer found")) + } + + _, err = loadBalancer.Delete() + if err != nil { + t.Fatal(err) + } + _, err = endpoint.Delete() + if err != nil { + t.Fatal(err) + } + _, err = network.Delete() + if err != nil { + t.Fatal(err) + } +} + +func TestAddILBLoadBalancer(t *testing.T) { + network, err := HcnCreateTestNetwork() + if err != nil { + t.Fatal(err) + } + endpoint, err := HcnCreateTestEndpoint(network) + if err != nil { + t.Fatal(err) + } + + loadBalancer, err := AddLoadBalancer([]HostComputeEndpoint{*endpoint}, true, false, "10.0.0.1", []string{"1.1.1.2", "1.1.1.3"}, 6, 8080, 80) + if err != nil { + t.Fatal(err) + } + foundLB, err := GetLoadBalancerByID(loadBalancer.Id) + if err != nil { + t.Fatal(err) + } + if foundLB == nil { + t.Fatal(fmt.Errorf("No loadBalancer found")) + } + + _, err = loadBalancer.Delete() + if err != nil { + t.Fatal(err) + } + _, err = endpoint.Delete() + if err != nil { + t.Fatal(err) + } + _, err = network.Delete() + if err != nil { + t.Fatal(err) } } diff --git a/hcn/hcnnamespace_test.go b/hcn/hcnnamespace_test.go index 37d09c5ae4..7028f0c454 100644 --- a/hcn/hcnnamespace_test.go +++ b/hcn/hcnnamespace_test.go @@ -21,18 +21,18 @@ func TestNewNamespace(t *testing.T) { func TestCreateDeleteNamespace(t *testing.T) { namespace, err := HcnCreateTestNamespace() if err != nil { - t.Error(err) + t.Fatal(err) } jsonString, err := json.Marshal(namespace) if err != nil { - t.Error(err) + t.Fatal(err) } fmt.Printf("Namespace JSON:\n%s \n", jsonString) _, err = namespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } @@ -47,181 +47,181 @@ func TestCreateDeleteNamespaceGuest(t *testing.T) { hnsNamespace, err := namespace.Create() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = hnsNamespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestGetNamespaceById(t *testing.T) { namespace, err := HcnCreateTestNamespace() if err != nil { - t.Error(err) + t.Fatal(err) } foundNamespace, err := GetNamespaceByID(namespace.Id) if err != nil { - t.Error(err) + t.Fatal(err) } if foundNamespace == nil { - t.Errorf("No namespace found") + t.Fatal("No namespace found") } _, err = namespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestListNamespaces(t *testing.T) { namespace, err := HcnCreateTestNamespace() if err != nil { - t.Error(err) + t.Fatal(err) } foundNamespaces, err := ListNamespaces() if err != nil { - t.Error(err) + t.Fatal(err) } if len(foundNamespaces) == 0 { - t.Errorf("No Namespaces found") + t.Fatal("No Namespaces found") } _, err = namespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestGetNamespaceEndpointIds(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } namespace, err := HcnCreateTestNamespace() if err != nil { - t.Error(err) + t.Fatal(err) } err = endpoint.NamespaceAttach(namespace.Id) if err != nil { - t.Error(err) + t.Fatal(err) } foundEndpoints, err := GetNamespaceEndpointIds(namespace.Id) if err != nil { - t.Error(err) + t.Fatal(err) } if len(foundEndpoints) == 0 { - t.Errorf("No Endpoint found") + t.Fatal("No Endpoint found") } err = endpoint.NamespaceDetach(namespace.Id) if err != nil { - t.Error(err) + t.Fatal(err) } _, err = namespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestGetNamespaceContainers(t *testing.T) { namespace, err := HcnCreateTestNamespace() if err != nil { - t.Error(err) + t.Fatal(err) } foundEndpoints, err := GetNamespaceContainerIds(namespace.Id) if err != nil { - t.Error(err) + t.Fatal(err) } if len(foundEndpoints) != 0 { - t.Errorf("Found containers when none should exist") + t.Fatal("Found containers when none should exist") } _, err = namespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestAddRemoveNamespaceEndpoint(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } namespace, err := HcnCreateTestNamespace() if err != nil { - t.Error(err) + t.Fatal(err) } err = AddNamespaceEndpoint(namespace.Id, endpoint.Id) if err != nil { - t.Error(err) + t.Fatal(err) } foundEndpoints, err := GetNamespaceEndpointIds(namespace.Id) if err != nil { - t.Error(err) + t.Fatal(err) } if len(foundEndpoints) == 0 { - t.Errorf("No Endpoint found") + t.Fatal("No Endpoint found") } err = RemoveNamespaceEndpoint(namespace.Id, endpoint.Id) if err != nil { - t.Error(err) + t.Fatal(err) } _, err = namespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestModifyNamespaceSettings(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } endpoint, err := HcnCreateTestEndpoint(network) if err != nil { - t.Error(err) + t.Fatal(err) } namespace, err := HcnCreateTestNamespace() if err != nil { - t.Error(err) + t.Fatal(err) } mapA := map[string]string{"EndpointId": endpoint.Id} settingsJson, err := json.Marshal(mapA) if err != nil { - t.Error(err) + t.Fatal(err) } requestMessage := &ModifyNamespaceSettingRequest{ ResourceType: NamespaceResourceTypeEndpoint, @@ -231,31 +231,31 @@ func TestModifyNamespaceSettings(t *testing.T) { err = ModifyNamespaceSettings(namespace.Id, requestMessage) if err != nil { - t.Error(err) + t.Fatal(err) } foundEndpoints, err := GetNamespaceEndpointIds(namespace.Id) if err != nil { - t.Error(err) + t.Fatal(err) } if len(foundEndpoints) == 0 { - t.Errorf("No Endpoint found") + t.Fatal("No Endpoint found") } err = RemoveNamespaceEndpoint(namespace.Id, endpoint.Id) if err != nil { - t.Error(err) + t.Fatal(err) } _, err = namespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } @@ -273,18 +273,18 @@ func TestSyncNamespaceHostDefault(t *testing.T) { hnsNamespace, err := namespace.Create() if err != nil { - t.Error(err) + t.Fatal(err) } // Host namespace types should be no-op success err = hnsNamespace.Sync() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = hnsNamespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } @@ -300,18 +300,18 @@ func TestSyncNamespaceHost(t *testing.T) { hnsNamespace, err := namespace.Create() if err != nil { - t.Error(err) + t.Fatal(err) } // Host namespace types should be no-op success err = hnsNamespace.Sync() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = hnsNamespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } @@ -327,18 +327,18 @@ func TestSyncNamespaceGuestNoReg(t *testing.T) { hnsNamespace, err := namespace.Create() if err != nil { - t.Error(err) + t.Fatal(err) } // Guest namespace type with out reg state should be no-op success err = hnsNamespace.Sync() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = hnsNamespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } @@ -354,18 +354,18 @@ func TestSyncNamespaceGuestDefaultNoReg(t *testing.T) { hnsNamespace, err := namespace.Create() if err != nil { - t.Error(err) + t.Fatal(err) } // Guest namespace type with out reg state should be no-op success err = hnsNamespace.Sync() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = hnsNamespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } @@ -382,7 +382,7 @@ func TestSyncNamespaceGuest(t *testing.T) { hnsNamespace, err := namespace.Create() if err != nil { - t.Error(err) + t.Fatal(err) } // Create registry state @@ -390,23 +390,23 @@ func TestSyncNamespaceGuest(t *testing.T) { err = pnc.Store() if err != nil { pnc.Remove() - t.Error(err) + t.Fatal(err) } // Guest namespace type with reg state but not Vm shim should pass... // after trying to connect to VM shim that it doesn't find and remove the Key so it doesn't look again. err = hnsNamespace.Sync() if err != nil { - t.Error(err) + t.Fatal(err) } err = pnc.Remove() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = hnsNamespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } @@ -422,7 +422,7 @@ func TestSyncNamespaceGuestDefault(t *testing.T) { hnsNamespace, err := namespace.Create() if err != nil { - t.Error(err) + t.Fatal(err) } // Create registry state @@ -430,22 +430,22 @@ func TestSyncNamespaceGuestDefault(t *testing.T) { err = pnc.Store() if err != nil { pnc.Remove() - t.Error(err) + t.Fatal(err) } // Guest namespace type with reg state but not Vm shim should pass... // after trying to connect to VM shim that it doesn't find and remove the Key so it doesn't look again. err = hnsNamespace.Sync() if err != nil { - t.Error(err) + t.Fatal(err) } err = pnc.Remove() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = hnsNamespace.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } diff --git a/hcn/hcnnetwork_test.go b/hcn/hcnnetwork_test.go index 81353ae018..a37d7edfd5 100644 --- a/hcn/hcnnetwork_test.go +++ b/hcn/hcnnetwork_test.go @@ -11,58 +11,58 @@ import ( func TestCreateDeleteNetwork(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } jsonString, err := json.Marshal(network) if err != nil { - t.Error(err) + t.Fatal(err) } fmt.Printf("Network JSON:\n%s \n", jsonString) _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestGetNetworkByName(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } network, err = GetNetworkByName(network.Name) if err != nil { - t.Error(err) + t.Fatal(err) } if network == nil { - t.Errorf("No Network found") + t.Fatal("No Network found") } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestGetNetworkById(t *testing.T) { network, err := HcnCreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } network, err = GetNetworkByID(network.Id) if err != nil { - t.Error(err) + t.Fatal(err) } if network == nil { - t.Errorf("No Network found") + t.Fatal("No Network found") } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestListNetwork(t *testing.T) { _, err := ListNetworks() if err != nil { - t.Error(err) + t.Fatal(err) } } diff --git a/hcn/hcnsupport_test.go b/hcn/hcnsupport_test.go index 0dcce31b56..ee8f929abb 100644 --- a/hcn/hcnsupport_test.go +++ b/hcn/hcnsupport_test.go @@ -12,7 +12,7 @@ func TestSupportedFeatures(t *testing.T) { supportedFeatures := GetSupportedFeatures() jsonString, err := json.Marshal(supportedFeatures) if err != nil { - t.Error(err) + t.Fatal(err) } fmt.Printf("Supported Features:\n%s \n", jsonString) } @@ -20,6 +20,6 @@ func TestSupportedFeatures(t *testing.T) { func TestV2ApiSupport(t *testing.T) { err := V2ApiSupported() if err != nil { - t.Error(err) + t.Fatal(err) } } diff --git a/hcn/hcnutils_test.go b/hcn/hcnutils_test.go index 123278a753..b02a3b82bf 100644 --- a/hcn/hcnutils_test.go +++ b/hcn/hcnutils_test.go @@ -59,6 +59,9 @@ func HcnCreateTestNetwork() (*HostComputeNetwork, error) { } func HcnCreateTestEndpoint(network *HostComputeNetwork) (*HostComputeEndpoint, error) { + if network == nil { + + } Endpoint := &HostComputeEndpoint{ Name: NatTestEndpointName, SchemaVersion: SchemaVersion{ diff --git a/hcn/hcnv1schema_test.go b/hcn/hcnv1schema_test.go index 66ac767439..980785d0b0 100644 --- a/hcn/hcnv1schema_test.go +++ b/hcn/hcnv1schema_test.go @@ -31,17 +31,20 @@ func TestV1Network(t *testing.T) { jsonString, err := json.Marshal(v1network) if err != nil { - t.Error(err) + t.Fatal(err) + t.Fail() } network, err := createNetwork(string(jsonString)) if err != nil { - t.Error(err) + t.Fatal(err) + t.Fail() } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) + t.Fail() } } @@ -67,12 +70,14 @@ func TestV1Endpoint(t *testing.T) { jsonString, err := json.Marshal(v1network) if err != nil { - t.Error(err) + t.Fatal(err) + t.Fail() } network, err := createNetwork(string(jsonString)) if err != nil { - t.Error(err) + t.Fatal(err) + t.Fail() } v1endpoint := hcsshim.HNSEndpoint{ @@ -82,21 +87,25 @@ func TestV1Endpoint(t *testing.T) { jsonString, err = json.Marshal(v1endpoint) if err != nil { - t.Error(err) + t.Fatal(err) + t.Fail() } endpoint, err := createEndpoint(network.Id, string(jsonString)) if err != nil { - t.Error(err) + t.Fatal(err) + t.Fail() } _, err = endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) + t.Fail() } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) + t.Fail() } } diff --git a/hcn/hnsv1_test.go b/hcn/hnsv1_test.go index 03259407fc..d62da11dbe 100644 --- a/hcn/hnsv1_test.go +++ b/hcn/hnsv1_test.go @@ -37,7 +37,7 @@ func TestEndpoint(t *testing.T) { network, err := CreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } Endpoint := &hcsshim.HNSEndpoint{ @@ -46,51 +46,51 @@ func TestEndpoint(t *testing.T) { Endpoint, err = network.CreateEndpoint(Endpoint) if err != nil { - t.Error(err) + t.Fatal(err) } err = Endpoint.HostAttach(1) if err != nil { - t.Error(err) + t.Fatal(err) } err = Endpoint.HostDetach() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = Endpoint.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestEndpointGetAll(t *testing.T) { _, err := hcsshim.HNSListEndpointRequest() if err != nil { - t.Error(err) + t.Fatal(err) } } func TestNetworkGetAll(t *testing.T) { _, err := hcsshim.HNSListNetworkRequest("GET", "", "") if err != nil { - t.Error(err) + t.Fatal(err) } } func TestNetwork(t *testing.T) { network, err := CreateTestNetwork() if err != nil { - t.Error(err) + t.Fatal(err) } _, err = network.Delete() if err != nil { - t.Error(err) + t.Fatal(err) } } diff --git a/hnspolicylist.go b/hnspolicylist.go index 55aaa4a50e..12c2b97029 100644 --- a/hnspolicylist.go +++ b/hnspolicylist.go @@ -37,8 +37,8 @@ func GetPolicyListByID(policyListID string) (*PolicyList, error) { } // AddLoadBalancer policy list for the specified endpoints -func AddLoadBalancer(endpoints []HNSEndpoint, isILB bool, sourceVIP, vip string, protocol uint16, internalPort uint16, externalPort uint16) (*PolicyList, error) { - return hns.AddLoadBalancer(endpoints, isILB, sourceVIP, vip, protocol, internalPort, externalPort) +func AddLoadBalancer(endpoints []HNSEndpoint, isILB bool, isDSR bool, sourceVIP, vip string, protocol uint16, internalPort uint16, externalPort uint16) (*PolicyList, error) { + return hns.AddLoadBalancer(endpoints, isILB, isDSR, sourceVIP, vip, protocol, internalPort, externalPort) } // AddRoute adds route policy list for the specified endpoints diff --git a/internal/hns/hnspolicylist.go b/internal/hns/hnspolicylist.go index ff7369e6ff..cc98b49e0a 100644 --- a/internal/hns/hnspolicylist.go +++ b/internal/hns/hnspolicylist.go @@ -20,6 +20,7 @@ type ELBPolicy struct { SourceVIP string `json:"SourceVIP,omitempty"` VIPs []string `json:"VIPs,omitempty"` ILB bool `json:"ILB,omitempty"` + DSR bool `json:"IsDSR,omitempty"` } // LBPolicy is a structure defining schema for LoadBalancing based Policy @@ -139,7 +140,7 @@ func (policylist *PolicyList) RemoveEndpoint(endpoint *HNSEndpoint) (*PolicyList } // AddLoadBalancer policy list for the specified endpoints -func AddLoadBalancer(endpoints []HNSEndpoint, isILB bool, sourceVIP, vip string, protocol uint16, internalPort uint16, externalPort uint16) (*PolicyList, error) { +func AddLoadBalancer(endpoints []HNSEndpoint, isILB bool, isDSR bool, sourceVIP, vip string, protocol uint16, internalPort uint16, externalPort uint16) (*PolicyList, error) { operation := "AddLoadBalancer" title := "hcsshim::PolicyList::" + operation logrus.Debugf(title+" endpointId=%v, isILB=%v, sourceVIP=%s, vip=%s, protocol=%v, internalPort=%v, externalPort=%v", endpoints, isILB, sourceVIP, vip, protocol, internalPort, externalPort) @@ -149,6 +150,7 @@ func AddLoadBalancer(endpoints []HNSEndpoint, isILB bool, sourceVIP, vip string, elbPolicy := &ELBPolicy{ SourceVIP: sourceVIP, ILB: isILB, + DSR: isDSR, } if len(vip) > 0 {