Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
别团等shy哥发育
redis
提交
664de412
R
redis
项目概览
别团等shy哥发育
/
redis
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
664de412
编写于
1月 28, 2013
作者:
A
antirez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Tests for keyspace notifications.
上级
d3cf778d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
155 addition
and
1 deletion
+155
-1
tests/unit/pubsub.tcl
tests/unit/pubsub.tcl
+155
-1
未找到文件。
tests/unit/pubsub.tcl
浏览文件 @
664de412
...
...
@@ -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
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录