mirror of https://github.com/k3s-io/k3s
fix the flake in scheduling_queue_test
parent
7a4496429d
commit
471679f8d2
|
@ -29,6 +29,7 @@ go_test(
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ import (
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
"k8s.io/apimachinery/pkg/util/clock"
|
||||||
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
|
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
|
||||||
"k8s.io/kubernetes/pkg/scheduler/util"
|
"k8s.io/kubernetes/pkg/scheduler/util"
|
||||||
)
|
)
|
||||||
|
@ -98,7 +99,7 @@ var highPriorityPod, highPriNominatedPod, medPriorityPod, unschedulablePod = v1.
|
||||||
func addOrUpdateUnschedulablePod(p *PriorityQueue, pod *v1.Pod) {
|
func addOrUpdateUnschedulablePod(p *PriorityQueue, pod *v1.Pod) {
|
||||||
p.lock.Lock()
|
p.lock.Lock()
|
||||||
defer p.lock.Unlock()
|
defer p.lock.Unlock()
|
||||||
p.unschedulableQ.addOrUpdate(newPodInfoNoTimestamp(pod))
|
p.unschedulableQ.addOrUpdate(p.newPodInfo(pod))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUnschedulablePod(p *PriorityQueue, pod *v1.Pod) *v1.Pod {
|
func getUnschedulablePod(p *PriorityQueue, pod *v1.Pod) *v1.Pod {
|
||||||
|
@ -983,8 +984,8 @@ func TestHighProirotyFlushUnschedulableQLeftover(t *testing.T) {
|
||||||
Message: "fake scheduling failure",
|
Message: "fake scheduling failure",
|
||||||
})
|
})
|
||||||
|
|
||||||
q.unschedulableQ.addOrUpdate(newPodInfoNoTimestamp(&highPod))
|
addOrUpdateUnschedulablePod(q, &highPod)
|
||||||
q.unschedulableQ.addOrUpdate(newPodInfoNoTimestamp(&midPod))
|
addOrUpdateUnschedulablePod(q, &midPod)
|
||||||
q.unschedulableQ.podInfoMap[util.GetPodFullName(&highPod)].timestamp = time.Now().Add(-1 * unschedulableQTimeInterval)
|
q.unschedulableQ.podInfoMap[util.GetPodFullName(&highPod)].timestamp = time.Now().Add(-1 * unschedulableQTimeInterval)
|
||||||
q.unschedulableQ.podInfoMap[util.GetPodFullName(&midPod)].timestamp = time.Now().Add(-1 * unschedulableQTimeInterval)
|
q.unschedulableQ.podInfoMap[util.GetPodFullName(&midPod)].timestamp = time.Now().Add(-1 * unschedulableQTimeInterval)
|
||||||
|
|
||||||
|
@ -1020,13 +1021,14 @@ func TestPodTimestamp(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var timestamp = time.Now()
|
||||||
pInfo1 := &podInfo{
|
pInfo1 := &podInfo{
|
||||||
pod: pod1,
|
pod: pod1,
|
||||||
timestamp: util.RealClock{}.Now(),
|
timestamp: timestamp,
|
||||||
}
|
}
|
||||||
pInfo2 := &podInfo{
|
pInfo2 := &podInfo{
|
||||||
pod: pod2,
|
pod: pod2,
|
||||||
timestamp: util.RealClock{}.Now().Add(1 * time.Second),
|
timestamp: timestamp.Add(time.Second),
|
||||||
}
|
}
|
||||||
|
|
||||||
var queue *PriorityQueue
|
var queue *PriorityQueue
|
||||||
|
@ -1071,8 +1073,14 @@ func TestPodTimestamp(t *testing.T) {
|
||||||
queue.MoveAllToActiveQueue()
|
queue.MoveAllToActiveQueue()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
backoffPod := func(pInfo *podInfo) operation {
|
||||||
|
return func() {
|
||||||
|
queue.backoffPod(pInfo.pod)
|
||||||
|
}
|
||||||
|
}
|
||||||
flushBackoffQ := func() operation {
|
flushBackoffQ := func() operation {
|
||||||
return func() {
|
return func() {
|
||||||
|
queue.clock.(*clock.FakeClock).Step(2 * time.Second)
|
||||||
queue.flushBackoffQCompleted()
|
queue.flushBackoffQCompleted()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1105,7 +1113,7 @@ func TestPodTimestamp(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "add one pod to BackoffQ and move it to activeQ",
|
name: "add one pod to BackoffQ and move it to activeQ",
|
||||||
operations: []operation{
|
operations: []operation{
|
||||||
addPodActiveQ(pInfo2), addPodBackoffQ(pInfo1), flushBackoffQ(), moveAllToActiveQ(),
|
addPodActiveQ(pInfo2), addPodBackoffQ(pInfo1), backoffPod(pInfo1), flushBackoffQ(), moveAllToActiveQ(),
|
||||||
},
|
},
|
||||||
expected: []*podInfo{pInfo1, pInfo2},
|
expected: []*podInfo{pInfo1, pInfo2},
|
||||||
},
|
},
|
||||||
|
@ -1113,7 +1121,7 @@ func TestPodTimestamp(t *testing.T) {
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
queue = NewPriorityQueue(nil)
|
queue = NewPriorityQueueWithClock(nil, clock.NewFakeClock(timestamp))
|
||||||
var podInfoList []*podInfo
|
var podInfoList []*podInfo
|
||||||
|
|
||||||
for _, op := range test.operations {
|
for _, op := range test.operations {
|
||||||
|
|
Loading…
Reference in New Issue