mirror of
https://github.com/fluencelabs/redis
synced 2025-05-16 20:41:19 +00:00
Tests for keyspace notifications.
This commit is contained in:
parent
4dfb5752e0
commit
d2b27f1d96
@ -193,7 +193,7 @@ start_server {tags {"pubsub"}} {
|
|||||||
$rd1 close
|
$rd1 close
|
||||||
}
|
}
|
||||||
|
|
||||||
test "PUNSUBSCRIBE and UNSUBSCRIBE should always reply." {
|
test "PUNSUBSCRIBE and UNSUBSCRIBE should always reply" {
|
||||||
# Make sure we are not subscribed to any channel at all.
|
# Make sure we are not subscribed to any channel at all.
|
||||||
r punsubscribe
|
r punsubscribe
|
||||||
r unsubscribe
|
r unsubscribe
|
||||||
@ -202,4 +202,158 @@ start_server {tags {"pubsub"}} {
|
|||||||
set reply2 [r unsubscribe]
|
set reply2 [r unsubscribe]
|
||||||
concat $reply1 $reply2
|
concat $reply1 $reply2
|
||||||
} {punsubscribe {} 0 unsubscribe {} 0}
|
} {punsubscribe {} 0 unsubscribe {} 0}
|
||||||
|
|
||||||
|
### Keyspace events notification tests
|
||||||
|
|
||||||
|
test "Keyspace notifications: we receive keyspace notifications" {
|
||||||
|
r config set notify-keyspace-events KA
|
||||||
|
set rd1 [redis_deferring_client]
|
||||||
|
assert_equal {1} [psubscribe $rd1 *]
|
||||||
|
r set foo bar
|
||||||
|
assert_equal {pmessage * __keyspace@9__:foo set} [$rd1 read]
|
||||||
|
$rd1 close
|
||||||
|
}
|
||||||
|
|
||||||
|
test "Keyspace notifications: we receive keyevent notifications" {
|
||||||
|
r config set notify-keyspace-events EA
|
||||||
|
set rd1 [redis_deferring_client]
|
||||||
|
assert_equal {1} [psubscribe $rd1 *]
|
||||||
|
r set foo bar
|
||||||
|
assert_equal {pmessage * __keyevent@9__:set foo} [$rd1 read]
|
||||||
|
$rd1 close
|
||||||
|
}
|
||||||
|
|
||||||
|
test "Keyspace notifications: we can receive both kind of events" {
|
||||||
|
r config set notify-keyspace-events KEA
|
||||||
|
set rd1 [redis_deferring_client]
|
||||||
|
assert_equal {1} [psubscribe $rd1 *]
|
||||||
|
r set foo bar
|
||||||
|
assert_equal {pmessage * __keyspace@9__:foo set} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyevent@9__:set foo} [$rd1 read]
|
||||||
|
$rd1 close
|
||||||
|
}
|
||||||
|
|
||||||
|
test "Keyspace notifications: we are able to mask events" {
|
||||||
|
r config set notify-keyspace-events KEl
|
||||||
|
r del mylist
|
||||||
|
set rd1 [redis_deferring_client]
|
||||||
|
assert_equal {1} [psubscribe $rd1 *]
|
||||||
|
r set foo bar
|
||||||
|
r lpush mylist a
|
||||||
|
# No notification for set, because only list commands are enabled.
|
||||||
|
assert_equal {pmessage * __keyspace@9__:mylist lpush} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyevent@9__:lpush mylist} [$rd1 read]
|
||||||
|
$rd1 close
|
||||||
|
}
|
||||||
|
|
||||||
|
test "Keyspace notifications: general events test" {
|
||||||
|
r config set notify-keyspace-events KEg
|
||||||
|
set rd1 [redis_deferring_client]
|
||||||
|
assert_equal {1} [psubscribe $rd1 *]
|
||||||
|
r set foo bar
|
||||||
|
r expire foo 1
|
||||||
|
r del foo
|
||||||
|
assert_equal {pmessage * __keyspace@9__:foo expire} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyevent@9__:expire foo} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyspace@9__:foo del} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyevent@9__:del foo} [$rd1 read]
|
||||||
|
$rd1 close
|
||||||
|
}
|
||||||
|
|
||||||
|
test "Keyspace notifications: list events test" {
|
||||||
|
r config set notify-keyspace-events KEl
|
||||||
|
r del mylist
|
||||||
|
set rd1 [redis_deferring_client]
|
||||||
|
assert_equal {1} [psubscribe $rd1 *]
|
||||||
|
r lpush mylist a
|
||||||
|
r rpush mylist a
|
||||||
|
r rpop mylist
|
||||||
|
assert_equal {pmessage * __keyspace@9__:mylist lpush} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyevent@9__:lpush mylist} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyspace@9__:mylist rpush} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyevent@9__:rpush mylist} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyspace@9__:mylist rpop} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyevent@9__:rpop mylist} [$rd1 read]
|
||||||
|
$rd1 close
|
||||||
|
}
|
||||||
|
|
||||||
|
test "Keyspace notifications: set events test" {
|
||||||
|
r config set notify-keyspace-events Ks
|
||||||
|
r del myset
|
||||||
|
set rd1 [redis_deferring_client]
|
||||||
|
assert_equal {1} [psubscribe $rd1 *]
|
||||||
|
r sadd myset a b c d
|
||||||
|
r srem myset x
|
||||||
|
r sadd myset x y z
|
||||||
|
r srem myset x
|
||||||
|
assert_equal {pmessage * __keyspace@9__:myset sadd} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyspace@9__:myset sadd} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyspace@9__:myset srem} [$rd1 read]
|
||||||
|
$rd1 close
|
||||||
|
}
|
||||||
|
|
||||||
|
test "Keyspace notifications: zset events test" {
|
||||||
|
r config set notify-keyspace-events Kz
|
||||||
|
r del myzset
|
||||||
|
set rd1 [redis_deferring_client]
|
||||||
|
assert_equal {1} [psubscribe $rd1 *]
|
||||||
|
r zadd myzset 1 a 2 b
|
||||||
|
r zrem myzset x
|
||||||
|
r zadd myzset 3 x 4 y 5 z
|
||||||
|
r zrem myzset x
|
||||||
|
assert_equal {pmessage * __keyspace@9__:myzset zadd} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyspace@9__:myzset zadd} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyspace@9__:myzset zrem} [$rd1 read]
|
||||||
|
$rd1 close
|
||||||
|
}
|
||||||
|
|
||||||
|
test "Keyspace notifications: hash events test" {
|
||||||
|
r config set notify-keyspace-events Kh
|
||||||
|
r del myhash
|
||||||
|
set rd1 [redis_deferring_client]
|
||||||
|
assert_equal {1} [psubscribe $rd1 *]
|
||||||
|
r hmset myhash yes 1 no 0
|
||||||
|
r hincrby myhash yes 10
|
||||||
|
assert_equal {pmessage * __keyspace@9__:myhash hset} [$rd1 read]
|
||||||
|
assert_equal {pmessage * __keyspace@9__:myhash hincrby} [$rd1 read]
|
||||||
|
$rd1 close
|
||||||
|
}
|
||||||
|
|
||||||
|
test "Keyspace notifications: expired events (triggered expire)" {
|
||||||
|
r config set notify-keyspace-events Ex
|
||||||
|
r del foo
|
||||||
|
set rd1 [redis_deferring_client]
|
||||||
|
assert_equal {1} [psubscribe $rd1 *]
|
||||||
|
r psetex foo 100 1
|
||||||
|
wait_for_condition 50 100 {
|
||||||
|
[r exists foo] == 0
|
||||||
|
} else {
|
||||||
|
fail "Key does not expire?!"
|
||||||
|
}
|
||||||
|
assert_equal {pmessage * __keyevent@9__:expired foo} [$rd1 read]
|
||||||
|
$rd1 close
|
||||||
|
}
|
||||||
|
|
||||||
|
test "Keyspace notifications: expired events (background expire)" {
|
||||||
|
r config set notify-keyspace-events Ex
|
||||||
|
r del foo
|
||||||
|
set rd1 [redis_deferring_client]
|
||||||
|
assert_equal {1} [psubscribe $rd1 *]
|
||||||
|
r psetex foo 100 1
|
||||||
|
assert_equal {pmessage * __keyevent@9__:expired foo} [$rd1 read]
|
||||||
|
$rd1 close
|
||||||
|
}
|
||||||
|
|
||||||
|
test "Keyspace notifications: evicted events" {
|
||||||
|
r config set notify-keyspace-events Ee
|
||||||
|
r config set maxmemory-policy allkeys-lru
|
||||||
|
r flushdb
|
||||||
|
set rd1 [redis_deferring_client]
|
||||||
|
assert_equal {1} [psubscribe $rd1 *]
|
||||||
|
r set foo bar
|
||||||
|
r config set maxmemory 1
|
||||||
|
assert_equal {pmessage * __keyevent@9__:evicted foo} [$rd1 read]
|
||||||
|
r config set maxmemory 0
|
||||||
|
$rd1 close
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user