...

Source file src/github.com/Microsoft/hcsshim/hcn/hcnerrors_test.go

Documentation: github.com/Microsoft/hcsshim/hcn

     1  //go:build windows && integration
     2  // +build windows,integration
     3  
     4  package hcn
     5  
     6  import (
     7  	"encoding/json"
     8  	"testing"
     9  
    10  	"github.com/Microsoft/go-winio/pkg/guid"
    11  )
    12  
    13  func TestMissingNetworkByName(t *testing.T) {
    14  	_, err := GetNetworkByName("Not found name")
    15  	if err == nil {
    16  		t.Fatal("Error was not thrown.")
    17  	}
    18  	if !IsNotFoundError(err) {
    19  		t.Fatal("Unrelated error was thrown.", err)
    20  	}
    21  	if _, ok := err.(NetworkNotFoundError); !ok {
    22  		t.Fatal("Wrong error type was thrown.", err)
    23  	}
    24  	if err.Error() != `Network name "Not found name" not found` {
    25  		t.Fatal("Wrong error message was returned", err.Error())
    26  	}
    27  }
    28  
    29  func TestMissingNetworkById(t *testing.T) {
    30  	// Random guid
    31  	_, err := GetNetworkByID("5f0b1190-63be-4e0c-b974-bd0f55675a42")
    32  	if err == nil {
    33  		t.Fatal("Error was not thrown.")
    34  	}
    35  	if !IsNotFoundError(err) {
    36  		t.Fatal("Unrelated error was thrown.", err)
    37  	}
    38  	if _, ok := err.(NetworkNotFoundError); !ok {
    39  		t.Fatal("Wrong error type was thrown.", err)
    40  	}
    41  	if err.Error() != `Network ID "5f0b1190-63be-4e0c-b974-bd0f55675a42" not found` {
    42  		t.Fatal("Wrong error message was returned", err.Error())
    43  	}
    44  }
    45  
    46  func TestMissingNamespaceById(t *testing.T) {
    47  	// Random guid
    48  	_, err := GetNamespaceByID("5f0b1190-63be-4e0c-b974-bd0f55675a42")
    49  	if err == nil {
    50  		t.Fatal("Error was not thrown.")
    51  	}
    52  
    53  	if !IsNotFoundError(err) {
    54  		t.Fatal("Unrelated error was thrown.", err)
    55  	}
    56  	if _, ok := err.(NamespaceNotFoundError); !ok {
    57  		t.Fatal("Wrong error type was thrown.", err)
    58  	}
    59  	if err.Error() != `Namespace ID "5f0b1190-63be-4e0c-b974-bd0f55675a42" not found` {
    60  		t.Fatal("Wrong error message was returned.", err.Error())
    61  	}
    62  }
    63  
    64  func TestEndpointAlreadyExistsError(t *testing.T) {
    65  	testNetwork, err := CreateTestOverlayNetwork()
    66  	if err != nil {
    67  		t.Fatal("Failed to create overlay network for setup.", err)
    68  	}
    69  	defer testNetwork.Delete() //nolint:errcheck
    70  	portMappingSetting := PortMappingPolicySetting{
    71  		Protocol:     17,
    72  		InternalPort: 45678,
    73  		ExternalPort: 56789,
    74  	}
    75  	settingString, _ := json.Marshal(portMappingSetting)
    76  	portMappingPolicy := EndpointPolicy{
    77  		Type:     PortMapping,
    78  		Settings: settingString,
    79  	}
    80  
    81  	endpoint, err := HcnCreateTestEndpointWithPolicies(testNetwork, []EndpointPolicy{portMappingPolicy})
    82  	if err != nil {
    83  		t.Fatal("Failed to create endpoint for setup.", err)
    84  	}
    85  	defer endpoint.Delete() //nolint:errcheck
    86  
    87  	endpoint2, err := HcnCreateTestEndpointWithPolicies(testNetwork, []EndpointPolicy{portMappingPolicy})
    88  	if err == nil {
    89  		_ = endpoint2.Delete()
    90  		t.Fatal("Endpoint should have failed with duplicate port mapping.", err)
    91  	}
    92  
    93  	if !IsPortAlreadyExistsError(err) {
    94  		t.Fatal("Error is not a PortAlreadyExists Error", err)
    95  	}
    96  }
    97  
    98  func TestNotFoundError(t *testing.T) {
    99  	namespaceGuid, _ := guid.FromString("5f0b1190-63be-4e0c-b974-bd0f55675a42")
   100  	_, err := getNamespace(namespaceGuid, "")
   101  	if !IsElementNotFoundError(err) {
   102  		t.Fatal("Error is not a ElementNotFound Error.", err)
   103  	}
   104  }
   105  

View as plain text