@@ -122,7 +122,7 @@ func TestHandle_createPodOk(t *testing.T) {
122
122
123
123
controller := okDeploymentController (client , nil , nil , true , kapi .PodUnknown )
124
124
125
- if err := controller .Handle (deployment ); err != nil {
125
+ if err := controller .handle (deployment , false ); err != nil {
126
126
t .Fatalf ("unexpected error: %v" , err )
127
127
}
128
128
@@ -211,7 +211,7 @@ func TestHandle_createPodFail(t *testing.T) {
211
211
212
212
controller := okDeploymentController (client , nil , nil , true , kapi .PodUnknown )
213
213
214
- err := controller .Handle (deployment )
214
+ err := controller .handle (deployment , false )
215
215
if err == nil {
216
216
t .Fatalf ("expected an error" )
217
217
}
@@ -278,7 +278,7 @@ func TestHandle_deployerPodAlreadyExists(t *testing.T) {
278
278
279
279
controller := okDeploymentController (client , deployment , nil , true , test .podPhase )
280
280
281
- if err := controller .Handle (deployment ); err != nil {
281
+ if err := controller .handle (deployment , false ); err != nil {
282
282
t .Errorf ("%s: unexpected error: %v" , test .name , err )
283
283
continue
284
284
}
@@ -317,7 +317,7 @@ func TestHandle_unrelatedPodAlreadyExists(t *testing.T) {
317
317
318
318
controller := okDeploymentController (client , deployment , nil , false , kapi .PodRunning )
319
319
320
- if err := controller .Handle (deployment ); err != nil {
320
+ if err := controller .handle (deployment , false ); err != nil {
321
321
t .Fatalf ("unexpected error: %v" , err )
322
322
}
323
323
@@ -358,7 +358,7 @@ func TestHandle_unrelatedPodAlreadyExistsTestScaled(t *testing.T) {
358
358
359
359
controller := okDeploymentController (client , deployment , nil , false , kapi .PodRunning )
360
360
361
- if err := controller .Handle (deployment ); err != nil {
361
+ if err := controller .handle (deployment , false ); err != nil {
362
362
t .Fatalf ("unexpected error: %v" , err )
363
363
}
364
364
@@ -416,7 +416,7 @@ func TestHandle_noop(t *testing.T) {
416
416
417
417
controller := okDeploymentController (client , deployment , nil , true , test .podPhase )
418
418
419
- if err := controller .Handle (deployment ); err != nil {
419
+ if err := controller .handle (deployment , false ); err != nil {
420
420
t .Errorf ("%s: unexpected error: %v" , test .name , err )
421
421
continue
422
422
}
@@ -451,7 +451,7 @@ func TestHandle_failedTest(t *testing.T) {
451
451
452
452
controller := okDeploymentController (client , deployment , nil , true , kapi .PodFailed )
453
453
454
- if err := controller .Handle (deployment ); err != nil {
454
+ if err := controller .handle (deployment , false ); err != nil {
455
455
t .Fatalf ("unexpected error: %v" , err )
456
456
}
457
457
@@ -492,7 +492,7 @@ func TestHandle_cleanupPodOk(t *testing.T) {
492
492
controller := okDeploymentController (client , deployment , hookPods , true , kapi .PodSucceeded )
493
493
hookPods = append (hookPods , deployment .Name )
494
494
495
- if err := controller .Handle (deployment ); err != nil {
495
+ if err := controller .handle (deployment , false ); err != nil {
496
496
t .Fatalf ("unexpected error: %v" , err )
497
497
}
498
498
@@ -537,7 +537,7 @@ func TestHandle_cleanupPodOkTest(t *testing.T) {
537
537
controller := okDeploymentController (client , deployment , hookPods , true , kapi .PodSucceeded )
538
538
hookPods = append (hookPods , deployment .Name )
539
539
540
- if err := controller .Handle (deployment ); err != nil {
540
+ if err := controller .handle (deployment , false ); err != nil {
541
541
t .Fatalf ("unexpected error: %v" , err )
542
542
}
543
543
@@ -581,7 +581,7 @@ func TestHandle_cleanupPodNoop(t *testing.T) {
581
581
pod .Labels [deployapi .DeployerPodForDeploymentLabel ] = "unrelated"
582
582
controller .podStore .Indexer .Update (pod )
583
583
584
- if err := controller .Handle (deployment ); err != nil {
584
+ if err := controller .handle (deployment , false ); err != nil {
585
585
t .Fatalf ("unexpected error: %v" , err )
586
586
}
587
587
}
@@ -609,7 +609,7 @@ func TestHandle_cleanupPodFail(t *testing.T) {
609
609
610
610
controller := okDeploymentController (client , deployment , nil , true , kapi .PodSucceeded )
611
611
612
- err := controller .Handle (deployment )
612
+ err := controller .handle (deployment , false )
613
613
if err == nil {
614
614
t .Fatal ("expected an actionable error" )
615
615
}
@@ -640,7 +640,7 @@ func TestHandle_cancelNew(t *testing.T) {
640
640
641
641
controller := okDeploymentController (client , deployment , nil , true , kapi .PodRunning )
642
642
643
- if err := controller .Handle (deployment ); err != nil {
643
+ if err := controller .handle (deployment , false ); err != nil {
644
644
t .Fatalf ("unexpected error: %v" , err )
645
645
}
646
646
@@ -676,7 +676,7 @@ func TestHandle_cleanupNewWithDeployers(t *testing.T) {
676
676
677
677
controller := okDeploymentController (client , deployment , nil , true , kapi .PodRunning )
678
678
679
- if err := controller .Handle (deployment ); err != nil {
679
+ if err := controller .handle (deployment , false ); err != nil {
680
680
t .Fatalf ("unexpected error: %v" , err )
681
681
}
682
682
@@ -755,7 +755,7 @@ func TestHandle_cleanupPostNew(t *testing.T) {
755
755
756
756
controller := okDeploymentController (client , deployment , hookPods , true , test .podPhase )
757
757
758
- if err := controller .Handle (deployment ); err != nil {
758
+ if err := controller .handle (deployment , false ); err != nil {
759
759
t .Errorf ("%s: unexpected error: %v" , test .name , err )
760
760
continue
761
761
}
@@ -767,15 +767,27 @@ func TestHandle_cleanupPostNew(t *testing.T) {
767
767
}
768
768
769
769
// TestHandle_deployerPodDisappeared ensures that a pending/running deployment
770
- // is failed when its deployer pod vanishes.
770
+ // is failed when its deployer pod vanishes. Ensure that pending deployments
771
+ // wont fail instantly on a missing deployer pod because it may take some time
772
+ // for it to appear in the pod cache.
771
773
func TestHandle_deployerPodDisappeared (t * testing.T ) {
772
774
tests := []struct {
773
- name string
774
- phase deployapi.DeploymentStatus
775
+ name string
776
+ phase deployapi.DeploymentStatus
777
+ willBeDropped bool
778
+ shouldRetry bool
775
779
}{
776
780
{
777
- name : "pending" ,
778
- phase : deployapi .DeploymentStatusPending ,
781
+ name : "pending - retry" ,
782
+ phase : deployapi .DeploymentStatusPending ,
783
+ willBeDropped : false ,
784
+ shouldRetry : true ,
785
+ },
786
+ {
787
+ name : "pending - fail" ,
788
+ phase : deployapi .DeploymentStatusPending ,
789
+ willBeDropped : true ,
790
+ shouldRetry : false ,
779
791
},
780
792
{
781
793
name : "running" ,
@@ -801,21 +813,39 @@ func TestHandle_deployerPodDisappeared(t *testing.T) {
801
813
continue
802
814
}
803
815
deployment .Annotations [deployapi .DeploymentStatusAnnotation ] = string (test .phase )
816
+ updatedDeployment = deployment
804
817
805
818
controller := okDeploymentController (client , nil , nil , true , kapi .PodUnknown )
806
819
807
- if err := controller .Handle (deployment ); err != nil {
820
+ err = controller .handle (deployment , test .willBeDropped )
821
+ if ! test .shouldRetry && err != nil {
808
822
t .Errorf ("%s: unexpected error: %v" , test .name , err )
809
823
continue
810
824
}
825
+ if test .shouldRetry && err == nil {
826
+ t .Errorf ("%s: expected an error so that the deployment can be retried, got none" , test .name )
827
+ continue
828
+ }
811
829
812
- if ! updateCalled {
830
+ if ! test . shouldRetry && ! updateCalled {
813
831
t .Errorf ("%s: expected update" , test .name )
814
832
continue
815
833
}
816
834
817
- if e , a := deployapi .DeploymentStatusFailed , deployutil .DeploymentStatusFor (updatedDeployment ); e != a {
818
- t .Errorf ("%s: expected deployment status %q, got %q" , test .name , e , a )
835
+ if test .shouldRetry && updateCalled {
836
+ t .Errorf ("%s: unexpected update" , test .name )
837
+ continue
838
+ }
839
+
840
+ gotStatus := deployutil .DeploymentStatusFor (updatedDeployment )
841
+ if ! test .shouldRetry && deployapi .DeploymentStatusFailed != gotStatus {
842
+ t .Errorf ("%s: expected deployment status %q, got %q" , test .name , deployapi .DeploymentStatusFailed , gotStatus )
843
+ continue
844
+ }
845
+
846
+ if test .shouldRetry && deployapi .DeploymentStatusPending != gotStatus {
847
+ t .Errorf ("%s: expected deployment status %q, got %q" , test .name , deployapi .DeploymentStatusPending , gotStatus )
848
+ continue
819
849
}
820
850
}
821
851
}
@@ -921,7 +951,7 @@ func TestHandle_transitionFromDeployer(t *testing.T) {
921
951
922
952
controller := okDeploymentController (client , deployment , nil , true , test .podPhase )
923
953
924
- if err := controller .Handle (deployment ); err != nil {
954
+ if err := controller .handle (deployment , false ); err != nil {
925
955
t .Errorf ("%s: unexpected error: %v" , test .name , err )
926
956
continue
927
957
}
0 commit comments