提交 4589a823 编写于 作者: P Pieter Noordhuis

initial basic pub/sub tests

上级 676740a9
......@@ -41,7 +41,7 @@ array set ::redis::multibulkarg {}
# Flag commands requiring last argument as a bulk write operation
foreach redis_bulk_cmd {
set setnx rpush lpush rpushx lpushx linsert lset lrem sadd srem sismember echo getset smove zadd zrem zscore zincrby append zrank zrevrank hget hdel hexists setex
set setnx rpush lpush rpushx lpushx linsert lset lrem sadd srem sismember echo getset smove zadd zrem zscore zincrby append zrank zrevrank hget hdel hexists setex publish
} {
set ::redis::bulkarg($redis_bulk_cmd) {}
}
......
......@@ -88,6 +88,7 @@ proc main {} {
execute_tests "unit/cas"
execute_tests "integration/replication"
execute_tests "integration/aof"
execute_tests "unit/pubsub"
# run tests with VM enabled
set ::global_overrides {vm-enabled yes}
......
start_server {tags {"pubsub"}} {
test "PUBLISH when no one is listening" {
assert_equal 0 [r publish chan hello]
}
test "SUBSCRIBE basics" {
set rd1 [redis_deferring_client]
set rd2 [redis_deferring_client]
# subscribe first client to two channels
$rd1 subscribe chan1 chan2
assert_equal {subscribe chan1 1} [$rd1 read]
assert_equal {subscribe chan2 2} [$rd1 read]
# publish on both channels
assert_equal 1 [r publish chan1 hello]
assert_equal 1 [r publish chan2 world]
assert_equal {message chan1 hello} [$rd1 read]
assert_equal {message chan2 world} [$rd1 read]
# subscribe second client to one channel
$rd2 subscribe chan1
assert_equal {subscribe chan1 1} [$rd2 read]
# publish on channel with two subscribers
assert_equal 2 [r publish chan1 hello]
assert_equal {message chan1 hello} [$rd1 read]
assert_equal {message chan1 hello} [$rd2 read]
# unsubscribe first client from all channels
$rd1 unsubscribe
set msg [$rd1 read]
assert_equal "unsubscribe" [lindex $msg 0]
assert_match "chan*" [lindex $msg 1]
assert_match 1 [lindex $msg 2]
set msg [$rd1 read]
assert_equal "unsubscribe" [lindex $msg 0]
assert_match "chan*" [lindex $msg 1]
assert_match 0 [lindex $msg 2]
# publish on channel with only remaining subscriber
assert_equal 1 [r publish chan1 hello]
assert_equal {message chan1 hello} [$rd2 read]
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册