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
6007ea3b
Commit
6007ea3b
authored
Dec 10, 2015
by
antirez
Browse files
Cluster: more reliable replicas migration test.
parent
6d5d8d10
Changes
1
Hide whitespace changes
Inline
Side-by-side
tests/cluster/tests/07-replica-migration.tcl
View file @
6007ea3b
...
@@ -45,3 +45,78 @@ foreach_redis_id id {
...
@@ -45,3 +45,78 @@ foreach_redis_id id {
}
}
}
}
}
}
# Now test the migration to a master which used to be a slave, after
# a failver.
source
"../tests/includes/init-tests.tcl"
# Create a cluster with 5 master and 10 slaves, so that we have 2
# slaves for each master.
test
"Create a 5 nodes cluster"
{
create_cluster 5 10
}
test
"Cluster is up"
{
assert_cluster_state ok
}
set failover_cycle 0
set new_master 2
while
{
$failover
_cycle != 2
}
{
incr failover_cycle
set current_epoch
[
CI 1 cluster_current_epoch
]
test
"Wait for slave of #
$new
_master to sync"
{
wait_for_condition 1000 50
{
[
string match
{
*state=online*
}
[
RI $new_master slave0
]]
}
else
{
fail
"Slave of node #
$new
_master is not ok"
}
}
test
"Killing master node #
$new
_master"
{
kill_instance redis $new_master
}
test
"Wait for failover"
{
wait_for_condition 1000 50
{
[
CI 1 cluster_current_epoch
]
> $current_epoch
}
else
{
fail
"No failover detected"
}
}
test
"Cluster should eventually be up again"
{
assert_cluster_state ok
}
test
"Cluster is writable"
{
cluster_write_test 1
}
test
"Instance #7 or #12 is now a master"
{
assert
{
(
!
[
instance_is_killed redis 7
]
&&
[
RI 7 role
]
eq
{
master
})
||
(
!
[
instance_is_killed redis 12
]
&&
[
RI 12 role
]
eq
{
master
})
}
}
if
{
!
[
instance_is_killed redis 7
]
&&
[
RI 7 role
]
eq
{
master
}}
{
set new_master 7
}
else
{
set new_master 12
}
}
# The remaining instance is now without slaves. Some other slave
# should migrate to it.
test
"Master #
$new
_master should have at least one replica"
{
wait_for_condition 1000 50
{
[
llength
[
lindex
[
R $new_master role
]
2
]]
>= 1
}
else
{
fail
"Master #
$new
_master has no replicas"
}
}
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