...

Source file src/github.com/Microsoft/hcsshim/internal/guest/runtime/hcsv2/network_test.go

Documentation: github.com/Microsoft/hcsshim/internal/guest/runtime/hcsv2

     1  //go:build linux
     2  // +build linux
     3  
     4  package hcsv2
     5  
     6  import (
     7  	"context"
     8  	"testing"
     9  
    10  	"github.com/Microsoft/hcsshim/internal/protocol/guestresource"
    11  )
    12  
    13  func Test_getNetworkNamespace_NotExist(t *testing.T) {
    14  	defer func() {
    15  		err := RemoveNetworkNamespace(context.Background(), t.Name())
    16  		if err != nil {
    17  			t.Errorf("failed to remove ns with error: %v", err)
    18  		}
    19  	}()
    20  
    21  	ns, err := getNetworkNamespace(t.Name())
    22  	if err == nil {
    23  		t.Fatal("expected error got nil")
    24  	}
    25  	if ns != nil {
    26  		t.Fatalf("namespace should be nil, got: %+v", ns)
    27  	}
    28  }
    29  
    30  func Test_getNetworkNamespace_PreviousExist(t *testing.T) {
    31  	defer func() {
    32  		err := RemoveNetworkNamespace(context.Background(), t.Name())
    33  		if err != nil {
    34  			t.Errorf("failed to remove ns with error: %v", err)
    35  		}
    36  	}()
    37  
    38  	ns1 := GetOrAddNetworkNamespace(t.Name())
    39  	if ns1 == nil {
    40  		t.Fatal("namespace ns1 should not be nil")
    41  	}
    42  	ns2, err := getNetworkNamespace(t.Name())
    43  	if err != nil {
    44  		t.Fatalf("expected nil error got: %v", err)
    45  	}
    46  	if ns1 != ns2 {
    47  		t.Fatalf("ns1 %+v != ns2 %+v", ns1, ns2)
    48  	}
    49  }
    50  
    51  func Test_getOrAddNetworkNamespace_NotExist(t *testing.T) {
    52  	defer func() {
    53  		err := RemoveNetworkNamespace(context.Background(), t.Name())
    54  		if err != nil {
    55  			t.Errorf("failed to remove ns with error: %v", err)
    56  		}
    57  	}()
    58  
    59  	ns := GetOrAddNetworkNamespace(t.Name())
    60  	if ns == nil {
    61  		t.Fatalf("namespace should not be nil")
    62  	}
    63  }
    64  
    65  func Test_getOrAddNetworkNamespace_PreviousExist(t *testing.T) {
    66  	defer func() {
    67  		err := RemoveNetworkNamespace(context.Background(), t.Name())
    68  		if err != nil {
    69  			t.Errorf("failed to remove ns with error: %v", err)
    70  		}
    71  	}()
    72  
    73  	ns1 := GetOrAddNetworkNamespace(t.Name())
    74  	ns2 := GetOrAddNetworkNamespace(t.Name())
    75  	if ns1 != ns2 {
    76  		t.Fatalf("ns1 %+v != ns2 %+v", ns1, ns2)
    77  	}
    78  }
    79  
    80  func Test_removeNetworkNamespace_NotExist(t *testing.T) {
    81  	err := RemoveNetworkNamespace(context.Background(), t.Name())
    82  	if err != nil {
    83  		t.Fatalf("failed to remove non-existing ns with error: %v", err)
    84  	}
    85  }
    86  
    87  func Test_removeNetworkNamespace_HasAdapters(t *testing.T) {
    88  	defer func() {
    89  		err := RemoveNetworkNamespace(context.Background(), t.Name())
    90  		if err != nil {
    91  			t.Errorf("failed to remove ns with error: %v", err)
    92  		}
    93  	}()
    94  	nsOld := networkInstanceIDToName
    95  	defer func() {
    96  		networkInstanceIDToName = nsOld
    97  	}()
    98  
    99  	ns := GetOrAddNetworkNamespace(t.Name())
   100  
   101  	networkInstanceIDToName = func(ctx context.Context, id string, _ bool) (string, error) {
   102  		return "/dev/sdz", nil
   103  	}
   104  	err := ns.AddAdapter(context.Background(), &guestresource.LCOWNetworkAdapter{ID: "test"})
   105  	if err != nil {
   106  		t.Fatalf("failed to add adapter: %v", err)
   107  	}
   108  	err = RemoveNetworkNamespace(context.Background(), t.Name())
   109  	if err == nil {
   110  		t.Fatal("should have failed to delete namespace with adapters")
   111  	}
   112  	err = ns.RemoveAdapter(context.Background(), "test")
   113  	if err != nil {
   114  		t.Fatalf("failed to remove adapter: %v", err)
   115  	}
   116  	err = RemoveNetworkNamespace(context.Background(), t.Name())
   117  	if err != nil {
   118  		t.Fatalf("should not have failed to delete empty namepace got: %v", err)
   119  	}
   120  }
   121  

View as plain text