@@ -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 {
@@ -983,8 +984,8 @@ func TestHighProirotyFlushUnschedulableQLeftover(t *testing.T) {
983
984
Message : "fake scheduling failure" ,
984
985
})
985
986
986
- q . unschedulableQ . addOrUpdate ( newPodInfoNoTimestamp ( & highPod ) )
987
- q . unschedulableQ . addOrUpdate ( newPodInfoNoTimestamp ( & midPod ) )
987
+ addOrUpdateUnschedulablePod ( q , & highPod )
988
+ addOrUpdateUnschedulablePod ( q , & midPod )
988
989
q .unschedulableQ .podInfoMap [util .GetPodFullName (& highPod )].timestamp = time .Now ().Add (- 1 * unschedulableQTimeInterval )
989
990
q .unschedulableQ .podInfoMap [util .GetPodFullName (& midPod )].timestamp = time .Now ().Add (- 1 * unschedulableQTimeInterval )
990
991
@@ -1020,13 +1021,14 @@ func TestPodTimestamp(t *testing.T) {
1020
1021
},
1021
1022
}
1022
1023
1024
+ var timestamp = time .Now ()
1023
1025
pInfo1 := & podInfo {
1024
1026
pod : pod1 ,
1025
- timestamp : util. RealClock {}. Now () ,
1027
+ timestamp : timestamp ,
1026
1028
}
1027
1029
pInfo2 := & podInfo {
1028
1030
pod : pod2 ,
1029
- timestamp : util. RealClock {}. Now (). Add (1 * time .Second ),
1031
+ timestamp : timestamp . Add (time .Second ),
1030
1032
}
1031
1033
1032
1034
var queue * PriorityQueue
@@ -1071,8 +1073,14 @@ func TestPodTimestamp(t *testing.T) {
1071
1073
queue .MoveAllToActiveQueue ()
1072
1074
}
1073
1075
}
1076
+ backoffPod := func (pInfo * podInfo ) operation {
1077
+ return func () {
1078
+ queue .backoffPod (pInfo .pod )
1079
+ }
1080
+ }
1074
1081
flushBackoffQ := func () operation {
1075
1082
return func () {
1083
+ queue .clock .(* clock.FakeClock ).Step (2 * time .Second )
1076
1084
queue .flushBackoffQCompleted ()
1077
1085
}
1078
1086
}
@@ -1105,15 +1113,15 @@ func TestPodTimestamp(t *testing.T) {
1105
1113
{
1106
1114
name : "add one pod to BackoffQ and move it to activeQ" ,
1107
1115
operations : []operation {
1108
- addPodActiveQ (pInfo2 ), addPodBackoffQ (pInfo1 ), flushBackoffQ (), moveAllToActiveQ (),
1116
+ addPodActiveQ (pInfo2 ), addPodBackoffQ (pInfo1 ), backoffPod ( pInfo1 ), flushBackoffQ (), moveAllToActiveQ (),
1109
1117
},
1110
1118
expected : []* podInfo {pInfo1 , pInfo2 },
1111
1119
},
1112
1120
}
1113
1121
1114
1122
for _ , test := range tests {
1115
1123
t .Run (test .name , func (t * testing.T ) {
1116
- queue = NewPriorityQueue (nil )
1124
+ queue = NewPriorityQueueWithClock (nil , clock . NewFakeClock ( timestamp ) )
1117
1125
var podInfoList []* podInfo
1118
1126
1119
1127
for _ , op := range test .operations {
0 commit comments