rdb/rdb_test.go

92 lines
1.9 KiB
Go
Raw Normal View History

2022-10-25 18:24:01 +03:00
package rdb_test
import (
2022-11-03 14:47:45 +03:00
"log"
2022-10-25 18:24:01 +03:00
"os"
"testing"
"git.bit5.ru/backend/rdb"
"github.com/stretchr/testify/assert"
2022-11-03 14:47:45 +03:00
"github.com/go-logr/logr"
"github.com/go-logr/stdr"
2022-10-25 18:24:01 +03:00
)
2022-11-03 14:47:45 +03:00
const verbosity = 0
func getPool() *rdb.Pool {
2022-11-03 14:47:45 +03:00
//TODO: use ENV settings as well
pool := rdb.OpenPool(rdb.RdSettings{Host: "localhost", Port: 6379, Db: 10, ClientName: "test", LogLevel: verbosity}, getLogger())
2022-10-25 18:24:01 +03:00
return pool
}
2022-11-03 14:47:45 +03:00
func getLogger() logr.Logger {
//TODO: use ENV settings as well
stdr.SetVerbosity(verbosity)
return stdr.New(log.New(os.Stdout, "", log.Lshortfile))
2022-10-25 18:24:01 +03:00
}
func TestBadConnection(t *testing.T) {
pool := rdb.OpenPool(rdb.RdSettings{Host: "dummy", Port: 80, ClientName: "test"}, getLogger())
2022-10-25 18:24:01 +03:00
conn := pool.Get()
assert.NotNil(t, conn)
_, err := conn.Do("PING")
assert.NotNil(t, err)
}
func TestGetConn(t *testing.T) {
pool := getPool()
defer pool.Close()
2022-10-25 18:24:01 +03:00
conn := pool.Get()
defer conn.Close()
2022-10-25 18:24:01 +03:00
_, err := conn.Do("PING")
assert.Nil(t, err)
}
func TestCloseConn(t *testing.T) {
pool := getPool()
assert.EqualValues(t, 0, pool.RP.IdleCount())
defer pool.Close()
2022-10-25 18:24:01 +03:00
conn := pool.Get()
assert.EqualValues(t, 0, pool.RP.IdleCount())
2022-10-25 18:24:01 +03:00
_, err := conn.Do("PING")
assert.Nil(t, err)
conn.Close()
assert.EqualValues(t, 1, pool.RP.IdleCount())
2022-10-25 18:24:01 +03:00
_, err = conn.Do("PING")
assert.NotNil(t, err)
}
func TestDoubleCloseConnIsOk(t *testing.T) {
pool := getPool()
defer pool.Close()
2022-10-25 18:24:01 +03:00
conn := pool.Get()
assert.EqualValues(t, 0, pool.RP.IdleCount())
2022-10-25 18:24:01 +03:00
_, err := conn.Do("PING")
assert.Nil(t, err)
assert.EqualValues(t, 0, pool.RP.IdleCount())
2022-10-25 18:24:01 +03:00
conn.Close()
assert.EqualValues(t, 1, pool.RP.IdleCount())
2022-10-25 18:24:01 +03:00
conn.Close()
assert.EqualValues(t, 1, pool.RP.IdleCount())
2022-10-25 18:24:01 +03:00
}
func TestDoOnPool(t *testing.T) {
pool := getPool()
defer pool.Close()
assert.EqualValues(t, 0, pool.RP.IdleCount())
_, err := pool.Do("PING")
assert.EqualValues(t, 1, pool.RP.IdleCount())
assert.Nil(t, err)
}