Browse Source

Mock queue backoff duration (#30553)

During testing, the backoff duration shouldn't be longer than other
durations
tags/v1.22.0-rc1
wxiaoguang 1 week ago
parent
commit
bcbeb24dba
No account linked to committer's email address
2 changed files with 10 additions and 1 deletions
  1. 9
    1
      modules/queue/backoff.go
  2. 1
    0
      modules/queue/workerqueue_test.go

+ 9
- 1
modules/queue/backoff.go View File

@@ -8,7 +8,7 @@ import (
"time"
)

const (
var (
backoffBegin = 50 * time.Millisecond
backoffUpper = 2 * time.Second
)
@@ -18,6 +18,14 @@ type (
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) {
d := begin
for {

+ 1
- 0
modules/queue/workerqueue_test.go View File

@@ -250,6 +250,7 @@ func TestWorkerPoolQueueShutdown(t *testing.T) {

func TestWorkerPoolQueueWorkerIdleReset(t *testing.T) {
defer test.MockVariableValue(&workerIdleDuration, 10*time.Millisecond)()
defer mockBackoffDuration(10 * time.Millisecond)()

handler := func(items ...int) (unhandled []int) {
time.Sleep(50 * time.Millisecond)

Loading…
Cancel
Save