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
d8207d09
Commit
d8207d09
authored
Mar 14, 2018
by
antirez
Browse files
Cluster: add test for the nofailover flag.
parent
432bf477
Changes
2
Hide whitespace changes
Inline
Side-by-side
tests/cluster/cluster.tcl
View file @
d8207d09
...
...
@@ -42,6 +42,16 @@ proc get_myself id {
return
{}
}
# Get a specific node by ID by parsing the CLUSTER NODES output
# of the instance Number 'instance_id'
proc get_node_by_id
{
instance_id node_id
}
{
set nodes
[
get_cluster_nodes $instance_id
]
foreach n $nodes
{
if
{[
dict get $n id
]
eq $node_id
}
{
return $n
}
}
return
{}
}
# Return the value of the specified CLUSTER INFO field.
proc CI
{
n field
}
{
get_info_field
[
R $n cluster info
]
$field
...
...
tests/cluster/tests/13-no-failover-option.tcl
0 → 100644
View file @
d8207d09
# Check that the no-failover option works
source
"../tests/includes/init-tests.tcl"
test
"Create a 5 nodes cluster"
{
create_cluster 5 5
}
test
"Cluster is up"
{
assert_cluster_state ok
}
test
"Cluster is writable"
{
cluster_write_test 0
}
test
"Instance #5 is a slave"
{
assert
{[
RI 5 role
]
eq
{
slave
}}
# Configure it to never failover the master
R 5 CONFIG SET cluster-slave-no-failover yes
}
test
"Instance #5 synced with the master"
{
wait_for_condition 1000 50
{
[
RI 5 master_link_status
]
eq
{
up
}
}
else
{
fail
"Instance #5 master link status is not up"
}
}
test
"The nofailover flag is propagated"
{
set slave5_id
[
dict get
[
get_myself 5
]
id
]
foreach_redis_id id
{
wait_for_condition 1000 50
{
[
has_flag
[
get_node_by_id $id $slave5_id
]
nofailover
]
}
else
{
fail
"Instance
$id
can't see the nofailover flag of slave"
}
}
}
set current_epoch
[
CI 1 cluster_current_epoch
]
test
"Killing one master node"
{
kill_instance redis 0
}
test
"Cluster should be still down after some time"
{
after 10000
assert_cluster_state fail
}
test
"Instance #5 is still a slave"
{
assert
{[
RI 5 role
]
eq
{
slave
}}
}
test
"Restarting the previously killed master node"
{
restart_instance redis 0
}
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