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
d6797d34
Commit
d6797d34
authored
Oct 24, 2014
by
antirez
Browse files
Diskless replication tested with the multiple slaves consistency test.
parent
ebb3bd53
Changes
1
Hide whitespace changes
Inline
Side-by-side
tests/integration/replication.tcl
View file @
d6797d34
...
...
@@ -94,79 +94,82 @@ start_server {tags {"repl"}} {
}
}
start_server
{
tags
{
"repl"
}
}
{
s
et master
[
srv 0 client
]
set master
_host
[
srv 0
hos
t
]
set
master
_port
[
srv 0 port
]
set
slaves
{}
set load_handle0
[
start_write_load $master_host $master_
port
3
]
set load_handle1
[
start_write_load $master_host $master_port 5
]
set load_handle
2
[
start_write_load $master_host $master_port
20
]
set load_handle
3
[
start_write_load $master_host $master_port
8
]
set load_handle
4
[
start_write_load $master_host $master_port
4
]
start_server
{}
{
lappend slaves
[
srv 0 client
]
foreach dl
{
no yes
}
{
s
tart_server
{
tags
{
"repl"
}}
{
set master
[
srv 0
clien
t
]
$
master
config set repl-diskless-sync $dl
set
master_host
[
srv 0 host
]
set master_port
[
srv 0
port
]
set slaves
{}
set load_handle
0
[
start_write_load $master_host $master_port
3
]
set load_handle
1
[
start_write_load $master_host $master_port
5
]
set load_handle
2
[
start_write_load $master_host $master_port
20
]
set load_handle3
[
start_write_load $master_host $master_port 8
]
set load_handle4
[
start_write_load $master_host $master_port 4
]
start_server
{}
{
lappend slaves
[
srv 0 client
]
start_server
{}
{
lappend slaves
[
srv 0 client
]
test
"Connect multiple slaves at the same time (issue #141)"
{
# Send SALVEOF commands to slaves
[
lindex $slaves 0
]
slaveof $master_host $master_port
[
lindex $slaves 1
]
slaveof $master_host $master_port
[
lindex $slaves 2
]
slaveof $master_host $master_port
# Wait for all the three slaves to reach the
"online"
state
set retry 500
while
{
$retry
}
{
set info
[
r -3 info
]
if
{[
string match
{
*slave0:*state=online*slave1:*state=online*slave2:*state=online*
}
$info
]}
{
break
start_server
{}
{
lappend slaves
[
srv 0 client
]
test
"Connect multiple slaves at the same time (issue #141), diskless=
$dl
"
{
# Send SALVEOF commands to slaves
[
lindex $slaves 0
]
slaveof $master_host $master_port
[
lindex $slaves 1
]
slaveof $master_host $master_port
[
lindex $slaves 2
]
slaveof $master_host $master_port
# Wait for all the three slaves to reach the
"online"
state
set retry 500
while
{
$retry
}
{
set info
[
r -3 info
]
if
{[
string match
{
*slave0:*state=online*slave1:*state=online*slave2:*state=online*
}
$info
]}
{
break
}
else
{
incr retry -1
after 100
}
}
if
{
$retry
== 0
}
{
error
"assertion:Slaves not correctly synchronized"
}
# Stop the write load
stop_write_load $load_handle0
stop_write_load $load_handle1
stop_write_load $load_handle2
stop_write_load $load_handle3
stop_write_load $load_handle4
# Wait that slaves exit the
"loading"
state
wait_for_condition 500 100
{
!
[
string match
{
*loading:1*
}
[[
lindex $slaves 0
]
info
]]
&&
!
[
string match
{
*loading:1*
}
[[
lindex $slaves 1
]
info
]]
&&
!
[
string match
{
*loading:1*
}
[[
lindex $slaves 2
]
info
]]
}
else
{
incr retry -1
after 100
fail
"Slaves still loading data after too much time"
}
}
if
{
$retry
== 0
}
{
error
"assertion:Slaves not correctly synchronized"
}
# Stop the write load
stop_write_load $load_handle0
stop_write_load $load_handle1
stop_write_load $load_handle2
stop_write_load $load_handle3
stop_write_load $load_handle4
# Wait that slaves exit the
"loading"
state
wait_for_condition 500 100
{
!
[
string match
{
*loading:1*
}
[[
lindex $slaves 0
]
info
]]
&&
!
[
string match
{
*loading:1*
}
[[
lindex $slaves 1
]
info
]]
&&
!
[
string match
{
*loading:1*
}
[[
lindex $slaves 2
]
info
]]
}
else
{
fail
"Slaves still loading data after too much time"
}
# Make sure that slaves and master have same number of keys
wait_for_condition 500 100
{
[
$master
dbsize
]
==
[[
lindex $slaves 0
]
dbsize
]
&&
[
$master
dbsize
]
==
[[
lindex $slaves 1
]
dbsize
]
&&
[
$master
dbsize
]
==
[[
lindex $slaves 2
]
dbsize
]
}
else
{
fail
"Different number of keys between masted and slave after too long time."
}
# Make sure that slaves and master have same number of keys
wait_for_condition 500 100
{
[
$master
dbsize
]
==
[[
lindex $slaves 0
]
dbsize
]
&&
[
$master
dbsize
]
==
[[
lindex $slaves 1
]
dbsize
]
&&
[
$master
dbsize
]
==
[[
lindex $slaves 2
]
dbsize
]
}
else
{
fail
"Different number of keys between masted and slave after too long time."
# Check digests
set digest
[
$master
debug digest
]
set digest0
[[
lindex $slaves 0
]
debug digest
]
set digest1
[[
lindex $slaves 1
]
debug digest
]
set digest2
[[
lindex $slaves 2
]
debug digest
]
assert
{
$digest
ne 0000000000000000000000000000000000000000
}
assert
{
$digest
eq $digest0
}
assert
{
$digest
eq $digest1
}
assert
{
$digest
eq $digest2
}
}
# Check digests
set digest
[
$master
debug digest
]
set digest0
[[
lindex $slaves 0
]
debug digest
]
set digest1
[[
lindex $slaves 1
]
debug digest
]
set digest2
[[
lindex $slaves 2
]
debug digest
]
assert
{
$digest
ne 0000000000000000000000000000000000000000
}
assert
{
$digest
eq $digest0
}
assert
{
$digest
eq $digest1
}
assert
{
$digest
eq $digest2
}
}
}
}
}
}
}
}
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