ledisdb/ledis/app_test.go

81 lines
1.3 KiB
Go

package ledis
import (
"github.com/garyburd/redigo/redis"
"os"
"sync"
"testing"
)
var testAppOnce sync.Once
var testApp *App
var testPool *redis.Pool
func newTestRedisPool() {
f := func() (redis.Conn, error) {
c, err := redis.Dial("tcp", "127.0.0.1:16380")
if err != nil {
return nil, err
}
return c, nil
}
testPool = redis.NewPool(f, 4)
}
func getTestConn() redis.Conn {
startTestApp()
return testPool.Get()
}
func getTestDB() *DB {
startTestApp()
return testApp.db
}
func startTestApp() {
f := func() {
newTestRedisPool()
os.RemoveAll("/tmp/testdb")
var d = []byte(`
{
"addr" : "127.0.0.1:16380",
"db" : {
"data_db" : {
"path" : "/tmp/testdb",
"compression":true,
"block_size" : 32768,
"write_buffer_size" : 2097152,
"cache_size" : 20971520
}
}
}
`)
cfg, err := NewConfig(d)
if err != nil {
println(err.Error())
panic(err)
}
testApp, err = NewApp(cfg)
if err != nil {
println(err.Error())
panic(err)
}
go testApp.Run()
}
testAppOnce.Do(f)
}
func TestApp(t *testing.T) {
startTestApp()
}