Skip to content

Commit 733c924

Browse files
authored
TEST: fix redis flaky tests; take 2 (#109)
1 parent cf9646e commit 733c924

File tree

2 files changed

+7
-21
lines changed

2 files changed

+7
-21
lines changed

middleware/heartbeat/heartbeater.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ type HeartbeaterOptions struct {
2323
func Heartbeater(hopts *HeartbeaterOptions) work.HandleMiddleware {
2424
return func(f work.HandleFunc) work.HandleFunc {
2525
return func(job *work.Job, opt *work.DequeueOptions) error {
26+
copiedJob := *job
2627
refresh := func() error {
2728
now := time.Now()
28-
copiedJob := *job
2929
copiedJob.UpdatedAt = now
3030
copiedJob.EnqueuedAt = now.Add(time.Duration(hopts.InvisibleSec) * time.Second)
3131
return hopts.Queue.Enqueue(&copiedJob, &work.EnqueueOptions{
@@ -57,6 +57,8 @@ func Heartbeater(hopts *HeartbeaterOptions) work.HandleMiddleware {
5757
err := f(job, opt)
5858
cancel()
5959
<-done
60+
job.UpdatedAt = copiedJob.UpdatedAt
61+
job.EnqueuedAt = copiedJob.EnqueuedAt
6062
return err
6163
}
6264
}

middleware/heartbeat/heartbeater_test.go

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func TestHeartbeater(t *testing.T) {
2727
hb := Heartbeater(&HeartbeaterOptions{
2828
Queue: work.NewRedisQueue(client),
2929
InvisibleSec: 30,
30-
IntervalSec: 10,
30+
IntervalSec: 1,
3131
})
3232

3333
h := hb(func(*work.Job, *work.DequeueOptions) error {
@@ -36,8 +36,8 @@ func TestHeartbeater(t *testing.T) {
3636

3737
err := h(job, opt)
3838
require.NoError(t, err)
39-
require.Equal(t, job.CreatedAt, job.UpdatedAt)
40-
require.Equal(t, job.CreatedAt, job.EnqueuedAt)
39+
require.Equal(t, job.EnqueuedAt.Unix(), job.UpdatedAt.Unix()+30)
40+
require.NotEqual(t, job.CreatedAt, job.UpdatedAt)
4141

4242
z, err := client.ZRangeByScoreWithScores(
4343
context.Background(),
@@ -48,21 +48,5 @@ func TestHeartbeater(t *testing.T) {
4848
}).Result()
4949
require.NoError(t, err)
5050
require.Len(t, z, 1)
51-
require.EqualValues(t, job.EnqueuedAt.Unix()+30, z[0].Score)
52-
53-
err = h(job, opt)
54-
require.NoError(t, err)
55-
require.Equal(t, job.CreatedAt, job.UpdatedAt)
56-
require.Equal(t, job.CreatedAt, job.EnqueuedAt)
57-
58-
z, err = client.ZRangeByScoreWithScores(
59-
context.Background(),
60-
"{ns1}:queue:q1",
61-
&redis.ZRangeBy{
62-
Min: "-inf",
63-
Max: "+inf",
64-
}).Result()
65-
require.NoError(t, err)
66-
require.Len(t, z, 1)
67-
require.EqualValues(t, job.EnqueuedAt.Unix()+30, z[0].Score)
51+
require.EqualValues(t, job.EnqueuedAt.Unix(), z[0].Score)
6852
}

0 commit comments

Comments
 (0)