@@ -639,44 +639,65 @@ func TestEvictReplicatedByStatefulSet(t *testing.T) {
639639}
640640
641641func TestEvictReplicatedByDaemonSet (t * testing.T ) {
642- livePods := int32 ( 5 )
643-
644- ds := appsv1. DaemonSet {
645- ObjectMeta : metav1. ObjectMeta {
646- Name : "ds" ,
647- Namespace : "default" ,
648- } ,
649- TypeMeta : metav1. TypeMeta {
650- Kind : "DaemonSet" ,
642+ testCases := [] struct {
643+ name string
644+ desiredNumberScheduled int32
645+ numberReady int32
646+ }{
647+ {
648+ name : "Evict two pods (half of 5)." ,
649+ desiredNumberScheduled : 5 ,
650+ numberReady : 5 ,
651651 },
652- Status : appsv1.DaemonSetStatus {
653- NumberReady : livePods ,
652+ {
653+ name : "Evict two pods (half of 5) even if no pods are ready." ,
654+ desiredNumberScheduled : 5 ,
655+ numberReady : 0 ,
654656 },
655657 }
656658
657- pods := make ([]* corev1.Pod , livePods )
658- for i := range pods {
659- pods [i ] = test .Pod ().WithName (getTestPodName (i )).WithCreator (& ds .ObjectMeta , & ds .TypeMeta ).Get ()
660- }
659+ for _ , tc := range testCases {
660+ t .Run (tc .name , func (t * testing.T ) {
661+ ds := appsv1.DaemonSet {
662+ ObjectMeta : metav1.ObjectMeta {
663+ Name : "ds" ,
664+ Namespace : "default" ,
665+ },
666+ TypeMeta : metav1.TypeMeta {
667+ Kind : "DaemonSet" ,
668+ },
669+ Status : appsv1.DaemonSetStatus {
670+ DesiredNumberScheduled : tc .desiredNumberScheduled ,
671+ NumberReady : tc .numberReady ,
672+ },
673+ }
661674
662- basicVpa := getBasicVpa ()
663- factory , err := getRestrictionFactory (nil , nil , nil , & ds , 2 , 0.5 , nil , nil , nil , false )
664- assert .NoError (t , err )
665- creatorToSingleGroupStatsMap , podToReplicaCreatorMap , err := factory .GetCreatorMaps (pods , basicVpa )
666- assert .NoError (t , err )
667- eviction := factory .NewPodsEvictionRestriction (creatorToSingleGroupStatsMap , podToReplicaCreatorMap )
675+ pods := make ([]* corev1.Pod , tc .desiredNumberScheduled )
676+ for i := range pods {
677+ pods [i ] = test .Pod ().WithName (getTestPodName (i )).WithCreator (& ds .ObjectMeta , & ds .TypeMeta ).Get ()
678+ }
668679
669- for _ , pod := range pods {
670- assert .True (t , eviction .CanEvict (pod ))
671- }
680+ basicVpa := getBasicVpa ()
681+ factory , err := getRestrictionFactory (nil , nil , nil , & ds , 2 , 0.5 , nil , nil , nil , false )
682+ assert .NoError (t , err )
683+ creatorToSingleGroupStatsMap , podToReplicaCreatorMap , err := factory .GetCreatorMaps (pods , basicVpa )
684+ assert .NoError (t , err )
685+ assert .Len (t , creatorToSingleGroupStatsMap , 1 , "DaemonSet should not be skipped" )
686+ eviction := factory .NewPodsEvictionRestriction (creatorToSingleGroupStatsMap , podToReplicaCreatorMap )
672687
673- for _ , pod := range pods [:2 ] {
674- err := eviction .Evict (pod , basicVpa , test .FakeEventRecorder ())
675- assert .Nil (t , err , "Should evict with no error" )
676- }
677- for _ , pod := range pods [2 :] {
678- err := eviction .Evict (pod , basicVpa , test .FakeEventRecorder ())
679- assert .Error (t , err , "Error expected" )
688+ for _ , pod := range pods {
689+ assert .True (t , eviction .CanEvict (pod ))
690+ }
691+
692+ for _ , pod := range pods [:2 ] {
693+ err := eviction .Evict (pod , basicVpa , test .FakeEventRecorder ())
694+ assert .Nil (t , err , "Should evict with no error" )
695+ }
696+ for _ , pod := range pods [2 :] {
697+ err := eviction .Evict (pod , basicVpa , test .FakeEventRecorder ())
698+ assert .Error (t , err , "Error expected" )
699+ }
700+ })
680701 }
681702}
682703
0 commit comments