Stream tests rely on deferring clients, mitigate races caused by them

Former-commit-id: 2caf8e4c8095215b189942b7eaec3bf5023f7fcf
This commit is contained in:
John Sully 2020-06-07 13:59:41 -04:00
parent 7384abfe56
commit 97908941bf

View File

@ -176,6 +176,7 @@ start_server {
r XADD s2 * old abcd1234 r XADD s2 * old abcd1234
set rd [redis_deferring_client] set rd [redis_deferring_client]
$rd XREAD BLOCK 20000 STREAMS s1 s2 s3 $ $ $ $rd XREAD BLOCK 20000 STREAMS s1 s2 s3 $ $ $
after 100
r XADD s2 * new abcd1234 r XADD s2 * new abcd1234
set res [$rd read] set res [$rd read]
assert {[lindex $res 0 0] eq {s2}} assert {[lindex $res 0 0] eq {s2}}
@ -185,6 +186,7 @@ start_server {
test {Blocking XREAD waiting old data} { test {Blocking XREAD waiting old data} {
set rd [redis_deferring_client] set rd [redis_deferring_client]
$rd XREAD BLOCK 20000 STREAMS s1 s2 s3 $ 0-0 $ $rd XREAD BLOCK 20000 STREAMS s1 s2 s3 $ 0-0 $
after 100
r XADD s2 * foo abcd1234 r XADD s2 * foo abcd1234
set res [$rd read] set res [$rd read]
assert {[lindex $res 0 0] eq {s2}} assert {[lindex $res 0 0] eq {s2}}
@ -198,6 +200,7 @@ start_server {
r XDEL s1 667 r XDEL s1 667
set rd [redis_deferring_client] set rd [redis_deferring_client]
$rd XREAD BLOCK 10 STREAMS s1 666 $rd XREAD BLOCK 10 STREAMS s1 666
after 100
after 20 after 20
assert {[$rd read] == {}} ;# before the fix, client didn't even block, but was served synchronously with {s1 {}} assert {[$rd read] == {}} ;# before the fix, client didn't even block, but was served synchronously with {s1 {}}
} }
@ -206,6 +209,7 @@ start_server {
set rd [redis_deferring_client] set rd [redis_deferring_client]
r del s1 r del s1
$rd XREAD BLOCK 20000 STREAMS s1 $ $rd XREAD BLOCK 20000 STREAMS s1 $
after 100
r multi r multi
r XADD s1 * old abcd1234 r XADD s1 * old abcd1234
r DEL s1 r DEL s1
@ -220,6 +224,7 @@ start_server {
set rd [redis_deferring_client] set rd [redis_deferring_client]
r del s1 r del s1
$rd XREAD BLOCK 20000 STREAMS s1 $ $rd XREAD BLOCK 20000 STREAMS s1 $
after 100
r multi r multi
r XADD s1 * old abcd1234 r XADD s1 * old abcd1234
r DEL s1 r DEL s1
@ -236,6 +241,7 @@ start_server {
r XADD s2 * old abcd1234 r XADD s2 * old abcd1234
set rd [redis_deferring_client] set rd [redis_deferring_client]
$rd XREAD BLOCK 20000 STREAMS s2 s2 s2 $ $ $ $rd XREAD BLOCK 20000 STREAMS s2 s2 s2 $ $ $
after 100
r XADD s2 * new abcd1234 r XADD s2 * new abcd1234
set res [$rd read] set res [$rd read]
assert {[lindex $res 0 0] eq {s2}} assert {[lindex $res 0 0] eq {s2}}
@ -246,6 +252,7 @@ start_server {
r XADD s2 * old abcd1234 r XADD s2 * old abcd1234
set rd [redis_deferring_client] set rd [redis_deferring_client]
$rd XREAD BLOCK 20000 STREAMS s2 s2 s2 $ $ $ $rd XREAD BLOCK 20000 STREAMS s2 s2 s2 $ $ $
after 100
r MULTI r MULTI
r XADD s2 * field one r XADD s2 * field one
r XADD s2 * field two r XADD s2 * field two
@ -353,6 +360,7 @@ start_server {
r del x r del x
set rd [redis_deferring_client] set rd [redis_deferring_client]
$rd XREAD BLOCK 0 STREAMS x 1-18446744073709551615 $rd XREAD BLOCK 0 STREAMS x 1-18446744073709551615
after 100
r XADD x 1-1 f v r XADD x 1-1 f v
r XADD x 1-18446744073709551615 f v r XADD x 1-18446744073709551615 f v
r XADD x 2-1 f v r XADD x 2-1 f v