46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package database
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
"strconv"
|
|
"testing"
|
|
|
|
"github.com/EthanCodeCraft/xlgo-core/config"
|
|
"github.com/alicebob/miniredis/v2"
|
|
)
|
|
|
|
func redisTestConfig(t *testing.T, addr string) *config.Config {
|
|
t.Helper()
|
|
host, portText, err := net.SplitHostPort(addr)
|
|
if err != nil {
|
|
t.Fatalf("split redis addr: %v", err)
|
|
}
|
|
port, err := strconv.Atoi(portText)
|
|
if err != nil {
|
|
t.Fatalf("parse redis port: %v", err)
|
|
}
|
|
return &config.Config{Redis: config.RedisConfig{Host: host, Port: port}}
|
|
}
|
|
|
|
func TestRedisManagerInitClosesPreviousClient(t *testing.T) {
|
|
mr1 := miniredis.RunT(t)
|
|
mr2 := miniredis.RunT(t)
|
|
|
|
m := NewRedisManager()
|
|
if err := m.Init(redisTestConfig(t, mr1.Addr())); err != nil {
|
|
t.Fatalf("first Init: %v", err)
|
|
}
|
|
first := m.Client()
|
|
if first == nil {
|
|
t.Fatal("first client is nil")
|
|
}
|
|
|
|
if err := m.Init(redisTestConfig(t, mr2.Addr())); err != nil {
|
|
t.Fatalf("second Init: %v", err)
|
|
}
|
|
if err := first.Ping(context.Background()).Err(); err == nil {
|
|
t.Fatal("first client still usable after second Init; old Redis pool was not closed")
|
|
}
|
|
}
|