@@ -165,7 +165,7 @@ func (pl *TestPlugin) PreFilterExtensions() PreFilterExtensions {
165
165
}
166
166
167
167
func (pl * TestPlugin ) Filter (ctx context.Context , state * CycleState , pod * v1.Pod , nodeInfo * schedulernodeinfo.NodeInfo ) * Status {
168
- return NewStatus (Code (pl .inj .FilterStatus ), "injected status" )
168
+ return NewStatus (Code (pl .inj .FilterStatus ), "injected filter status" )
169
169
}
170
170
171
171
func (pl * TestPlugin ) PostFilter (ctx context.Context , state * CycleState , pod * v1.Pod , nodes []* v1.Node , filteredNodesStatuses NodeToStatusMap ) * Status {
@@ -598,9 +598,10 @@ func TestPreFilterPlugins(t *testing.T) {
598
598
599
599
func TestFilterPlugins (t * testing.T ) {
600
600
tests := []struct {
601
- name string
602
- plugins []* TestPlugin
603
- wantCode Code
601
+ name string
602
+ plugins []* TestPlugin
603
+ wantStatus * Status
604
+ runAllFilters bool
604
605
}{
605
606
{
606
607
name : "SuccessFilter" ,
@@ -610,7 +611,7 @@ func TestFilterPlugins(t *testing.T) {
610
611
inj : injectedResult {FilterStatus : int (Success )},
611
612
},
612
613
},
613
- wantCode : Success ,
614
+ wantStatus : nil ,
614
615
},
615
616
{
616
617
name : "ErrorFilter" ,
@@ -620,7 +621,7 @@ func TestFilterPlugins(t *testing.T) {
620
621
inj : injectedResult {FilterStatus : int (Error )},
621
622
},
622
623
},
623
- wantCode : Error ,
624
+ wantStatus : NewStatus ( Error , `running "TestPlugin" filter plugin for pod "": injected filter status` ) ,
624
625
},
625
626
{
626
627
name : "UnschedulableFilter" ,
@@ -630,7 +631,7 @@ func TestFilterPlugins(t *testing.T) {
630
631
inj : injectedResult {FilterStatus : int (Unschedulable )},
631
632
},
632
633
},
633
- wantCode : Unschedulable ,
634
+ wantStatus : NewStatus ( Unschedulable , "injected filter status" ) ,
634
635
},
635
636
{
636
637
name : "UnschedulableAndUnresolvableFilter" ,
@@ -641,7 +642,7 @@ func TestFilterPlugins(t *testing.T) {
641
642
FilterStatus : int (UnschedulableAndUnresolvable )},
642
643
},
643
644
},
644
- wantCode : UnschedulableAndUnresolvable ,
645
+ wantStatus : NewStatus ( UnschedulableAndUnresolvable , "injected filter status" ) ,
645
646
},
646
647
// followings tests cover multiple-plugins scenarios
647
648
{
@@ -657,7 +658,7 @@ func TestFilterPlugins(t *testing.T) {
657
658
inj : injectedResult {FilterStatus : int (Error )},
658
659
},
659
660
},
660
- wantCode : Error ,
661
+ wantStatus : NewStatus ( Error , `running "TestPlugin1" filter plugin for pod "": injected filter status` ) ,
661
662
},
662
663
{
663
664
name : "SuccessAndSuccessFilters" ,
@@ -672,7 +673,7 @@ func TestFilterPlugins(t *testing.T) {
672
673
inj : injectedResult {FilterStatus : int (Success )},
673
674
},
674
675
},
675
- wantCode : Success ,
676
+ wantStatus : nil ,
676
677
},
677
678
{
678
679
name : "ErrorAndSuccessFilters" ,
@@ -686,7 +687,7 @@ func TestFilterPlugins(t *testing.T) {
686
687
inj : injectedResult {FilterStatus : int (Success )},
687
688
},
688
689
},
689
- wantCode : Error ,
690
+ wantStatus : NewStatus ( Error , `running "TestPlugin1" filter plugin for pod "": injected filter status` ) ,
690
691
},
691
692
{
692
693
name : "SuccessAndErrorFilters" ,
@@ -701,7 +702,7 @@ func TestFilterPlugins(t *testing.T) {
701
702
inj : injectedResult {FilterStatus : int (Error )},
702
703
},
703
704
},
704
- wantCode : Error ,
705
+ wantStatus : NewStatus ( Error , `running "TestPlugin2" filter plugin for pod "": injected filter status` ) ,
705
706
},
706
707
{
707
708
name : "SuccessAndUnschedulableFilters" ,
@@ -716,7 +717,50 @@ func TestFilterPlugins(t *testing.T) {
716
717
inj : injectedResult {FilterStatus : int (Unschedulable )},
717
718
},
718
719
},
719
- wantCode : Unschedulable ,
720
+ wantStatus : NewStatus (Unschedulable , "injected filter status" ),
721
+ },
722
+ {
723
+ name : "SuccessFilterWithRunAllFilters" ,
724
+ plugins : []* TestPlugin {
725
+ {
726
+ name : "TestPlugin" ,
727
+ inj : injectedResult {FilterStatus : int (Success )},
728
+ },
729
+ },
730
+ runAllFilters : true ,
731
+ wantStatus : nil ,
732
+ },
733
+ {
734
+ name : "ErrorAndErrorFilters" ,
735
+ plugins : []* TestPlugin {
736
+ {
737
+ name : "TestPlugin1" ,
738
+ inj : injectedResult {FilterStatus : int (Error )},
739
+ },
740
+
741
+ {
742
+ name : "TestPlugin2" ,
743
+ inj : injectedResult {FilterStatus : int (Error )},
744
+ },
745
+ },
746
+ runAllFilters : true ,
747
+ wantStatus : NewStatus (Error , `running "TestPlugin1" filter plugin for pod "": injected filter status` ),
748
+ },
749
+ {
750
+ name : "ErrorAndErrorFilters" ,
751
+ plugins : []* TestPlugin {
752
+ {
753
+ name : "TestPlugin1" ,
754
+ inj : injectedResult {FilterStatus : int (UnschedulableAndUnresolvable )},
755
+ },
756
+
757
+ {
758
+ name : "TestPlugin2" ,
759
+ inj : injectedResult {FilterStatus : int (Unschedulable )},
760
+ },
761
+ },
762
+ runAllFilters : true ,
763
+ wantStatus : NewStatus (UnschedulableAndUnresolvable , "injected filter status" , "injected filter status" ),
720
764
},
721
765
}
722
766
@@ -739,13 +783,13 @@ func TestFilterPlugins(t *testing.T) {
739
783
config.Plugin {Name : pl .name })
740
784
}
741
785
742
- f , err := NewFramework (registry , cfgPls , emptyArgs )
786
+ f , err := NewFramework (registry , cfgPls , emptyArgs , WithRunAllFilters ( tt . runAllFilters ) )
743
787
if err != nil {
744
788
t .Fatalf ("fail to create framework: %s" , err )
745
789
}
746
790
status := f .RunFilterPlugins (context .TODO (), nil , pod , nil )
747
- if status . Code () != tt .wantCode {
748
- t .Errorf ("Wrong status code. got: %v, want:%v" , status . Code () , tt .wantCode )
791
+ if ! reflect . DeepEqual ( status , tt .wantStatus ) {
792
+ t .Errorf ("Wrong status code. got: %v, want:%v" , status , tt .wantStatus )
749
793
}
750
794
})
751
795
}
0 commit comments