Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
别团等shy哥发育
redis
提交
c01aff12
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,发现更多精彩内容 >>
提交
c01aff12
编写于
2月 19, 2014
作者:
A
antirez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Sentinel test: ODOWN and agreement.
上级
56cb037a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
69 addition
and
0 deletion
+69
-0
tests/sentinel-tests/00-base.tcl
tests/sentinel-tests/00-base.tcl
+69
-0
未找到文件。
tests/sentinel-tests/00-base.tcl
浏览文件 @
c01aff12
...
...
@@ -92,3 +92,72 @@ test "The old master eventually gets reconfigured as a slave" {
fail
"Old master not reconfigured as slave of new master"
}
}
test
"ODOWN is not possible without enough Sentinels reports"
{
foreach_sentinel_id id
{
S $id SENTINEL SET mymaster quorum
[
expr $sentinels+1
]
}
set old_port
[
RI $master_id tcp_port
]
set addr
[
S 0 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster
]
assert
{[
lindex $addr 1
]
== $old_port
}
R $master_id debug sleep 5
# Make sure failover did not happened.
set addr
[
S 0 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster
]
assert
{[
lindex $addr 1
]
== $old_port
}
}
test
"Failover is not possible without majority agreement"
{
foreach_sentinel_id id
{
S $id SENTINEL SET mymaster quorum $quorum
}
# Make majority of sentinels stop monitoring the master
for
{
set id 0
}
{
$id
< $quorum
}
{
incr id
}
{
S $id SENTINEL REMOVE mymaster
}
R $master_id debug sleep 5
# Make sure failover did not happened.
set addr
[
S $quorum SENTINEL GET-MASTER-ADDR-BY-NAME mymaster
]
assert
{[
lindex $addr 1
]
== $old_port
}
# Cleanup: reconfigure the Sentinels to monitor the master.
for
{
set id 0
}
{
$id
< $quorum
}
{
incr id
}
{
S $id SENTINEL MONITOR mymaster
\
[
get_instance_attrib redis $master_id host
]
\
[
get_instance_attrib redis $master_id port
]
$quorum
}
}
test
"Failover works if we configure for absolute agreement"
{
foreach_sentinel_id id
{
S $id SENTINEL SET mymaster quorum $sentinels
}
# Wait for Sentinels to monitor the master again
foreach_sentinel_id id
{
wait_for_condition 1000 50
{
[
dict get
[
S $id SENTINEL MASTER mymaster
]
info-refresh
]
< 100000
}
else
{
fail
"At least one Sentinel is not monitoring the master"
}
}
R $master_id debug sleep 5
foreach_sentinel_id id
{
wait_for_condition 100 50
{
[
lindex
[
S $id SENTINEL GET-MASTER-ADDR-BY-NAME mymaster
]
1
]
!= $old_port
}
else
{
fail
"At least one Sentinel did not received failover info"
}
}
set addr
[
S 0 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster
]
set master_id
[
get_instance_id_by_port redis
[
lindex $addr 1
]]
# Set the min ODOWN agreement back to strict majority.
foreach_sentinel_id id
{
S $id SENTINEL SET mymaster quorum $quorum
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录