From 8f6d12c09ef416fcb3537b3a797e82d2adf77c0d Mon Sep 17 00:00:00 2001 From: Noah Hilverling Date: Mon, 4 Mar 2019 18:11:12 +0100 Subject: [PATCH] Redis: Add more tests --- redis_test.go | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/redis_test.go b/redis_test.go index 00c5787c..05e76308 100644 --- a/redis_test.go +++ b/redis_test.go @@ -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) +}