This is an automated email from the ASF dual-hosted git repository.
tison pushed a commit to branch unstable
in repository https://gitbox.apache.org/repos/asf/incubator-kvrocks.git
The following commit(s) were added to refs/heads/unstable by this push:
new 4b25ddb3 Harden list_test.go (#1141)
4b25ddb3 is described below
commit 4b25ddb30b70f2a2d6266a69fcd0f5b12108850d
Author: tison <[email protected]>
AuthorDate: Fri Nov 25 22:13:47 2022 +0800
Harden list_test.go (#1141)
TCPClient can have malformed inflight bytes. Always use a new instance for
each subtest.
Signed-off-by: tison <[email protected]>
---
tests/gocase/unit/type/list/list_test.go | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/tests/gocase/unit/type/list/list_test.go
b/tests/gocase/unit/type/list/list_test.go
index 1473daee..72833f03 100644
--- a/tests/gocase/unit/type/list/list_test.go
+++ b/tests/gocase/unit/type/list/list_test.go
@@ -244,8 +244,6 @@ func TestList(t *testing.T) {
ctx := context.Background()
rdb := srv.NewClient()
defer func() { require.NoError(t, rdb.Close()) }()
- rd := srv.NewTCPClient()
- defer func() { require.NoError(t, rd.Close()) }()
t.Run("LPUSH, RPUSH, LLENGTH, LINDEX, LPOP - ziplist", func(t
*testing.T) {
// first lpush then rpush
@@ -325,6 +323,8 @@ func TestList(t *testing.T) {
for listType, large := range largeValue {
t.Run(fmt.Sprintf("BLPOP, BRPOP: single existing list - %s",
listType), func(t *testing.T) {
+ rd := srv.NewTCPClient()
+ defer func() { require.NoError(t, rd.Close()) }()
createList("blist", []string{"a", "b", large, "c", "d"})
require.NoError(t, rd.WriteArgs("blpop", "blist", "1"))
rd.MustReadStrings(t, []string{"blist", "a"})
@@ -337,6 +337,8 @@ func TestList(t *testing.T) {
})
t.Run(fmt.Sprintf("BLPOP, BRPOP: multiple existing lists - %s",
listType), func(t *testing.T) {
+ rd := srv.NewTCPClient()
+ defer func() { require.NoError(t, rd.Close()) }()
createList("blist1", []string{"a", large, "c"})
createList("blist2", []string{"d", large, "f"})
require.NoError(t, rd.WriteArgs("blpop", "blist1",
"blist2", "1"))
@@ -354,6 +356,8 @@ func TestList(t *testing.T) {
})
t.Run(fmt.Sprintf("BLPOP, BRPOP: second list has an entry -
%s", listType), func(t *testing.T) {
+ rd := srv.NewTCPClient()
+ defer func() { require.NoError(t, rd.Close()) }()
require.NoError(t, rdb.Del(ctx, "blist1").Err())
createList("blist2", []string{"d", large, "f"})
require.NoError(t, rd.WriteArgs("blpop", "blist1",
"blist2", "1"))
@@ -366,6 +370,8 @@ func TestList(t *testing.T) {
}
t.Run("BLPOP with same key multiple times should work (redis issue
#801)", func(t *testing.T) {
+ rd := srv.NewTCPClient()
+ defer func() { require.NoError(t, rd.Close()) }()
require.NoError(t, rdb.Del(ctx, "list1", "list2").Err())
require.NoError(t, rd.WriteArgs("blpop", "list1", "list2",
"list2", "list1", "0"))
require.NoError(t, rdb.LPush(ctx, "list1", "a").Err())
@@ -382,6 +388,8 @@ func TestList(t *testing.T) {
})
t.Run("BLPOP with variadic LPUSH", func(t *testing.T) {
+ rd := srv.NewTCPClient()
+ defer func() { require.NoError(t, rd.Close()) }()
require.NoError(t, rdb.Del(ctx, "blist", "target").Err())
time.Sleep(time.Millisecond * 100)
require.NoError(t, rd.WriteArgs("blpop", "blist", "0"))
@@ -394,6 +402,8 @@ func TestList(t *testing.T) {
for _, popType := range []string{"blpop", "brpop"} {
t.Run(fmt.Sprintf("%s: with single empty list argument",
popType), func(t *testing.T) {
+ rd := srv.NewTCPClient()
+ defer func() { require.NoError(t, rd.Close()) }()
require.NoError(t, rdb.Del(ctx, "blist1").Err())
require.NoError(t, rd.WriteArgs(popType, "blist1", "1"))
require.NoError(t, rdb.RPush(ctx, "blist1",
"foo").Err())
@@ -402,6 +412,8 @@ func TestList(t *testing.T) {
})
t.Run(fmt.Sprintf("%s: with negative timeout", popType), func(t
*testing.T) {
+ rd := srv.NewTCPClient()
+ defer func() { require.NoError(t, rd.Close()) }()
require.NoError(t, rd.WriteArgs(popType, "blist1",
"-1"))
rd.MustMatch(t, ".*negative.*")
})
@@ -409,6 +421,8 @@ func TestList(t *testing.T) {
t.Run(fmt.Sprintf("%s: with zero timeout should block
indefinitely", popType), func(t *testing.T) {
// To test this, use a timeout of 0 and wait a second.
// The blocking pop should still be waiting for a push.
+ rd := srv.NewTCPClient()
+ defer func() { require.NoError(t, rd.Close()) }()
require.NoError(t, rd.WriteArgs(popType, "blist1", "0"))
time.Sleep(time.Millisecond * 1000)
require.NoError(t, rdb.RPush(ctx, "blist1",
"foo").Err())
@@ -416,6 +430,8 @@ func TestList(t *testing.T) {
})
t.Run(fmt.Sprintf("%s: second argument is not a list",
popType), func(t *testing.T) {
+ rd := srv.NewTCPClient()
+ defer func() { require.NoError(t, rd.Close()) }()
require.NoError(t, rdb.Del(ctx, "blist1",
"blist2").Err())
require.NoError(t, rdb.Set(ctx, "blist2", "nolist",
0).Err())
require.NoError(t, rd.WriteArgs(popType, "blist1",
"blist2", "1"))
@@ -423,12 +439,16 @@ func TestList(t *testing.T) {
})
t.Run(fmt.Sprintf("%s: timeout", popType), func(t *testing.T) {
+ rd := srv.NewTCPClient()
+ defer func() { require.NoError(t, rd.Close()) }()
require.NoError(t, rdb.Del(ctx, "blist1",
"blist2").Err())
require.NoError(t, rd.WriteArgs(popType, "blist1",
"blist2", "1"))
rd.MustMatch(t, "")
})
t.Run(fmt.Sprintf("%s: arguments are empty", popType), func(t
*testing.T) {
+ rd := srv.NewTCPClient()
+ defer func() { require.NoError(t, rd.Close()) }()
require.NoError(t, rdb.Del(ctx, "blist1",
"blist2").Err())
require.NoError(t, rd.WriteArgs(popType, "blist1",
"blist2", "1"))
require.NoError(t, rdb.RPush(ctx, "blist1",
"foo").Err())
@@ -838,6 +858,8 @@ func TestList(t *testing.T) {
for _, from := range []string{"LEFT", "RIGHT"} {
for _, to := range []string{"LEFT", "RIGHT"} {
t.Run(fmt.Sprintf("LMOVE %s %s on the list node", from,
to), func(t *testing.T) {
+ rd := srv.NewTCPClient()
+ defer func() { require.NoError(t, rd.Close())
}()
require.NoError(t, rdb.Del(ctx,
"target_key{t}").Err())
require.NoError(t, rdb.RPush(ctx,
"target_key{t}", 1).Err())
createList("list{t}", []string{"a", "b", "c",
"d"})