mirror of
https://github.com/hibiken/asynq.git
synced 2024-12-25 15:22:18 +08:00
Add test for cancelation pubsub
This commit is contained in:
parent
5775a5818d
commit
37c6c73d9b
@ -53,6 +53,13 @@ var SortProcessInfoOpt = cmp.Transformer("SortProcessInfo", func(in []*base.Proc
|
|||||||
return out
|
return out
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// SortStringSliceOpt is a cmp.Option to sort string slice.
|
||||||
|
var SortStringSliceOpt = cmp.Transformer("SortStringSlice", func(in []string) []string {
|
||||||
|
out := append([]string(nil), in...)
|
||||||
|
sort.Strings(out)
|
||||||
|
return out
|
||||||
|
})
|
||||||
|
|
||||||
// IgnoreIDOpt is an cmp.Option to ignore ID field in task messages when comparing.
|
// IgnoreIDOpt is an cmp.Option to ignore ID field in task messages when comparing.
|
||||||
var IgnoreIDOpt = cmpopts.IgnoreFields(base.TaskMessage{}, "ID")
|
var IgnoreIDOpt = cmpopts.IgnoreFields(base.TaskMessage{}, "ID")
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ package rdb
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -975,3 +976,44 @@ func TestClearProcessState(t *testing.T) {
|
|||||||
t.Errorf("%q contained %v, want %v", base.AllWorkers, gotWorkerKeys, wantWorkerKeys)
|
t.Errorf("%q contained %v, want %v", base.AllWorkers, gotWorkerKeys, wantWorkerKeys)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCancelationPubSub(t *testing.T) {
|
||||||
|
r := setup(t)
|
||||||
|
|
||||||
|
pubsub, err := r.CancelationPubSub()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("(*RDB).CancelationPubSub() returned an error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
cancelCh := pubsub.Channel()
|
||||||
|
|
||||||
|
var (
|
||||||
|
mu sync.Mutex
|
||||||
|
received []string
|
||||||
|
)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
for msg := range cancelCh {
|
||||||
|
mu.Lock()
|
||||||
|
received = append(received, msg.Payload)
|
||||||
|
mu.Unlock()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
publish := []string{"one", "two", "three"}
|
||||||
|
|
||||||
|
for _, msg := range publish {
|
||||||
|
r.PublishCancelation(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
// allow for message to reach subscribers.
|
||||||
|
time.Sleep(time.Second)
|
||||||
|
|
||||||
|
pubsub.Close()
|
||||||
|
|
||||||
|
mu.Lock()
|
||||||
|
if diff := cmp.Diff(publish, received, h.SortStringSliceOpt); diff != "" {
|
||||||
|
t.Errorf("subscriber received %v, want %v; (-want,+got)\n%s", received, publish, diff)
|
||||||
|
}
|
||||||
|
mu.Unlock()
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user