@@ -27,6 +27,17 @@ var testMeshConfig *configv1alpha2.MeshConfig = &configv1alpha2.MeshConfig{
27
27
Spec : configv1alpha2.MeshConfigSpec {},
28
28
}
29
29
30
+ var testMeshConfigWithLastAppliedAnnotation * configv1alpha2.MeshConfig = & configv1alpha2.MeshConfig {
31
+ ObjectMeta : metav1.ObjectMeta {
32
+ Namespace : testNamespace ,
33
+ Name : meshConfigName ,
34
+ Annotations : map [string ]string {
35
+ "kubectl.kubernetes.io/last-applied-configuration" : `{"metadata":{"name":"osm-mesh-config","namespace":"test-namespace","creationTimestamp":null},"spec":{}}` ,
36
+ },
37
+ },
38
+ Spec : configv1alpha2.MeshConfigSpec {},
39
+ }
40
+
30
41
var testPresetMeshConfigMap * corev1.ConfigMap = & corev1.ConfigMap {
31
42
TypeMeta : metav1.TypeMeta {
32
43
Kind : "ConfigMap" ,
@@ -81,7 +92,9 @@ var testPresetMeshConfigMap *corev1.ConfigMap = &corev1.ConfigMap{
81
92
func TestBuildDefaultMeshConfig (t * testing.T ) {
82
93
assert := tassert .New (t )
83
94
84
- meshConfig := buildDefaultMeshConfig (testPresetMeshConfigMap )
95
+ meshConfig , err := buildDefaultMeshConfig (testPresetMeshConfigMap )
96
+ assert .NoError (err )
97
+ assert .Contains (meshConfig .Annotations , "kubectl.kubernetes.io/last-applied-configuration" )
85
98
assert .Equal (meshConfig .Name , meshConfigName )
86
99
assert .Equal (meshConfig .Spec .Sidecar .LogLevel , "error" )
87
100
assert .Equal (meshConfig .Spec .Sidecar .ConfigResyncInterval , "2s" )
@@ -103,12 +116,12 @@ func TestValidateCLIParams(t *testing.T) {
103
116
prevOsmNamespace := osmNamespace
104
117
105
118
tests := []struct {
106
- caseName string
107
- setup func ()
108
- verify func (error )
119
+ name string
120
+ setup func ()
121
+ verify func (error )
109
122
}{
110
123
{
111
- caseName : "osm-namespace is empty" ,
124
+ name : "osm-namespace is empty" ,
112
125
setup : func () {
113
126
osmNamespace = ""
114
127
},
@@ -118,7 +131,7 @@ func TestValidateCLIParams(t *testing.T) {
118
131
},
119
132
},
120
133
{
121
- caseName : "osm-namespace is valid" ,
134
+ name : "osm-namespace is valid" ,
122
135
setup : func () {
123
136
osmNamespace = "valid-ns"
124
137
},
@@ -128,7 +141,7 @@ func TestValidateCLIParams(t *testing.T) {
128
141
},
129
142
},
130
143
{
131
- caseName : "osm-namespace and ca-bundle-secret-name is valid" ,
144
+ name : "osm-namespace and ca-bundle-secret-name is valid" ,
132
145
setup : func () {
133
146
osmNamespace = "valid-ns"
134
147
caBundleSecretName = "valid-ca-bundle"
@@ -150,8 +163,6 @@ func TestValidateCLIParams(t *testing.T) {
150
163
}
151
164
152
165
func TestCreateDefaultMeshConfig (t * testing.T ) {
153
- assert := tassert .New (t )
154
-
155
166
tests := []struct {
156
167
name string
157
168
namespace string
@@ -187,35 +198,36 @@ func TestCreateDefaultMeshConfig(t *testing.T) {
187
198
}
188
199
189
200
for _ , tc := range tests {
190
- b := bootstrap {
191
- kubeClient : tc .kubeClient ,
192
- meshConfigClient : tc .meshConfigClient ,
193
- namespace : tc .namespace ,
194
- }
195
-
196
- err := b .createDefaultMeshConfig ()
197
- if tc .expectErr {
198
- assert .NotNil (err )
199
- } else {
200
- assert .Nil (err )
201
- }
201
+ t .Run (tc .name , func (t * testing.T ) {
202
+ assert := tassert .New (t )
203
+ b := bootstrap {
204
+ kubeClient : tc .kubeClient ,
205
+ meshConfigClient : tc .meshConfigClient ,
206
+ namespace : tc .namespace ,
207
+ }
202
208
203
- _ , err = b .meshConfigClient .ConfigV1alpha2 ().MeshConfigs (b .namespace ).Get (context .TODO (), meshConfigName , metav1.GetOptions {})
204
- if tc .expectDefaultMeshConfig {
205
- if err == nil {
209
+ err := b .createDefaultMeshConfig ()
210
+ if tc .expectErr {
211
+ assert .NotNil (err )
212
+ } else {
206
213
assert .Nil (err )
207
214
}
208
- } else {
209
- if err == nil {
210
- assert .NotNil (err )
215
+
216
+ _ , err = b .meshConfigClient .ConfigV1alpha2 ().MeshConfigs (b .namespace ).Get (context .TODO (), meshConfigName , metav1.GetOptions {})
217
+ if tc .expectDefaultMeshConfig {
218
+ if err == nil {
219
+ assert .Nil (err )
220
+ }
221
+ } else {
222
+ if err == nil {
223
+ assert .NotNil (err )
224
+ }
211
225
}
212
- }
226
+ })
213
227
}
214
228
}
215
229
216
230
func TestEnsureMeshConfig (t * testing.T ) {
217
- assert := tassert .New (t )
218
-
219
231
tests := []struct {
220
232
name string
221
233
namespace string
@@ -224,12 +236,19 @@ func TestEnsureMeshConfig(t *testing.T) {
224
236
expectErr bool
225
237
}{
226
238
{
227
- name : "MeshConfig found" ,
239
+ name : "MeshConfig found with no last-applied annotation " ,
228
240
namespace : testNamespace ,
229
241
kubeClient : fakeKube .NewSimpleClientset (),
230
242
meshConfigClient : fakeConfig .NewSimpleClientset ([]runtime.Object {testMeshConfig }... ),
231
243
expectErr : false ,
232
244
},
245
+ {
246
+ name : "MeshConfig found with last-applied annotation" ,
247
+ namespace : testNamespace ,
248
+ kubeClient : fakeKube .NewSimpleClientset (),
249
+ meshConfigClient : fakeConfig .NewSimpleClientset ([]runtime.Object {testMeshConfigWithLastAppliedAnnotation }... ),
250
+ expectErr : false ,
251
+ },
233
252
{
234
253
name : "MeshConfig not found but successfully created" ,
235
254
namespace : testNamespace ,
@@ -247,18 +266,24 @@ func TestEnsureMeshConfig(t *testing.T) {
247
266
}
248
267
249
268
for _ , tc := range tests {
250
- b := bootstrap {
251
- kubeClient : tc .kubeClient ,
252
- meshConfigClient : tc .meshConfigClient ,
253
- namespace : tc .namespace ,
254
- }
269
+ t .Run (tc .name , func (t * testing.T ) {
270
+ assert := tassert .New (t )
271
+ b := bootstrap {
272
+ kubeClient : tc .kubeClient ,
273
+ meshConfigClient : tc .meshConfigClient ,
274
+ namespace : tc .namespace ,
275
+ }
255
276
256
- err := b .ensureMeshConfig ()
257
- if tc .expectErr {
258
- assert .NotNil (err )
259
- } else {
260
- assert .Nil (err )
261
- }
277
+ err := b .ensureMeshConfig ()
278
+ if tc .expectErr {
279
+ assert .NotNil (err )
280
+ } else {
281
+ assert .Nil (err )
282
+ config , err := b .meshConfigClient .ConfigV1alpha2 ().MeshConfigs (b .namespace ).Get (context .TODO (), meshConfigName , metav1.GetOptions {})
283
+ assert .Nil (err )
284
+ assert .Contains (config .Annotations , "kubectl.kubernetes.io/last-applied-configuration" )
285
+ }
286
+ })
262
287
}
263
288
}
264
289
@@ -304,24 +329,26 @@ func TestGetBootstrapPod(t *testing.T) {
304
329
}
305
330
306
331
for _ , tc := range tests {
307
- b := bootstrap {
308
- namespace : tc .namespace ,
309
- kubeClient : tc .kubeClient ,
310
- }
311
- defer func () {
312
- err := resetEnv ("BOOTSTRAP_POD_NAME" , os .Getenv ("BOOTSTRAP_POD_NAME" ))
313
- assert .Nil (err )
314
- }()
315
-
316
- err := os .Setenv ("BOOTSTRAP_POD_NAME" , tc .bootstrapPodNameEnv )
317
- assert .Nil (err )
332
+ t .Run (tc .name , func (t * testing.T ) {
333
+ b := bootstrap {
334
+ namespace : tc .namespace ,
335
+ kubeClient : tc .kubeClient ,
336
+ }
337
+ defer func () {
338
+ err := resetEnv ("BOOTSTRAP_POD_NAME" , os .Getenv ("BOOTSTRAP_POD_NAME" ))
339
+ assert .Nil (err )
340
+ }()
318
341
319
- _ , err = b .getBootstrapPod ()
320
- if tc .expectErr {
321
- assert .NotNil (err )
322
- } else {
342
+ err := os .Setenv ("BOOTSTRAP_POD_NAME" , tc .bootstrapPodNameEnv )
323
343
assert .Nil (err )
324
- }
344
+
345
+ _ , err = b .getBootstrapPod ()
346
+ if tc .expectErr {
347
+ assert .NotNil (err )
348
+ } else {
349
+ assert .Nil (err )
350
+ }
351
+ })
325
352
}
326
353
}
327
354
0 commit comments