golib/gcache/cache_test.go

71 lines
1.2 KiB
Go

//
// cache_test.go
// Copyright (C) 2023 tiglog <me@tiglog.com>
//
// 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)
}