Skip to content

Commit 963ebd8

Browse files
authored
Merge pull request kubernetes#126762 from richabanker/mce-bugfix
Initialize scheduler metrics after metrics options are applied
2 parents 3fd2677 + 6944af2 commit 963ebd8

File tree

11 files changed

+73
-27
lines changed

11 files changed

+73
-27
lines changed

pkg/scheduler/backend/cache/cache_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"k8s.io/klog/v2"
3434
"k8s.io/klog/v2/ktesting"
3535
"k8s.io/kubernetes/pkg/scheduler/framework"
36+
"k8s.io/kubernetes/pkg/scheduler/metrics"
3637
st "k8s.io/kubernetes/pkg/scheduler/testing"
3738
schedutil "k8s.io/kubernetes/pkg/scheduler/util"
3839
)
@@ -264,6 +265,7 @@ func assumeAndFinishBinding(logger klog.Logger, cache *cacheImpl, pod *v1.Pod, a
264265
// TestExpirePod tests that assumed pods will be removed if expired.
265266
// The removal will be reflected in node info.
266267
func TestExpirePod(t *testing.T) {
268+
metrics.Register()
267269
nodeName := "node"
268270
testPods := []*v1.Pod{
269271
makeBasePod(t, nodeName, "test-1", "100m", "500", "", []v1.ContainerPort{{HostIP: "127.0.0.1", HostPort: 80, Protocol: "TCP"}}),

pkg/scheduler/backend/queue/active_queue_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929

3030
func TestClose(t *testing.T) {
3131
logger, ctx := ktesting.NewTestContext(t)
32+
metrics.Register()
3233
rr := metrics.NewMetricsAsyncRecorder(10, time.Second, ctx.Done())
3334
aq := newActiveQueue(heap.NewWithRecorder(podInfoKeyFunc, heap.LessFunc[*framework.QueuedPodInfo](newDefaultQueueSort()), metrics.NewActivePodsRecorder()), true, *rr)
3435

pkg/scheduler/backend/queue/scheduling_queue_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ func TestPriorityQueue_Add(t *testing.T) {
120120
logger, ctx := ktesting.NewTestContext(t)
121121
ctx, cancel := context.WithCancel(ctx)
122122
defer cancel()
123+
metrics.Register()
123124
q := NewTestQueueWithObjects(ctx, newDefaultQueueSort(), objs)
124125
q.Add(logger, medPriorityPodInfo.Pod)
125126
q.Add(logger, unschedulablePodInfo.Pod)
@@ -2926,7 +2927,6 @@ func TestPodTimestamp(t *testing.T) {
29262927
// TestPendingPodsMetric tests Prometheus metrics related with pending pods
29272928
func TestPendingPodsMetric(t *testing.T) {
29282929
timestamp := time.Now()
2929-
metrics.Register()
29302930
total := 60
29312931
queueableNum := 50
29322932
queueable, failme := "queueable", "failme"
@@ -2951,6 +2951,7 @@ func TestPendingPodsMetric(t *testing.T) {
29512951
pInfosWithDelay[i].Attempts = 0
29522952
}
29532953
}
2954+
metrics.Register()
29542955

29552956
tests := []struct {
29562957
name string
@@ -3185,11 +3186,11 @@ scheduler_plugin_execution_duration_seconds_count{extension_point="PreEnqueue",p
31853186

31863187
for _, test := range tests {
31873188
t.Run(test.name, func(t *testing.T) {
3188-
resetMetrics()
3189-
resetPodInfos()
31903189
logger, ctx := ktesting.NewTestContext(t)
31913190
ctx, cancel := context.WithCancel(ctx)
31923191
defer cancel()
3192+
resetMetrics()
3193+
resetPodInfos()
31933194

31943195
m := map[string][]framework.PreEnqueuePlugin{"": {&preEnqueuePlugin{allowlists: []string{queueable}}}}
31953196
recorder := metrics.NewMetricsAsyncRecorder(3, 20*time.Microsecond, ctx.Done())
@@ -3326,8 +3327,8 @@ func TestPerPodSchedulingMetrics(t *testing.T) {
33263327
func TestIncomingPodsMetrics(t *testing.T) {
33273328
timestamp := time.Now()
33283329
unschedulablePlg := "unschedulable_plugin"
3329-
metrics.Register()
33303330
var pInfos = make([]*framework.QueuedPodInfo, 0, 3)
3331+
metrics.Register()
33313332
for i := 1; i <= 3; i++ {
33323333
p := &framework.QueuedPodInfo{
33333334
PodInfo: mustNewTestPodInfo(t,
@@ -3399,10 +3400,10 @@ func TestIncomingPodsMetrics(t *testing.T) {
33993400

34003401
for _, test := range tests {
34013402
t.Run(test.name, func(t *testing.T) {
3402-
metrics.SchedulerQueueIncomingPods.Reset()
34033403
logger, ctx := ktesting.NewTestContext(t)
34043404
ctx, cancel := context.WithCancel(ctx)
34053405
defer cancel()
3406+
metrics.SchedulerQueueIncomingPods.Reset()
34063407
queue := NewTestQueue(ctx, newDefaultQueueSort(), WithClock(testingclock.NewFakeClock(timestamp)))
34073408
for _, op := range test.operations {
34083409
for _, pInfo := range pInfos {

pkg/scheduler/eventhandlers_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,15 @@ import (
4848
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodename"
4949
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeports"
5050
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources"
51+
"k8s.io/kubernetes/pkg/scheduler/metrics"
5152
st "k8s.io/kubernetes/pkg/scheduler/testing"
5253
"k8s.io/kubernetes/pkg/scheduler/util/assumecache"
5354
)
5455

5556
func TestUpdatePodInCache(t *testing.T) {
5657
ttl := 10 * time.Second
5758
nodeName := "node"
59+
metrics.Register()
5860

5961
tests := []struct {
6062
name string

pkg/scheduler/framework/plugins/defaultpreemption/default_preemption_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ import (
5959
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/tainttoleration"
6060
"k8s.io/kubernetes/pkg/scheduler/framework/preemption"
6161
frameworkruntime "k8s.io/kubernetes/pkg/scheduler/framework/runtime"
62+
"k8s.io/kubernetes/pkg/scheduler/metrics"
6263
st "k8s.io/kubernetes/pkg/scheduler/testing"
6364
tf "k8s.io/kubernetes/pkg/scheduler/testing/framework"
6465
)
@@ -143,6 +144,7 @@ func (pl *TestPlugin) Filter(ctx context.Context, state *framework.CycleState, p
143144
}
144145

145146
func TestPostFilter(t *testing.T) {
147+
metrics.Register()
146148
onePodRes := map[v1.ResourceName]string{v1.ResourcePods: "1"}
147149
nodeRes := map[v1.ResourceName]string{v1.ResourceCPU: "200m", v1.ResourceMemory: "400"}
148150
tests := []struct {
@@ -426,6 +428,7 @@ type candidate struct {
426428
}
427429

428430
func TestDryRunPreemption(t *testing.T) {
431+
metrics.Register()
429432
tests := []struct {
430433
name string
431434
args *config.DefaultPreemptionArgs

pkg/scheduler/framework/plugins/interpodaffinity/filtering_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
"k8s.io/kubernetes/pkg/scheduler/backend/cache"
3232
"k8s.io/kubernetes/pkg/scheduler/framework"
3333
plugintesting "k8s.io/kubernetes/pkg/scheduler/framework/plugins/testing"
34+
"k8s.io/kubernetes/pkg/scheduler/metrics"
3435
st "k8s.io/kubernetes/pkg/scheduler/testing"
3536
)
3637

@@ -68,6 +69,7 @@ func TestRequiredAffinitySingleNode(t *testing.T) {
6869
}
6970
podLabel2 := map[string]string{"security": "S1"}
7071
node1 := v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1", Labels: labels1}}
72+
metrics.Register()
7173

7274
tests := []struct {
7375
pod *v1.Pod

pkg/scheduler/framework/plugins/podtopologyspread/filtering_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/feature"
3636
plugintesting "k8s.io/kubernetes/pkg/scheduler/framework/plugins/testing"
3737
frameworkruntime "k8s.io/kubernetes/pkg/scheduler/framework/runtime"
38+
"k8s.io/kubernetes/pkg/scheduler/metrics"
3839
st "k8s.io/kubernetes/pkg/scheduler/testing"
3940
"k8s.io/utils/ptr"
4041
)
@@ -68,6 +69,7 @@ func (p *criticalPaths) sort() {
6869
}
6970

7071
func TestPreFilterState(t *testing.T) {
72+
metrics.Register()
7173
tests := []struct {
7274
name string
7375
pod *v1.Pod
@@ -2388,6 +2390,7 @@ func TestPreFilterStateRemovePod(t *testing.T) {
23882390
}
23892391

23902392
func BenchmarkFilter(b *testing.B) {
2393+
metrics.Register()
23912394
tests := []struct {
23922395
name string
23932396
pod *v1.Pod

pkg/scheduler/framework/preemption/preemption_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/defaultbinder"
3737
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/queuesort"
3838
frameworkruntime "k8s.io/kubernetes/pkg/scheduler/framework/runtime"
39+
"k8s.io/kubernetes/pkg/scheduler/metrics"
3940
st "k8s.io/kubernetes/pkg/scheduler/testing"
4041
tf "k8s.io/kubernetes/pkg/scheduler/testing/framework"
4142
)
@@ -113,6 +114,7 @@ func (pl *FakePreemptionScorePostFilterPlugin) OrderedScoreFuncs(ctx context.Con
113114
}
114115

115116
func TestDryRunPreemption(t *testing.T) {
117+
metrics.Register()
116118
tests := []struct {
117119
name string
118120
nodes []*v1.Node

pkg/scheduler/framework/runtime/framework_test.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,7 @@ func newFrameworkWithQueueSortAndBind(ctx context.Context, r Registry, profile c
457457
}
458458

459459
func TestInitFrameworkWithScorePlugins(t *testing.T) {
460+
metrics.Register()
460461
tests := []struct {
461462
name string
462463
plugins *config.Plugins
@@ -2900,7 +2901,7 @@ func withMetricsRecorder(recorder *metrics.MetricAsyncRecorder) Option {
29002901
func TestRecordingMetrics(t *testing.T) {
29012902
state := &framework.CycleState{}
29022903
state.SetRecordPluginMetrics(true)
2903-
2904+
metrics.Register()
29042905
tests := []struct {
29052906
name string
29062907
action func(ctx context.Context, f framework.Framework)
@@ -3027,7 +3028,8 @@ func TestRecordingMetrics(t *testing.T) {
30273028

30283029
for _, tt := range tests {
30293030
t.Run(tt.name, func(t *testing.T) {
3030-
metrics.Register()
3031+
_, ctx := ktesting.NewTestContext(t)
3032+
ctx, cancel := context.WithCancel(ctx)
30313033
metrics.FrameworkExtensionPointDuration.Reset()
30323034
metrics.PluginExecutionDuration.Reset()
30333035

@@ -3050,9 +3052,6 @@ func TestRecordingMetrics(t *testing.T) {
30503052
PostBind: pluginSet,
30513053
}
30523054

3053-
_, ctx := ktesting.NewTestContext(t)
3054-
ctx, cancel := context.WithCancel(ctx)
3055-
30563055
recorder := metrics.NewMetricsAsyncRecorder(100, time.Nanosecond, ctx.Done())
30573056
profile := config.KubeSchedulerProfile{
30583057
PercentageOfNodesToScore: ptr.To[int32](testPercentageOfNodesToScore),
@@ -3086,6 +3085,7 @@ func TestRecordingMetrics(t *testing.T) {
30863085
}
30873086

30883087
func TestRunBindPlugins(t *testing.T) {
3088+
metrics.Register()
30893089
tests := []struct {
30903090
name string
30913091
injects []framework.Code
@@ -3154,7 +3154,6 @@ func TestRunBindPlugins(t *testing.T) {
31543154
}
31553155
for _, tt := range tests {
31563156
t.Run(tt.name, func(t *testing.T) {
3157-
metrics.Register()
31583157
metrics.FrameworkExtensionPointDuration.Reset()
31593158
metrics.PluginExecutionDuration.Reset()
31603159

@@ -3203,6 +3202,7 @@ func TestRunBindPlugins(t *testing.T) {
32033202
}
32043203

32053204
func TestPermitWaitDurationMetric(t *testing.T) {
3205+
metrics.Register()
32063206
tests := []struct {
32073207
name string
32083208
inject injectedResult
@@ -3221,7 +3221,6 @@ func TestPermitWaitDurationMetric(t *testing.T) {
32213221
for _, tt := range tests {
32223222
t.Run(tt.name, func(t *testing.T) {
32233223
_, ctx := ktesting.NewTestContext(t)
3224-
metrics.Register()
32253224
metrics.PermitWaitDuration.Reset()
32263225

32273226
plugin := &TestPlugin{name: testPlugin, inj: tt.inject}

pkg/scheduler/metrics/metric_recorder_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ func TestClear(t *testing.T) {
108108
}
109109

110110
func TestInFlightEventAsync(t *testing.T) {
111+
Register()
111112
r := &MetricAsyncRecorder{
112113
aggregatedInflightEventMetric: map[gaugeVecMetricKey]int{},
113114
aggregatedInflightEventMetricLastFlushTime: time.Now(),

0 commit comments

Comments
 (0)