Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
d2b27f1d
Commit
d2b27f1d
authored
Jan 28, 2013
by
antirez
Browse files
Tests for keyspace notifications.
parent
4dfb5752
Changes
1
Hide whitespace changes
Inline
Side-by-side
tests/unit/pubsub.tcl
View file @
d2b27f1d
...
...
@@ -193,7 +193,7 @@ start_server {tags {"pubsub"}} {
$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.
r punsubscribe
r unsubscribe
...
...
@@ -202,4 +202,158 @@ start_server {tags {"pubsub"}} {
set reply2
[
r unsubscribe
]
concat $reply1 $reply2
}
{
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
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment