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