mirror of
https://github.com/fluencelabs/redis
synced 2025-03-18 08:30:51 +00:00
initial basic pub/sub tests
This commit is contained in:
parent
676740a960
commit
4589a823fd
@ -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}
|
||||
|
45
tests/unit/pubsub.tcl
Normal file
45
tests/unit/pubsub.tcl
Normal file
@ -0,0 +1,45 @@
|
||||
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]
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user