@@ -185,12 +185,11 @@ func TestDeploymentController(t *testing.T) {
185
185
186
186
testIt := func (t * testing.T , testK8sVersion version.Version ) {
187
187
type testContext struct {
188
- c client.Client
189
- cs kubernetes.Interface
190
- rc reconcile.Reconciler
191
- evWatcher watch.Interface
192
- events []* corev1.Event
193
- resourceVersions map [string ]string
188
+ c client.Client
189
+ cs kubernetes.Interface
190
+ rc reconcile.Reconciler
191
+ evWatcher watch.Interface
192
+ events []* corev1.Event
194
193
}
195
194
const (
196
195
testNamespace = "test-namespace"
@@ -210,11 +209,9 @@ func TestDeploymentController(t *testing.T) {
210
209
}
211
210
212
211
setup := func (t * testing.T ) * testContext {
213
- tc := & testContext {
214
- c : fake .NewFakeClient (),
215
- cs : cgfake .NewSimpleClientset (),
216
- resourceVersions : map [string ]string {},
217
- }
212
+ tc := & testContext {}
213
+ tc .c = fake .NewFakeClient ()
214
+ tc .cs = cgfake .NewSimpleClientset ()
218
215
tc .rc = newReconcileDeployment (tc .c , tc .cs )
219
216
tc .evWatcher = tc .rc .(* deployment.ReconcileDeployment ).EventBroadcaster ().StartEventWatcher (func (ev * corev1.Event ) {
220
217
// Discard consecutive duplicate events, mimicking the EventAggregator behavior
@@ -248,20 +245,14 @@ func TestDeploymentController(t *testing.T) {
248
245
require .ElementsMatch (t , events , expectedEvents , "events must match" )
249
246
}
250
247
251
- validateDriver := func (t * testing.T , tc * testContext , dep * api.Deployment , expectedEvents []string , wasUpdated bool ) {
248
+ validateDriver := func (t * testing.T , tc * testContext , dep * api.Deployment , expectedEvents []string ) {
252
249
// We may have to fill in some defaults, so make a copy first.
253
250
dep = dep .DeepCopyObject ().(* api.Deployment )
254
251
if dep .Spec .Image == "" {
255
252
dep .Spec .Image = testDriverImage
256
253
}
257
254
258
- // If the CR was not updated, then objects should still be the same as they were initially.
259
- rv := tc .resourceVersions
260
- if wasUpdated {
261
- rv = nil
262
- }
263
- _ , err := validate .DriverDeployment (tc .c , testK8sVersion , testNamespace , * dep , rv )
264
- require .NoError (t , err , "validate deployment" )
255
+ require .NoError (t , validate .DriverDeployment (tc .c , testK8sVersion , testNamespace , * dep ), "validate deployment" )
265
256
validateEvents (t , tc , dep , expectedEvents )
266
257
}
267
258
@@ -280,7 +271,7 @@ func TestDeploymentController(t *testing.T) {
280
271
require .NoError (t , err , "failed to create deployment" )
281
272
282
273
testReconcilePhase (t , tc .rc , tc .c , d .name , false , false , api .DeploymentPhaseRunning )
283
- validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning }, false )
274
+ validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning })
284
275
})
285
276
286
277
t .Run ("deployment with explicit values" , func (t * testing.T ) {
@@ -306,7 +297,7 @@ func TestDeploymentController(t *testing.T) {
306
297
307
298
// Reconcile now should change Phase to running
308
299
testReconcilePhase (t , tc .rc , tc .c , d .name , false , false , api .DeploymentPhaseRunning )
309
- validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning }, false )
300
+ validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning })
310
301
})
311
302
312
303
t .Run ("multiple deployments" , func (t * testing.T ) {
@@ -329,9 +320,9 @@ func TestDeploymentController(t *testing.T) {
329
320
require .NoError (t , err , "failed to create deployment2" )
330
321
331
322
testReconcilePhase (t , tc .rc , tc .c , d1 .name , false , false , api .DeploymentPhaseRunning )
332
- validateDriver (t , tc , dep1 , []string {api .EventReasonNew , api .EventReasonRunning }, false )
323
+ validateDriver (t , tc , dep1 , []string {api .EventReasonNew , api .EventReasonRunning })
333
324
testReconcilePhase (t , tc .rc , tc .c , d2 .name , false , false , api .DeploymentPhaseRunning )
334
- validateDriver (t , tc , dep2 , []string {api .EventReasonNew , api .EventReasonRunning }, false )
325
+ validateDriver (t , tc , dep2 , []string {api .EventReasonNew , api .EventReasonRunning })
335
326
})
336
327
337
328
t .Run ("invalid device mode" , func (t * testing.T ) {
@@ -363,7 +354,7 @@ func TestDeploymentController(t *testing.T) {
363
354
err := tc .c .Create (context .TODO (), dep )
364
355
require .NoError (t , err , "failed to create deployment" )
365
356
testReconcilePhase (t , tc .rc , tc .c , d .name , false , false , api .DeploymentPhaseRunning )
366
- validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning }, false )
357
+ validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning })
367
358
})
368
359
369
360
t .Run ("direct mode" , func (t * testing.T ) {
@@ -378,7 +369,7 @@ func TestDeploymentController(t *testing.T) {
378
369
err := tc .c .Create (context .TODO (), dep )
379
370
require .NoError (t , err , "failed to create deployment" )
380
371
testReconcilePhase (t , tc .rc , tc .c , d .name , false , false , api .DeploymentPhaseRunning )
381
- validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning }, false )
372
+ validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning })
382
373
})
383
374
384
375
t .Run ("provided private keys" , func (t * testing.T ) {
@@ -400,7 +391,7 @@ func TestDeploymentController(t *testing.T) {
400
391
401
392
// First deployment expected to be successful
402
393
testReconcilePhase (t , tc .rc , tc .c , d .name , false , false , api .DeploymentPhaseRunning )
403
- validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning }, false )
394
+ validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning })
404
395
})
405
396
406
397
t .Run ("provided private keys and certificates" , func (t * testing.T ) {
@@ -433,7 +424,7 @@ func TestDeploymentController(t *testing.T) {
433
424
434
425
// First deployment expected to be successful
435
426
testReconcilePhase (t , tc .rc , tc .c , d .name , false , false , api .DeploymentPhaseRunning )
436
- validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning }, false )
427
+ validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning })
437
428
})
438
429
439
430
t .Run ("invalid private keys and certificates" , func (t * testing.T ) {
@@ -526,13 +517,13 @@ func TestDeploymentController(t *testing.T) {
526
517
tc .rc .(* deployment.ReconcileDeployment ).AddHook (& hook )
527
518
528
519
testReconcilePhase (t , tc .rc , tc .c , d .name , false , false , api .DeploymentPhaseRunning )
529
- validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning }, false )
520
+ validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning })
530
521
531
522
tc .rc .(* deployment.ReconcileDeployment ).RemoveHook (& hook )
532
523
533
524
// Next reconcile phase should catch the deployment changes
534
525
testReconcilePhase (t , tc .rc , tc .c , d .name , false , false , api .DeploymentPhaseRunning )
535
- validateDriver (t , tc , updatedDep , []string {api .EventReasonNew , api .EventReasonRunning }, true )
526
+ validateDriver (t , tc , updatedDep , []string {api .EventReasonNew , api .EventReasonRunning })
536
527
})
537
528
538
529
t .Run ("updating" , func (t * testing.T ) {
@@ -552,11 +543,10 @@ func TestDeploymentController(t *testing.T) {
552
543
require .NoError (t , err , "create deployment" )
553
544
554
545
testReconcilePhase (t , tc .rc , tc .c , dep .Name , false , false , api .DeploymentPhaseRunning )
555
- validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning }, false )
546
+ validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning })
556
547
557
548
// Reconcile now should keep phase as running.
558
549
testReconcilePhase (t , tc .rc , tc .c , dep .Name , false , false , api .DeploymentPhaseRunning )
559
- validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning }, false )
560
550
validateEvents (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning })
561
551
562
552
// Retrieve existing object before updating it.
@@ -577,7 +567,7 @@ func TestDeploymentController(t *testing.T) {
577
567
testReconcilePhase (t , tc .rc , tc .c , dep .Name , false , false , api .DeploymentPhaseRunning )
578
568
579
569
// Recheck the container resources are updated
580
- validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning }, true )
570
+ validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning })
581
571
}
582
572
583
573
t .Run ("while running" , func (t * testing.T ) {
@@ -603,7 +593,7 @@ func TestDeploymentController(t *testing.T) {
603
593
err := tc .c .Create (context .TODO (), dep )
604
594
require .NoError (t , err , "failed to create deployment" )
605
595
testReconcilePhase (t , tc .rc , tc .c , d .name , false , false , api .DeploymentPhaseRunning )
606
- validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning }, false )
596
+ validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning })
607
597
608
598
err = tc .c .Get (context .TODO (), client.ObjectKey {Name : d .name }, dep )
609
599
require .NoError (t , err , "get deployment" )
@@ -639,16 +629,25 @@ func TestDeploymentController(t *testing.T) {
639
629
err = tc .c .Create (context .TODO (), cm2 )
640
630
require .NoError (t , err , "create configmap: %s" , cm2 .Name )
641
631
632
+ defer func () {
633
+ err := tc .c .Delete (context .TODO (), cm1 )
634
+ if err != nil && ! errors .IsNotFound (err ) {
635
+ require .NoErrorf (t , err , "delete configmap: %s" , cm1 .Name )
636
+ }
637
+ err = tc .c .Delete (context .TODO (), cm2 )
638
+ if err != nil && ! errors .IsNotFound (err ) {
639
+ require .NoErrorf (t , err , "delete configmap: %s" , cm2 .Name )
640
+ }
641
+ }()
642
+
642
643
// Use a fresh reconciler to mimic operator restart
643
644
tc .rc = newReconcileDeployment (tc .c , tc .cs )
644
645
645
646
// A fresh reconcile should delete the newly created above ConfigMap
646
647
testReconcilePhase (t , tc .rc , tc .c , d .name , false , false , api .DeploymentPhaseRunning )
647
648
err = tc .c .Get (context .TODO (), client.ObjectKey {Name : d .name }, dep )
648
649
require .NoError (t , err , "get deployment" )
649
- // It is debatable whether the operator should update all objects after
650
- // a restart. Currently it does.
651
- validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning }, true )
650
+ validateDriver (t , tc , dep , []string {api .EventReasonNew , api .EventReasonRunning })
652
651
653
652
cm := & corev1.ConfigMap {}
654
653
err = tc .c .Get (context .TODO (), client.ObjectKey {Name : cm1 .Name , Namespace : testNamespace }, cm )
0 commit comments