57 lines
1.5 KiB
Go
57 lines
1.5 KiB
Go
package database
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/redis/go-redis/v9"
|
|
)
|
|
|
|
func TestSetDefaultRedisManagerClosesReplacedManager(t *testing.T) {
|
|
old := NewRedisManager()
|
|
old.setClientForTest(redis.NewClient(&redis.Options{Addr: "127.0.0.1:0"}))
|
|
|
|
orig := SwapDefaultRedisManager(old)
|
|
t.Cleanup(func() {
|
|
current := SwapDefaultRedisManager(orig)
|
|
if current != nil && current != orig {
|
|
_ = current.Close()
|
|
}
|
|
})
|
|
|
|
next := NewRedisManager()
|
|
SetDefaultRedisManager(next)
|
|
if GetDefaultRedisManager() != next {
|
|
t.Fatal("SetDefaultRedisManager 应安装新的默认 manager")
|
|
}
|
|
if old.Client() != nil {
|
|
t.Fatal("SetDefaultRedisManager 应关闭并清空被替换的旧 Redis manager")
|
|
}
|
|
}
|
|
|
|
func TestSwapDefaultRedisManagerPreservesReplacedManager(t *testing.T) {
|
|
old := NewRedisManager()
|
|
client := redis.NewClient(&redis.Options{Addr: "127.0.0.1:0"})
|
|
old.setClientForTest(client)
|
|
|
|
orig := SwapDefaultRedisManager(old)
|
|
t.Cleanup(func() {
|
|
current := SwapDefaultRedisManager(orig)
|
|
if current != nil && current != orig {
|
|
_ = current.Close()
|
|
}
|
|
_ = old.Close()
|
|
})
|
|
|
|
next := NewRedisManager()
|
|
previous := SwapDefaultRedisManager(next)
|
|
if previous != old {
|
|
t.Fatal("SwapDefaultRedisManager 应返回被替换的旧 manager")
|
|
}
|
|
if GetDefaultRedisManager() != next {
|
|
t.Fatal("SwapDefaultRedisManager 应安装新的默认 manager")
|
|
}
|
|
if old.Client() != client {
|
|
t.Fatal("SwapDefaultRedisManager 不应关闭旧 Redis manager,旧资源需可用于失败回滚")
|
|
}
|
|
}
|