@@ -20,6 +20,8 @@ import (
20
20
"testing"
21
21
22
22
"github.com/stretchr/testify/assert"
23
+
24
+ v1 "k8s.io/api/core/v1"
23
25
)
24
26
25
27
func TestGetNodenameForKernel (t * testing.T ) {
@@ -86,3 +88,58 @@ func TestGetNodenameForKernel(t *testing.T) {
86
88
}
87
89
88
90
}
91
+
92
+ func TestGetContainerByIndex (t * testing.T ) {
93
+ testCases := []struct {
94
+ title string
95
+ containers []v1.Container
96
+ statuses []v1.ContainerStatus
97
+ idx int
98
+ expectedContainer v1.Container
99
+ expectedOK bool
100
+ }{
101
+ {
102
+ title : "idx is less than zero" ,
103
+ containers : []v1.Container {{Name : "container-1" }},
104
+ statuses : []v1.ContainerStatus {{Name : "container-1" }},
105
+ idx : - 1 ,
106
+ expectedContainer : v1.Container {},
107
+ expectedOK : false ,
108
+ }, {
109
+ title : "idx is large then number of containers" ,
110
+ containers : []v1.Container {{Name : "container-1" }},
111
+ statuses : []v1.ContainerStatus {{Name : "container-1" }},
112
+ idx : 2 ,
113
+ expectedContainer : v1.Container {},
114
+ expectedOK : false ,
115
+ }, {
116
+ title : "idx is large then number of statuses" ,
117
+ containers : []v1.Container {{Name : "container-1" }, {Name : "container-2" }},
118
+ statuses : []v1.ContainerStatus {{Name : "container-1" }},
119
+ idx : 2 ,
120
+ expectedContainer : v1.Container {},
121
+ expectedOK : false ,
122
+ }, {
123
+ title : "names do not match" ,
124
+ containers : []v1.Container {{Name : "container-1" }},
125
+ statuses : []v1.ContainerStatus {{Name : "invalid-container" }},
126
+ idx : 0 ,
127
+ expectedContainer : v1.Container {},
128
+ expectedOK : false ,
129
+ }, {
130
+ title : "valid container index" ,
131
+ containers : []v1.Container {{Name : "container-1" }, {Name : "container-2" }},
132
+ statuses : []v1.ContainerStatus {{Name : "container-1" }, {Name : "container-2" }},
133
+ idx : 1 ,
134
+ expectedContainer : v1.Container {Name : "container-2" },
135
+ expectedOK : true ,
136
+ },
137
+ }
138
+
139
+ for _ , tc := range testCases {
140
+ container , ok := GetContainerByIndex (tc .containers , tc .statuses , tc .idx )
141
+ if container .Name != tc .expectedContainer .Name || ok != tc .expectedOK {
142
+ t .Errorf ("%s - Expected container: %v, got container: %v, expected ok: %v, got ok: %v" , tc .title , tc .expectedContainer , container , tc .expectedOK , ok )
143
+ }
144
+ }
145
+ }
0 commit comments