-
Notifications
You must be signed in to change notification settings - Fork 0
/
redis_test.go
101 lines (82 loc) · 1.98 KB
/
redis_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package main
import (
"bytes"
"strconv"
"strings"
"testing"
"time"
"context"
"github.com/alicebob/miniredis"
)
var (
b = &RedisBackend{}
name = "wkrp"
data = []byte("this is not the station you are looking for")
)
func TestRedis(t *testing.T) {
b.host = "localhost"
b.port = 9
if err := b.Init(); err == nil {
t.Fatalf("there is a ghost redis on tcp port 9")
}
// set up our backend
s, err := miniredis.Run()
if err != nil {
panic(err)
}
defer s.Close()
parts := strings.Split(s.Addr(), ":")
if len(parts) != 2 {
t.Fatalf("unable to get miniredis address")
}
var port int
if port, err = strconv.Atoi(parts[1]); err != nil {
t.Fatalf("unable to get miniredis port")
}
b.host = parts[0]
b.port = port
if b.Init(); err != nil {
t.Fatalf("miniredis can't ping: %v", err)
}
// Now run subtests with our prepared backend
t.Run("Presets", testRedisPresets)
t.Run("Tapes", testRedisTapes)
}
func testRedisPresets(t *testing.T) {
if err := b.WritePreset(name, data); err != nil {
t.Fatalf("miniredis failed")
}
d, err := b.ReadPreset(name)
if err != nil {
t.Fatalf("miniredis failed")
}
if !bytes.Equal(d, data) {
t.Errorf("retrieved data doesn't match. expected %b, got %b\n", data, d)
}
ds, err := b.ReadAllPresets()
if err != nil {
t.Fatalf("miniredis failed")
}
if len(ds) != 1 {
t.Errorf("number of presets incorrect. expected 1, got %d\n", len(ds))
return
}
if !bytes.Equal(ds[0], data) {
t.Errorf("retrieved data doesn't match. expected %b, got %b\n", data, ds[0])
}
}
func testRedisTapes(t *testing.T) {
cue := time.Now()
blank, err := b.BlankTape(context.Background(), name, Incrementer{cue})
if _, err := blank.Write(data); err != nil {
t.Fatalf("miniredis failed")
}
tape, err := b.RecordedTape(context.Background(), name, Incrementer{cue})
d, err := tape.tape.Read()
if err != nil {
t.Fatalf("miniredis failed")
}
if !bytes.Equal(d, data) {
t.Errorf("retrieved data doesn't match. expected %b, got %b\n", data, d)
}
}