diff --git a/core/stores/redis/redis_test.go b/core/stores/redis/redis_test.go index cfe7755f..9a8ab2e7 100644 --- a/core/stores/redis/redis_test.go +++ b/core/stores/redis/redis_test.go @@ -7,6 +7,7 @@ import ( "time" "github.com/alicebob/miniredis" + red "github.com/go-redis/redis" "github.com/stretchr/testify/assert" ) @@ -205,6 +206,8 @@ func TestRedis_HyperLogLog(t *testing.T) { assert.NotNil(t, err) _, err = r.Pfcount("*") assert.NotNil(t, err) + err = r.Pfmerge("*") + assert.NotNil(t, err) }) } @@ -748,6 +751,66 @@ func TestRedisString(t *testing.T) { }) } +func TestRedisScriptLoad(t *testing.T) { + runOnRedis(t, func(client *Redis) { + client.Ping() + _, err := NewRedis(client.Addr, "").scriptLoad("foo") + assert.NotNil(t, err) + _, err = client.scriptLoad("foo") + assert.NotNil(t, err) + }) +} + +func TestRedisToPairs(t *testing.T) { + pairs := toPairs([]red.Z{ + { + Member: 1, + Score: 1, + }, + { + Member: 2, + Score: 2, + }, + }) + assert.EqualValues(t, []Pair{ + { + Key: "1", + Score: 1, + }, + { + Key: "2", + Score: 2, + }, + }, pairs) +} + +func TestRedisToStrings(t *testing.T) { + vals := toStrings([]interface{}{1, 2}) + assert.EqualValues(t, []string{"1", "2"}, vals) +} + +func TestRedisBlpop(t *testing.T) { + runOnRedis(t, func(client *Redis) { + client.Ping() + var node mockedNode + _, err := client.Blpop(nil, "foo") + assert.NotNil(t, err) + _, err = client.Blpop(node, "foo") + assert.NotNil(t, err) + }) +} + +func TestRedisBlpopEx(t *testing.T) { + runOnRedis(t, func(client *Redis) { + client.Ping() + var node mockedNode + _, _, err := client.BlpopEx(nil, "foo") + assert.NotNil(t, err) + _, _, err = client.BlpopEx(node, "foo") + assert.NotNil(t, err) + }) +} + func runOnRedis(t *testing.T, fn func(client *Redis)) { s, err := miniredis.Run() assert.Nil(t, err) @@ -766,3 +829,11 @@ func runOnRedis(t *testing.T, fn func(client *Redis)) { fn(NewRedis(s.Addr(), NodeType)) } + +type mockedNode struct { + RedisNode +} + +func (n mockedNode) BLPop(timeout time.Duration, keys ...string) *red.StringSliceCmd { + return red.NewStringSliceCmd("foo", "bar") +}