mirror of
https://github.com/fluencelabs/redis
synced 2025-03-19 09:00:51 +00:00
45 lines
1.6 KiB
Tcl
45 lines
1.6 KiB
Tcl
|
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]
|
||
|
}
|
||
|
}
|