@@ -724,7 +724,7 @@ func TestCoreResourceEnqueue(t *testing.T) {
724
724
enableSchedulingQueueHint : []bool {true },
725
725
},
726
726
{
727
- name : "Pods with PodTopologySpread should be requeued when a Node with a topology label is deleted" ,
727
+ name : "Pods with PodTopologySpread should be requeued when a Node with a topology label is deleted (QHint: enabled) " ,
728
728
initialNodes : []* v1.Node {
729
729
st .MakeNode ().Name ("fake-node1" ).Label ("node" , "fake-node" ).Obj (),
730
730
st .MakeNode ().Name ("fake-node2" ).Label ("zone" , "fake-node" ).Obj (),
@@ -749,6 +749,32 @@ func TestCoreResourceEnqueue(t *testing.T) {
749
749
wantRequeuedPods : sets .New ("pod4" ),
750
750
enableSchedulingQueueHint : []bool {true },
751
751
},
752
+ {
753
+ name : "Pods with PodTopologySpread should be requeued when a Node with a topology label is deleted (QHint: disabled)" ,
754
+ initialNodes : []* v1.Node {
755
+ st .MakeNode ().Name ("fake-node1" ).Label ("node" , "fake-node" ).Obj (),
756
+ st .MakeNode ().Name ("fake-node2" ).Label ("zone" , "fake-node" ).Obj (),
757
+ },
758
+ initialPods : []* v1.Pod {
759
+ st .MakePod ().Name ("pod1" ).Label ("key1" , "val" ).SpreadConstraint (1 , "node" , v1 .DoNotSchedule , st .MakeLabelSelector ().Exists ("key1" ).Obj (), nil , nil , nil , nil ).Container ("image" ).Node ("fake-node1" ).Obj (),
760
+ st .MakePod ().Name ("pod2" ).Label ("key1" , "val" ).SpreadConstraint (1 , "zone" , v1 .DoNotSchedule , st .MakeLabelSelector ().Exists ("key1" ).Obj (), nil , nil , nil , nil ).Container ("image" ).Node ("fake-node2" ).Obj (),
761
+ },
762
+ pods : []* v1.Pod {
763
+ // - Pod3 and Pod4 will be rejected by the PodTopologySpread plugin.
764
+ st .MakePod ().Name ("pod3" ).Label ("key1" , "val" ).SpreadConstraint (1 , "node" , v1 .DoNotSchedule , st .MakeLabelSelector ().Exists ("key1" ).Obj (), ptr .To (int32 (3 )), nil , nil , nil ).Container ("image" ).Obj (),
765
+ st .MakePod ().Name ("pod4" ).Label ("key1" , "val" ).SpreadConstraint (1 , "zone" , v1 .DoNotSchedule , st .MakeLabelSelector ().Exists ("key1" ).Obj (), ptr .To (int32 (3 )), nil , nil , nil ).Container ("image" ).Obj (),
766
+ },
767
+ triggerFn : func (testCtx * testutils.TestContext ) error {
768
+ // Trigger an NodeTaint delete event.
769
+ // It should requeue both pod3 and pod4 only because PodTopologySpread subscribes to Node/delete events.
770
+ if err := testCtx .ClientSet .CoreV1 ().Nodes ().Delete (testCtx .Ctx , "fake-node2" , metav1.DeleteOptions {}); err != nil {
771
+ return fmt .Errorf ("failed to update node: %w" , err )
772
+ }
773
+ return nil
774
+ },
775
+ wantRequeuedPods : sets .New ("pod3" , "pod4" ),
776
+ enableSchedulingQueueHint : []bool {false },
777
+ },
752
778
{
753
779
name : "Pods with PodTopologySpread should be requeued when a NodeTaint of a Node with a topology label has been updated" ,
754
780
initialNodes : []* v1.Node {
0 commit comments