Redis: Add more tests

This commit is contained in:
Noah Hilverling 2019-03-04 18:11:12 +01:00
parent 4f09b5b5e8
commit 8f6d12c09e

View file

@ -83,3 +83,113 @@ func TestRDBWrapper_CheckConnection(t *testing.T) {
assert.False(t, rdbw.CheckConnection(true), "DBWrapper should not be connected")
assert.Equal(t, uint32(11), atomic.LoadUint32(rdbw.ConnectionLostCounterAtomic))
}
func TestRDBWrapper_HGetAll(t *testing.T) {
rdb := redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
DialTimeout: time.Minute / 2,
ReadTimeout: time.Minute,
WriteTimeout: time.Minute,
})
rdbw := NewTestRDBW(rdb)
if !rdbw.CheckConnection(true) {
t.Fatal("This test needs a working Redis connection")
}
rdb.Del("herpdaderp")
rdb.HSet("herpdaderp", "one", 5)
rdb.HSet("herpdaderp", "two", 11)
rdbw.CompareAndSetConnected(false)
var data map[string]string
var err error
done := make(chan bool)
go func() {
data, err = rdbw.HGetAll("herpdaderp")
done <- true
}()
time.Sleep(500 * time.Millisecond)
rdbw.CheckConnection(true)
<- done
assert.NoError(t, err)
assert.Contains(t, data, "one")
assert.Contains(t, data, "two")
}
func TestRDBWrapper_XRead(t *testing.T) {
rdb := redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
DialTimeout: time.Minute / 2,
ReadTimeout: time.Minute,
WriteTimeout: time.Minute,
})
rdbw := NewTestRDBW(rdb)
if !rdbw.CheckConnection(true) {
t.Fatal("This test needs a working Redis connection")
}
rdb.XTrim("teststream", 0)
rdb.XAdd(&redis.XAddArgs{Stream: "teststream", Values: map[string]interface{}{"one": "5", "two": "11", "herp": "11"}})
rdbw.CompareAndSetConnected(false)
var data *redis.XStreamSliceCmd
done := make(chan bool)
go func() {
data = rdbw.XRead(&redis.XReadArgs{Streams: []string{"teststream", "0"}})
done <- true
}()
time.Sleep(500 * time.Millisecond)
rdbw.CheckConnection(true)
<- done
streams, err := data.Result()
assert.NoError(t, err)
value := streams[0].Messages[0].Values
assert.Contains(t, value, "one")
assert.Contains(t, value, "two")
}
func TestRDBWrapper_XDel(t *testing.T) {
rdb := redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
DialTimeout: time.Minute / 2,
ReadTimeout: time.Minute,
WriteTimeout: time.Minute,
})
rdbw := NewTestRDBW(rdb)
if !rdbw.CheckConnection(true) {
t.Fatal("This test needs a working Redis connection")
}
rdb.XTrim("teststream", 0)
adds := rdb.XAdd(&redis.XAddArgs{Stream: "teststream", Values: map[string]interface{}{"one": "5", "two": "11", "herp": "11"}})
rdbw.CompareAndSetConnected(false)
done := make(chan bool)
go func() {
rdbw.XDel("teststream", adds.Val())
done <- true
}()
time.Sleep(500 * time.Millisecond)
rdbw.CheckConnection(true)
<- done
data := rdbw.XRead(&redis.XReadArgs{Streams: []string{"teststream", "0"}, Block: -1})
streams, err := data.Result()
assert.Error(t, err)
assert.Len(t, streams, 0)
}