diff --git a/core/stores/redis/redis_test.go b/core/stores/redis/redis_test.go index c928f8c4..78c530fd 100644 --- a/core/stores/redis/redis_test.go +++ b/core/stores/redis/redis_test.go @@ -53,6 +53,8 @@ func TestRedis_Hvals(t *testing.T) { runOnRedis(t, func(client *Redis) { assert.Nil(t, client.Hset("a", "aa", "aaa")) assert.Nil(t, client.Hset("a", "bb", "bbb")) + _, err := NewRedis(client.Addr, "").Hvals("a") + assert.NotNil(t, err) vals, err := client.Hvals("a") assert.Nil(t, err) assert.ElementsMatch(t, []string{"aaa", "bbb"}, vals) @@ -127,6 +129,7 @@ func TestRedis_Hmget(t *testing.T) { func TestRedis_Hmset(t *testing.T) { runOnRedis(t, func(client *Redis) { + assert.NotNil(t, NewRedis(client.Addr, "").Hmset("a", nil)) assert.Nil(t, client.Hmset("a", map[string]string{ "aa": "aaa", "bb": "bbb", @@ -139,6 +142,8 @@ func TestRedis_Hmset(t *testing.T) { func TestRedis_Incr(t *testing.T) { runOnRedis(t, func(client *Redis) { + _, err := NewRedis(client.Addr, "").Incr("a") + assert.NotNil(t, err) val, err := client.Incr("a") assert.Nil(t, err) assert.Equal(t, int64(1), val) @@ -150,6 +155,8 @@ func TestRedis_Incr(t *testing.T) { func TestRedis_IncrBy(t *testing.T) { runOnRedis(t, func(client *Redis) { + _, err := NewRedis(client.Addr, "").Incrby("a", 2) + assert.NotNil(t, err) val, err := client.Incrby("a", 2) assert.Nil(t, err) assert.Equal(t, int64(2), val) @@ -165,26 +172,47 @@ func TestRedis_Keys(t *testing.T) { assert.Nil(t, err) err = client.Set("key2", "value2") assert.Nil(t, err) + _, err = NewRedis(client.Addr, "").Keys("*") + assert.NotNil(t, err) keys, err := client.Keys("*") assert.Nil(t, err) assert.ElementsMatch(t, []string{"key1", "key2"}, keys) }) } +func TestRedis_HyperLogLog(t *testing.T) { + runOnRedis(t, func(client *Redis) { + client.Ping() + r := NewRedis(client.Addr, "") + _, err := r.Pfadd("key1") + assert.NotNil(t, err) + _, err = r.Pfcount("*") + assert.NotNil(t, err) + }) +} + func TestRedis_List(t *testing.T) { runOnRedis(t, func(client *Redis) { + _, err := NewRedis(client.Addr, "").Lpush("key", "value1", "value2") + assert.NotNil(t, err) val, err := client.Lpush("key", "value1", "value2") assert.Nil(t, err) assert.Equal(t, 2, val) + _, err = NewRedis(client.Addr, "").Rpush("key", "value3", "value4") + assert.NotNil(t, err) val, err = client.Rpush("key", "value3", "value4") assert.Nil(t, err) assert.Equal(t, 4, val) + _, err = NewRedis(client.Addr, "").Llen("key") + assert.NotNil(t, err) val, err = client.Llen("key") assert.Nil(t, err) assert.Equal(t, 4, val) vals, err := client.Lrange("key", 0, 10) assert.Nil(t, err) assert.EqualValues(t, []string{"value2", "value1", "value3", "value4"}, vals) + _, err = NewRedis(client.Addr, "").Lpop("key") + assert.NotNil(t, err) v, err := client.Lpop("key") assert.Nil(t, err) assert.Equal(t, "value2", v) @@ -194,9 +222,13 @@ func TestRedis_List(t *testing.T) { val, err = client.Rpush("key", "value3", "value3") assert.Nil(t, err) assert.Equal(t, 7, val) + _, err = NewRedis(client.Addr, "").Lrem("key", 2, "value1") + assert.NotNil(t, err) n, err := client.Lrem("key", 2, "value1") assert.Nil(t, err) assert.Equal(t, 2, n) + _, err = NewRedis(client.Addr, "").Lrange("key", 0, 10) + assert.NotNil(t, err) vals, err = client.Lrange("key", 0, 10) assert.Nil(t, err) assert.EqualValues(t, []string{"value2", "value3", "value4", "value3", "value3"}, vals) @@ -215,6 +247,8 @@ func TestRedis_Mget(t *testing.T) { assert.Nil(t, err) err = client.Set("key2", "value2") assert.Nil(t, err) + _, err = NewRedis(client.Addr, "").Mget("key1", "key0", "key2", "key3") + assert.NotNil(t, err) vals, err := client.Mget("key1", "key0", "key2", "key3") assert.Nil(t, err) assert.EqualValues(t, []string{"value1", "", "value2", ""}, vals) @@ -223,7 +257,9 @@ func TestRedis_Mget(t *testing.T) { func TestRedis_SetBit(t *testing.T) { runOnRedis(t, func(client *Redis) { - err := client.SetBit("key", 1, 1) + err := NewRedis(client.Addr, "").SetBit("key", 1, 1) + assert.NotNil(t, err) + err = client.SetBit("key", 1, 1) assert.Nil(t, err) }) } @@ -240,6 +276,8 @@ func TestRedis_GetBit(t *testing.T) { func TestRedis_Persist(t *testing.T) { runOnRedis(t, func(client *Redis) { + _, err := NewRedis(client.Addr, "").Persist("key") + assert.NotNil(t, err) ok, err := client.Persist("key") assert.Nil(t, err) assert.False(t, ok) @@ -274,6 +312,8 @@ func TestRedis_Scan(t *testing.T) { assert.Nil(t, err) err = client.Set("key2", "value2") assert.Nil(t, err) + _, _, err = NewRedis(client.Addr, "").Scan(0, "*", 100) + assert.NotNil(t, err) keys, _, err := client.Scan(0, "*", 100) assert.Nil(t, err) assert.ElementsMatch(t, []string{"key1", "key2"}, keys) @@ -294,6 +334,8 @@ func TestRedis_Sscan(t *testing.T) { var cursor uint64 = 0 sum := 0 for { + _, _, err := NewRedis(client.Addr, "").Sscan(key, cursor, "", 100) + assert.NotNil(t, err) keys, next, err := client.Sscan(key, cursor, "", 100) assert.Nil(t, err) sum += len(keys) @@ -311,46 +353,72 @@ func TestRedis_Sscan(t *testing.T) { func TestRedis_Set(t *testing.T) { runOnRedis(t, func(client *Redis) { + _, err := NewRedis(client.Addr, "").Sadd("key", 1, 2, 3, 4) + assert.NotNil(t, err) num, err := client.Sadd("key", 1, 2, 3, 4) assert.Nil(t, err) assert.Equal(t, 4, num) + _, err = NewRedis(client.Addr, "").Scard("key") + assert.NotNil(t, err) val, err := client.Scard("key") assert.Nil(t, err) assert.Equal(t, int64(4), val) + _, err = NewRedis(client.Addr, "").Sismember("key", 2) + assert.NotNil(t, err) ok, err := client.Sismember("key", 2) assert.Nil(t, err) assert.True(t, ok) + _, err = NewRedis(client.Addr, "").Srem("key", 3, 4) + assert.NotNil(t, err) num, err = client.Srem("key", 3, 4) assert.Nil(t, err) assert.Equal(t, 2, num) + _, err = NewRedis(client.Addr, "").Smembers("key") + assert.NotNil(t, err) vals, err := client.Smembers("key") assert.Nil(t, err) assert.ElementsMatch(t, []string{"1", "2"}, vals) + _, err = NewRedis(client.Addr, "").Srandmember("key", 1) + assert.NotNil(t, err) members, err := client.Srandmember("key", 1) assert.Nil(t, err) assert.Len(t, members, 1) assert.Contains(t, []string{"1", "2"}, members[0]) + _, err = NewRedis(client.Addr, "").Spop("key") + assert.NotNil(t, err) member, err := client.Spop("key") assert.Nil(t, err) assert.Contains(t, []string{"1", "2"}, member) + _, err = NewRedis(client.Addr, "").Smembers("key") + assert.NotNil(t, err) vals, err = client.Smembers("key") assert.Nil(t, err) assert.NotContains(t, vals, member) + _, err = NewRedis(client.Addr, "").Sadd("key1", 1, 2, 3, 4) + assert.NotNil(t, err) num, err = client.Sadd("key1", 1, 2, 3, 4) assert.Nil(t, err) assert.Equal(t, 4, num) num, err = client.Sadd("key2", 2, 3, 4, 5) assert.Nil(t, err) assert.Equal(t, 4, num) + _, err = NewRedis(client.Addr, "").Sunion("key1", "key2") + assert.NotNil(t, err) vals, err = client.Sunion("key1", "key2") assert.Nil(t, err) assert.ElementsMatch(t, []string{"1", "2", "3", "4", "5"}, vals) + _, err = NewRedis(client.Addr, "").Sunionstore("key3", "key1", "key2") + assert.NotNil(t, err) num, err = client.Sunionstore("key3", "key1", "key2") assert.Nil(t, err) assert.Equal(t, 5, num) + _, err = NewRedis(client.Addr, "").Sdiff("key1", "key2") + assert.NotNil(t, err) vals, err = client.Sdiff("key1", "key2") assert.Nil(t, err) assert.EqualValues(t, []string{"1"}, vals) + _, err = NewRedis(client.Addr, "").Sdiffstore("key4", "key1", "key2") + assert.NotNil(t, err) num, err = client.Sdiffstore("key4", "key1", "key2") assert.Nil(t, err) assert.Equal(t, 1, num) @@ -359,7 +427,9 @@ func TestRedis_Set(t *testing.T) { func TestRedis_SetGetDel(t *testing.T) { runOnRedis(t, func(client *Redis) { - err := client.Set("hello", "world") + err := NewRedis(client.Addr, "").Set("hello", "world") + assert.NotNil(t, err) + err = client.Set("hello", "world") assert.Nil(t, err) val, err := client.Get("hello") assert.Nil(t, err) @@ -372,8 +442,12 @@ func TestRedis_SetGetDel(t *testing.T) { func TestRedis_SetExNx(t *testing.T) { runOnRedis(t, func(client *Redis) { - err := client.Setex("hello", "world", 5) + err := NewRedis(client.Addr, "").Setex("hello", "world", 5) + assert.NotNil(t, err) + err = client.Setex("hello", "world", 5) assert.Nil(t, err) + _, err = NewRedis(client.Addr, "").Setnx("hello", "newworld") + assert.NotNil(t, err) ok, err := client.Setnx("hello", "newworld") assert.Nil(t, err) assert.False(t, ok) @@ -389,6 +463,8 @@ func TestRedis_SetExNx(t *testing.T) { ttl, err := client.Ttl("hello") assert.Nil(t, err) assert.True(t, ttl > 0) + _, err = NewRedis(client.Addr, "").SetnxEx("newhello", "newworld", 5) + assert.NotNil(t, err) ok, err = client.SetnxEx("newhello", "newworld", 5) assert.Nil(t, err) assert.False(t, ok) @@ -434,12 +510,18 @@ func TestRedis_SortedSet(t *testing.T) { val, err := client.Zscore("key", "value1") assert.Nil(t, err) assert.Equal(t, int64(2), val) + _, err = NewRedis(client.Addr, "").Zincrby("key", 3, "value1") + assert.NotNil(t, err) val, err = client.Zincrby("key", 3, "value1") assert.Nil(t, err) assert.Equal(t, int64(5), val) + _, err = NewRedis(client.Addr, "").Zscore("key", "value1") + assert.NotNil(t, err) val, err = client.Zscore("key", "value1") assert.Nil(t, err) assert.Equal(t, int64(5), val) + val, err = NewRedis(client.Addr, "").Zadds("key") + assert.NotNil(t, err) val, err = client.Zadds("key", Pair{ Key: "value2", Score: 6, @@ -449,7 +531,9 @@ func TestRedis_SortedSet(t *testing.T) { }) assert.Nil(t, err) assert.Equal(t, int64(2), val) - pairs, err := client.ZRevRangeWithScores("key", 1, 3) + pairs, err := NewRedis(client.Addr, "").ZRevRangeWithScores("key", 1, 3) + assert.NotNil(t, err) + pairs, err = client.ZRevRangeWithScores("key", 1, 3) assert.Nil(t, err) assert.EqualValues(t, []Pair{ { @@ -464,8 +548,12 @@ func TestRedis_SortedSet(t *testing.T) { rank, err := client.Zrank("key", "value2") assert.Nil(t, err) assert.Equal(t, int64(1), rank) + _, err = NewRedis(client.Addr, "").Zrank("key", "value4") + assert.NotNil(t, err) _, err = client.Zrank("key", "value4") assert.Equal(t, Nil, err) + _, err = NewRedis(client.Addr, "").Zrem("key", "value2", "value3") + assert.NotNil(t, err) num, err := client.Zrem("key", "value2", "value3") assert.Nil(t, err) assert.Equal(t, 2, num) @@ -478,30 +566,46 @@ func TestRedis_SortedSet(t *testing.T) { ok, err = client.Zadd("key", 8, "value4") assert.Nil(t, err) assert.True(t, ok) + _, err = NewRedis(client.Addr, "").Zremrangebyscore("key", 6, 7) + assert.NotNil(t, err) num, err = client.Zremrangebyscore("key", 6, 7) assert.Nil(t, err) assert.Equal(t, 2, num) ok, err = client.Zadd("key", 6, "value2") assert.Nil(t, err) assert.True(t, ok) + _, err = NewRedis(client.Addr, "").Zadd("key", 7, "value3") + assert.NotNil(t, err) ok, err = client.Zadd("key", 7, "value3") assert.Nil(t, err) assert.True(t, ok) + _, err = NewRedis(client.Addr, "").Zcount("key", 6, 7) + assert.NotNil(t, err) num, err = client.Zcount("key", 6, 7) assert.Nil(t, err) assert.Equal(t, 2, num) + _, err = NewRedis(client.Addr, "").Zremrangebyrank("key", 1, 2) + assert.NotNil(t, err) num, err = client.Zremrangebyrank("key", 1, 2) assert.Nil(t, err) assert.Equal(t, 2, num) + _, err = NewRedis(client.Addr, "").Zcard("key") + assert.NotNil(t, err) card, err := client.Zcard("key") assert.Nil(t, err) assert.Equal(t, 2, card) + _, err = NewRedis(client.Addr, "").Zrange("key", 0, -1) + assert.NotNil(t, err) vals, err := client.Zrange("key", 0, -1) assert.Nil(t, err) assert.EqualValues(t, []string{"value1", "value4"}, vals) + _, err = NewRedis(client.Addr, "").Zrevrange("key", 0, -1) + assert.NotNil(t, err) vals, err = client.Zrevrange("key", 0, -1) assert.Nil(t, err) assert.EqualValues(t, []string{"value4", "value1"}, vals) + _, err = NewRedis(client.Addr, "").ZrangeWithScores("key", 0, -1) + assert.NotNil(t, err) pairs, err = client.ZrangeWithScores("key", 0, -1) assert.Nil(t, err) assert.EqualValues(t, []Pair{ @@ -514,6 +618,8 @@ func TestRedis_SortedSet(t *testing.T) { Score: 8, }, }, pairs) + _, err = NewRedis(client.Addr, "").ZrangebyscoreWithScores("key", 5, 8) + assert.NotNil(t, err) pairs, err = client.ZrangebyscoreWithScores("key", 5, 8) assert.Nil(t, err) assert.EqualValues(t, []Pair{ @@ -526,6 +632,9 @@ func TestRedis_SortedSet(t *testing.T) { Score: 8, }, }, pairs) + _, err = NewRedis(client.Addr, "").ZrangebyscoreWithScoresAndLimit( + "key", 5, 8, 1, 1) + assert.NotNil(t, err) pairs, err = client.ZrangebyscoreWithScoresAndLimit("key", 5, 8, 1, 1) assert.Nil(t, err) assert.EqualValues(t, []Pair{ @@ -534,6 +643,11 @@ func TestRedis_SortedSet(t *testing.T) { Score: 8, }, }, pairs) + pairs, err = client.ZrangebyscoreWithScoresAndLimit("key", 5, 8, 1, 0) + assert.Nil(t, err) + assert.Equal(t, 0, len(pairs)) + _, err = NewRedis(client.Addr, "").ZrevrangebyscoreWithScores("key", 5, 8) + assert.NotNil(t, err) pairs, err = client.ZrevrangebyscoreWithScores("key", 5, 8) assert.Nil(t, err) assert.EqualValues(t, []Pair{ @@ -546,6 +660,9 @@ func TestRedis_SortedSet(t *testing.T) { Score: 5, }, }, pairs) + _, err = NewRedis(client.Addr, "").ZrevrangebyscoreWithScoresAndLimit( + "key", 5, 8, 1, 1) + assert.NotNil(t, err) pairs, err = client.ZrevrangebyscoreWithScoresAndLimit("key", 5, 8, 1, 1) assert.Nil(t, err) assert.EqualValues(t, []Pair{ @@ -554,11 +671,17 @@ func TestRedis_SortedSet(t *testing.T) { Score: 5, }, }, pairs) + pairs, err = client.ZrevrangebyscoreWithScoresAndLimit("key", 5, 8, 1, 0) + assert.Nil(t, err) + assert.Equal(t, 0, len(pairs)) }) } func TestRedis_Pipelined(t *testing.T) { runOnRedis(t, func(client *Redis) { + assert.NotNil(t, NewRedis(client.Addr, "").Pipelined(func(pipeliner Pipeliner) error { + return nil + })) err := client.Pipelined( func(pipe Pipeliner) error { pipe.Incr("pipelined_counter") @@ -568,6 +691,8 @@ func TestRedis_Pipelined(t *testing.T) { }, ) assert.Nil(t, err) + _, err = NewRedis(client.Addr, "").Ttl("pipelined_counter") + assert.NotNil(t, err) ttl, err := client.Ttl("pipelined_counter") assert.Nil(t, err) assert.Equal(t, 3600, ttl) @@ -583,7 +708,10 @@ func TestRedis_Pipelined(t *testing.T) { func TestRedisString(t *testing.T) { runOnRedis(t, func(client *Redis) { client.Ping() + _, err := getRedis(NewRedis(client.Addr, ClusterType)) + assert.Nil(t, err) assert.Equal(t, client.Addr, client.String()) + assert.NotNil(t, NewRedis(client.Addr, "").Ping()) }) }