// // cache_test.go // Copyright (C) 2023 tiglog // // Distributed under terms of the MIT license. // package gcache_test import ( "context" "fmt" "os" "testing" "time" "git.hexq.cn/tiglog/golib/gcache" "git.hexq.cn/tiglog/golib/gtest" "github.com/go-redis/redis/v8" ) func getRedis() *redis.Client { opt, _ := redis.ParseURL(os.Getenv("REDIS_URL")) return redis.NewClient(opt) } func TestRedis(t *testing.T) { rds := getRedis() cmd := rds.Ping(context.Background()) ret, err := cmd.Result() gtest.Nil(t, err) fmt.Println(ret) } func TestCacheNew(t *testing.T) { rds := getRedis() cm1 := gcache.NewWithRedis(rds) cm2 := gcache.NewWithRedis(rds) gtest.Equal(t, cm1, cm2) } func TestRedisAdapter(t *testing.T) { rds := getRedis() cm := gcache.NewWithRedis(rds) key := "foo" cm.Del(key) r1 := cm.Has(key) gtest.False(t, r1) var err error val1 := "bar" err = cm.Set(key, val1, time.Second) gtest.Nil(t, err) var r2 string err = cm.Get(key, &r2) gtest.Nil(t, err) gtest.Equal(t, val1, r2) val2 := 2 err = cm.Set(key, val2, time.Hour) gtest.Nil(t, err) var r3 int err = cm.Get(key, &r3) gtest.Nil(t, err) gtest.Equal(t, val2, r3) n, err := cm.Del(key) gtest.Nil(t, err) gtest.Equal(t, int64(1), n) }