2017-11-20 16:21:40 +00:00
|
|
|
package redis
|
2016-12-04 08:08:06 +00:00
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
2019-08-05 22:04:27 +00:00
|
|
|
|
|
|
|
|
"github.com/alicebob/miniredis"
|
|
|
|
|
redis "github.com/go-redis/redis"
|
2016-12-04 08:08:06 +00:00
|
|
|
)
|
|
|
|
|
|
2019-08-05 22:04:27 +00:00
|
|
|
func Test_CheckpointOptions(t *testing.T) {
|
|
|
|
|
s, err := miniredis.Run()
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
defer s.Close()
|
|
|
|
|
|
|
|
|
|
client := redis.NewClient(&redis.Options{
|
|
|
|
|
Addr: s.Addr(),
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
_, err = New("app", WithClient(client))
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("new checkpoint error: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2016-12-04 08:08:06 +00:00
|
|
|
func Test_CheckpointLifecycle(t *testing.T) {
|
2017-11-23 05:28:39 +00:00
|
|
|
// new
|
|
|
|
|
c, err := New("app")
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("new checkpoint error: %v", err)
|
2016-12-04 08:08:06 +00:00
|
|
|
}
|
|
|
|
|
|
2017-11-23 05:28:39 +00:00
|
|
|
// set
|
2019-07-29 04:18:40 +00:00
|
|
|
c.SetCheckpoint("streamName", "shardID", "testSeqNum")
|
2016-12-04 08:08:06 +00:00
|
|
|
|
2017-11-23 05:28:39 +00:00
|
|
|
// get
|
2019-07-29 04:18:40 +00:00
|
|
|
val, err := c.GetCheckpoint("streamName", "shardID")
|
2017-11-21 16:58:16 +00:00
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("get checkpoint error: %v", err)
|
2016-12-04 08:08:06 +00:00
|
|
|
}
|
2017-11-21 16:58:16 +00:00
|
|
|
if val != "testSeqNum" {
|
2016-12-04 08:08:06 +00:00
|
|
|
t.Fatalf("checkpoint exists expected %s, got %s", "testSeqNum", val)
|
|
|
|
|
}
|
2017-11-23 05:28:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Test_SetEmptySeqNum(t *testing.T) {
|
|
|
|
|
c, err := New("app")
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("new checkpoint error: %v", err)
|
|
|
|
|
}
|
2016-12-04 08:08:06 +00:00
|
|
|
|
2019-07-29 04:18:40 +00:00
|
|
|
err = c.SetCheckpoint("streamName", "shardID", "")
|
2017-11-23 05:28:39 +00:00
|
|
|
if err == nil {
|
|
|
|
|
t.Fatalf("should not allow empty sequence number")
|
|
|
|
|
}
|
2016-12-04 08:08:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Test_key(t *testing.T) {
|
2017-11-23 05:28:39 +00:00
|
|
|
c, err := New("app")
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("new checkpoint error: %v", err)
|
2016-12-04 08:08:06 +00:00
|
|
|
}
|
|
|
|
|
|
2017-11-23 05:28:39 +00:00
|
|
|
want := "app:checkpoint:stream:shard"
|
2016-12-04 08:08:06 +00:00
|
|
|
|
2017-11-23 05:28:39 +00:00
|
|
|
if got := c.key("stream", "shard"); got != want {
|
|
|
|
|
t.Fatalf("checkpoint key, want %s, got %s", want, got)
|
2016-12-04 08:08:06 +00:00
|
|
|
}
|
|
|
|
|
}
|