From f2bae3e367aaeae22588789bde32f1631d0b8303 Mon Sep 17 00:00:00 2001 From: huija <1150555483@qq.com> Date: Fri, 19 Jun 2020 22:55:40 +0800 Subject: [PATCH] add UT for Scan function --- cache/redis/redis.go | 4 ++-- cache/redis/redis_test.go | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/cache/redis/redis.go b/cache/redis/redis.go index e70c745b..a1ea7b49 100644 --- a/cache/redis/redis.go +++ b/cache/redis/redis.go @@ -137,12 +137,12 @@ func (rc *Cache) Decr(key string) error { // ClearAll clean all cache in redis. delete this redis collection. func (rc *Cache) ClearAll() error { - c := rc.p.Get() - defer c.Close() cachedKeys, err := rc.Scan(rc.key + ":*") if err != nil { return err } + c := rc.p.Get() + defer c.Close() for _, str := range cachedKeys { if _, err = c.Do("DEL", str); err != nil { return err diff --git a/cache/redis/redis_test.go b/cache/redis/redis_test.go index 56877f6b..7ac88f87 100644 --- a/cache/redis/redis_test.go +++ b/cache/redis/redis_test.go @@ -15,6 +15,7 @@ package redis import ( + "fmt" "testing" "time" @@ -104,3 +105,40 @@ func TestRedisCache(t *testing.T) { t.Error("clear all err") } } + +func TestCache_Scan(t *testing.T) { + timeoutDuration := 10 * time.Second + // init + bm, err := cache.NewCache("redis", `{"conn": "127.0.0.1:6379"}`) + if err != nil { + t.Error("init err") + } + // insert all + for i := 0; i < 10000; i++ { + if err = bm.Put(fmt.Sprintf("astaxie%d", i), fmt.Sprintf("author%d", i), timeoutDuration); err != nil { + t.Error("set Error", err) + } + } + // scan all for the first time + keys, err := bm.(*Cache).Scan(DefaultKey + ":*") + if err != nil { + t.Error("scan Error", err) + } + if len(keys) != 10000 { + t.Error("scan all err") + } + + // clear all + if err = bm.ClearAll(); err != nil { + t.Error("clear all err") + } + + // scan all for the second time + keys, err = bm.(*Cache).Scan(DefaultKey + ":*") + if err != nil { + t.Error("scan Error", err) + } + if len(keys) != 0 { + t.Error("scan all err") + } +}