@@ -52,10 +52,13 @@ import (
52
52
featuregatetesting "k8s.io/component-base/featuregate/testing"
53
53
logsapi "k8s.io/component-base/logs/api/v1"
54
54
"k8s.io/component-base/metrics/legacyregistry"
55
+ "k8s.io/component-base/metrics/testutil"
55
56
"k8s.io/klog/v2"
57
+ "k8s.io/kubernetes/pkg/features"
56
58
"k8s.io/kubernetes/pkg/scheduler/apis/config"
57
59
"k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
58
60
"k8s.io/kubernetes/pkg/scheduler/apis/config/validation"
61
+ schedframework "k8s.io/kubernetes/pkg/scheduler/framework"
59
62
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/names"
60
63
frameworkruntime "k8s.io/kubernetes/pkg/scheduler/framework/runtime"
61
64
"k8s.io/kubernetes/pkg/scheduler/metrics"
@@ -927,6 +930,13 @@ func RunBenchmarkPerfScheduling(b *testing.B, outOfTreePluginRegistry frameworkr
927
930
}
928
931
}
929
932
933
+ if tc .FeatureGates [features .SchedulerQueueingHints ] {
934
+ // In any case, we should make sure InFlightEvents is empty after running the scenario.
935
+ if err = checkEmptyInFlightEvents (); err != nil {
936
+ tCtx .Errorf ("%s: %s" , w .Name , err )
937
+ }
938
+ }
939
+
930
940
// Reset metrics to prevent metrics generated in current workload gets
931
941
// carried over to the next workload.
932
942
legacyregistry .Reset ()
@@ -1027,6 +1037,23 @@ func compareMetricWithThreshold(items []DataItem, threshold float64, metricSelec
1027
1037
return nil
1028
1038
}
1029
1039
1040
+ func checkEmptyInFlightEvents () error {
1041
+ labels := []string {metrics .PodPoppedInFlightEvent }
1042
+ for _ , event := range schedframework .AllEvents {
1043
+ labels = append (labels , event .Label )
1044
+ }
1045
+ for _ , label := range labels {
1046
+ value , err := testutil .GetGaugeMetricValue (metrics .InFlightEvents .WithLabelValues (label ))
1047
+ if err != nil {
1048
+ return fmt .Errorf ("failed to get InFlightEvents metric for label %s" , label )
1049
+ }
1050
+ if value > 0 {
1051
+ return fmt .Errorf ("InFlightEvents for label %s should be empty, but has %v items" , label , value )
1052
+ }
1053
+ }
1054
+ return nil
1055
+ }
1056
+
1030
1057
func runWorkload (tCtx ktesting.TContext , tc * testCase , w * workload , informerFactory informers.SharedInformerFactory ) []DataItem {
1031
1058
b , benchmarking := tCtx .TB ().(* testing.B )
1032
1059
if benchmarking {
0 commit comments