...
1
2
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