@@ -26,6 +26,7 @@ import (
26
26
"k8s.io/api/core/v1"
27
27
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
28
28
"k8s.io/apimachinery/pkg/types"
29
+ "k8s.io/apimachinery/pkg/util/clock"
29
30
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
30
31
"k8s.io/kubernetes/pkg/scheduler/util"
31
32
)
@@ -98,7 +99,7 @@ var highPriorityPod, highPriNominatedPod, medPriorityPod, unschedulablePod = v1.
98
99
func addOrUpdateUnschedulablePod (p * PriorityQueue , pod * v1.Pod ) {
99
100
p .lock .Lock ()
100
101
defer p .lock .Unlock ()
101
- p .unschedulableQ .addOrUpdate (newPodInfoNoTimestamp (pod ))
102
+ p .unschedulableQ .addOrUpdate (p . newPodInfo (pod ))
102
103
}
103
104
104
105
func getUnschedulablePod (p * PriorityQueue , pod * v1.Pod ) * v1.Pod {
@@ -973,8 +974,8 @@ func TestHighProirotyFlushUnschedulableQLeftover(t *testing.T) {
973
974
Message : "fake scheduling failure" ,
974
975
})
975
976
976
- q . unschedulableQ . addOrUpdate ( newPodInfoNoTimestamp ( & highPod ) )
977
- q . unschedulableQ . addOrUpdate ( newPodInfoNoTimestamp ( & midPod ) )
977
+ addOrUpdateUnschedulablePod ( q , & highPod )
978
+ addOrUpdateUnschedulablePod ( q , & midPod )
978
979
q .unschedulableQ .podInfoMap [util .GetPodFullName (& highPod )].timestamp = time .Now ().Add (- 1 * unschedulableQTimeInterval )
979
980
q .unschedulableQ .podInfoMap [util .GetPodFullName (& midPod )].timestamp = time .Now ().Add (- 1 * unschedulableQTimeInterval )
980
981
@@ -1010,13 +1011,14 @@ func TestPodTimestamp(t *testing.T) {
1010
1011
},
1011
1012
}
1012
1013
1014
+ var timestamp = time .Now ()
1013
1015
pInfo1 := & podInfo {
1014
1016
pod : pod1 ,
1015
- timestamp : util. RealClock {}. Now () ,
1017
+ timestamp : timestamp ,
1016
1018
}
1017
1019
pInfo2 := & podInfo {
1018
1020
pod : pod2 ,
1019
- timestamp : util. RealClock {}. Now (). Add (1 * time .Second ),
1021
+ timestamp : timestamp . Add (time .Second ),
1020
1022
}
1021
1023
1022
1024
var queue * PriorityQueue
@@ -1061,8 +1063,14 @@ func TestPodTimestamp(t *testing.T) {
1061
1063
queue .MoveAllToActiveQueue ()
1062
1064
}
1063
1065
}
1066
+ backoffPod := func (pInfo * podInfo ) operation {
1067
+ return func () {
1068
+ queue .backoffPod (pInfo .pod )
1069
+ }
1070
+ }
1064
1071
flushBackoffQ := func () operation {
1065
1072
return func () {
1073
+ queue .clock .(* clock.FakeClock ).Step (2 * time .Second )
1066
1074
queue .flushBackoffQCompleted ()
1067
1075
}
1068
1076
}
@@ -1095,15 +1103,15 @@ func TestPodTimestamp(t *testing.T) {
1095
1103
{
1096
1104
name : "add one pod to BackoffQ and move it to activeQ" ,
1097
1105
operations : []operation {
1098
- addPodActiveQ (pInfo2 ), addPodBackoffQ (pInfo1 ), flushBackoffQ (), moveAllToActiveQ (),
1106
+ addPodActiveQ (pInfo2 ), addPodBackoffQ (pInfo1 ), backoffPod ( pInfo1 ), flushBackoffQ (), moveAllToActiveQ (),
1099
1107
},
1100
1108
expected : []* podInfo {pInfo1 , pInfo2 },
1101
1109
},
1102
1110
}
1103
1111
1104
1112
for _ , test := range tests {
1105
1113
t .Run (test .name , func (t * testing.T ) {
1106
- queue = NewPriorityQueue (nil )
1114
+ queue = NewPriorityQueueWithClock (nil , clock . NewFakeClock ( timestamp ) )
1107
1115
var podInfoList []* podInfo
1108
1116
1109
1117
for _ , op := range test .operations {
0 commit comments