Mock queue backoff duration (#30553)

During testing, the backoff duration shouldn't be longer than other
durations
pull/30577/head
wxiaoguang 7 months ago committed by GitHub
parent dd8e6ae270
commit bcbeb24dba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 10
      modules/queue/backoff.go
  2. 1
      modules/queue/workerqueue_test.go

@ -8,7 +8,7 @@ import (
"time" "time"
) )
const ( var (
backoffBegin = 50 * time.Millisecond backoffBegin = 50 * time.Millisecond
backoffUpper = 2 * time.Second backoffUpper = 2 * time.Second
) )
@ -18,6 +18,14 @@ type (
backoffFuncErr func() (retry bool, err error) backoffFuncErr func() (retry bool, err error)
) )
func mockBackoffDuration(d time.Duration) func() {
oldBegin, oldUpper := backoffBegin, backoffUpper
backoffBegin, backoffUpper = d, d
return func() {
backoffBegin, backoffUpper = oldBegin, oldUpper
}
}
func backoffRetErr[T any](ctx context.Context, begin, upper time.Duration, end <-chan time.Time, fn backoffFuncRetErr[T]) (ret T, err error) { func backoffRetErr[T any](ctx context.Context, begin, upper time.Duration, end <-chan time.Time, fn backoffFuncRetErr[T]) (ret T, err error) {
d := begin d := begin
for { for {

@ -250,6 +250,7 @@ func TestWorkerPoolQueueShutdown(t *testing.T) {
func TestWorkerPoolQueueWorkerIdleReset(t *testing.T) { func TestWorkerPoolQueueWorkerIdleReset(t *testing.T) {
defer test.MockVariableValue(&workerIdleDuration, 10*time.Millisecond)() defer test.MockVariableValue(&workerIdleDuration, 10*time.Millisecond)()
defer mockBackoffDuration(10 * time.Millisecond)()
handler := func(items ...int) (unhandled []int) { handler := func(items ...int) (unhandled []int) {
time.Sleep(50 * time.Millisecond) time.Sleep(50 * time.Millisecond)

Loading…
Cancel
Save