...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package redistest
17
18 import (
19 "errors"
20 "time"
21
22 "github.com/gomodule/redigo/redis"
23 )
24
25 type testConn struct {
26 redis.Conn
27 }
28
29 func (t testConn) Close() error {
30 _, err := t.Conn.Do("SELECT", "9")
31 if err != nil {
32 return nil
33 }
34 _, err = t.Conn.Do("FLUSHDB")
35 if err != nil {
36 return err
37 }
38 return t.Conn.Close()
39 }
40
41
42
43
44 func Dial() (redis.Conn, error) {
45 c, err := redis.DialTimeout("tcp", ":6379", 0, 1*time.Second, 1*time.Second)
46 if err != nil {
47 return nil, err
48 }
49
50 _, err = c.Do("SELECT", "9")
51 if err != nil {
52 c.Close()
53 return nil, err
54 }
55
56 n, err := redis.Int(c.Do("DBSIZE"))
57 if err != nil {
58 c.Close()
59 return nil, err
60 }
61
62 if n != 0 {
63 c.Close()
64 return nil, errors.New("database #9 is not empty, test can not continue")
65 }
66
67 return testConn{c}, nil
68 }
69
View as plain text