@@ -20,6 +20,65 @@ import (
20
20
"testing"
21
21
)
22
22
23
+ func TestContainerMapCloneEqual (t * testing.T ) {
24
+ cm := NewContainerMap ()
25
+ // add random fake data
26
+ cm .Add ("fakePodUID-1" , "fakeContainerName-a1" , "fakeContainerID-A" )
27
+ cm .Add ("fakePodUID-2" , "fakeContainerName-b2" , "fakeContainerID-B" )
28
+ cm .Add ("fakePodUID-2" , "fakeContainerName-c2" , "fakeContainerID-C" )
29
+ cm .Add ("fakePodUID-3" , "fakeContainerName-d3" , "fakeContainerID-D" )
30
+ cm .Add ("fakePodUID-3" , "fakeContainerName-e3" , "fakeContainerID-E" )
31
+ cm .Add ("fakePodUID-3" , "fakeContainerName-f3" , "fakeContainerID-F" )
32
+
33
+ cloned := cm .Clone ()
34
+ if ! areEqual (cm , cloned ) {
35
+ t .Fatalf ("clone %+#v different from original %+#v" , cloned , cm )
36
+ }
37
+ }
38
+
39
+ func TestContainerMapCloneUnshared (t * testing.T ) {
40
+ cm := NewContainerMap ()
41
+ // add random fake data
42
+ cm .Add ("fakePodUID-1" , "fakeContainerName-a1" , "fakeContainerID-A" )
43
+ cm .Add ("fakePodUID-2" , "fakeContainerName-b2" , "fakeContainerID-B" )
44
+ cm .Add ("fakePodUID-2" , "fakeContainerName-c2" , "fakeContainerID-C" )
45
+ cm .Add ("fakePodUID-3" , "fakeContainerName-d3" , "fakeContainerID-D" )
46
+ cm .Add ("fakePodUID-3" , "fakeContainerName-e3" , "fakeContainerID-E" )
47
+ cm .Add ("fakePodUID-3" , "fakeContainerName-f3" , "fakeContainerID-F" )
48
+
49
+ // early sanity check, random ID, no special meaning
50
+ podUID , containerName , err := cm .GetContainerRef ("fakeContainerID-C" )
51
+ if err != nil {
52
+ t .Fatalf ("unexpected error: %v" , err )
53
+ }
54
+ if podUID != "fakePodUID-2" || containerName != "fakeContainerName-c2" {
55
+ t .Fatalf ("unexpected data: uid=%q name=%q" , podUID , containerName )
56
+ }
57
+ if cID , err := cm .GetContainerID (podUID , containerName ); err != nil || cID != "fakeContainerID-C" {
58
+ t .Fatalf ("unexpected data: cid=%q err=%v" , cID , err )
59
+ }
60
+
61
+ cloned := cm .Clone ()
62
+ cloned .RemoveByContainerRef ("fakePodUID-2" , "fakeContainerName-c2" )
63
+ // check is actually gone
64
+ if cID , err := cloned .GetContainerID ("fakePodUID-2" , "fakeContainerName-c2" ); err == nil || cID != "" {
65
+ t .Fatalf ("unexpected data found: cid=%q" , cID )
66
+ }
67
+
68
+ // check the original copy didn't change
69
+ // early sanity check, random ID, no special meaning
70
+ podUIDRedo , containerNameRedo , err2 := cm .GetContainerRef ("fakeContainerID-C" )
71
+ if err != nil {
72
+ t .Fatalf ("unexpected error: %v" , err2 )
73
+ }
74
+ if podUIDRedo != "fakePodUID-2" || containerNameRedo != "fakeContainerName-c2" {
75
+ t .Fatalf ("unexpected data: uid=%q name=%q" , podUIDRedo , containerNameRedo )
76
+ }
77
+ if cID , err := cm .GetContainerID (podUIDRedo , containerNameRedo ); err != nil || cID != "fakeContainerID-C" {
78
+ t .Fatalf ("unexpected data: cid=%q" , cID )
79
+ }
80
+ }
81
+
23
82
func TestContainerMap (t * testing.T ) {
24
83
testCases := []struct {
25
84
podUID string
@@ -84,3 +143,19 @@ func TestContainerMap(t *testing.T) {
84
143
}
85
144
}
86
145
}
146
+
147
+ func areEqual (cm1 , cm2 ContainerMap ) bool {
148
+ if len (cm1 ) != len (cm2 ) {
149
+ return false
150
+ }
151
+ for key1 , item1 := range cm1 {
152
+ item2 , ok := cm2 [key1 ]
153
+ if ! ok {
154
+ return false
155
+ }
156
+ if item1 != item2 {
157
+ return false
158
+ }
159
+ }
160
+ return true
161
+ }
0 commit comments