mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-22 16:18:28 -05:00
Test: more PSYNC tests (backlog TTL).
This commit is contained in:
parent
a7486a6592
commit
e938575220
@ -7,7 +7,13 @@ proc stop_bg_complex_data {handle} {
|
|||||||
catch {exec /bin/kill -9 $handle}
|
catch {exec /bin/kill -9 $handle}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc test_psync {backlog cond} {
|
# Creates a master-slave pair and breaks the link continuously to force
|
||||||
|
# partial resyncs attempts, all this while flooding the master with
|
||||||
|
# write queries.
|
||||||
|
#
|
||||||
|
# You can specifiy backlog size, ttl, delay before reconnection, test duration
|
||||||
|
# in seconds, and an additional condition to verify at the end.
|
||||||
|
proc test_psync {descr duration backlog_size backlog_ttl delay cond} {
|
||||||
start_server {tags {"repl"}} {
|
start_server {tags {"repl"}} {
|
||||||
start_server {} {
|
start_server {} {
|
||||||
|
|
||||||
@ -16,7 +22,8 @@ proc test_psync {backlog cond} {
|
|||||||
set master_port [srv -1 port]
|
set master_port [srv -1 port]
|
||||||
set slave [srv 0 client]
|
set slave [srv 0 client]
|
||||||
|
|
||||||
$master config set repl-backlog-size $backlog
|
$master config set repl-backlog-size $backlog_size
|
||||||
|
$master config set repl-backlog-ttl $backlog_ttl
|
||||||
|
|
||||||
set load_handle0 [start_bg_complex_data $master_host $master_port 9 100000]
|
set load_handle0 [start_bg_complex_data $master_host $master_port 9 100000]
|
||||||
set load_handle1 [start_bg_complex_data $master_host $master_port 11 100000]
|
set load_handle1 [start_bg_complex_data $master_host $master_port 11 100000]
|
||||||
@ -24,20 +31,30 @@ proc test_psync {backlog cond} {
|
|||||||
|
|
||||||
test {First server should have role slave after SLAVEOF} {
|
test {First server should have role slave after SLAVEOF} {
|
||||||
$slave slaveof $master_host $master_port
|
$slave slaveof $master_host $master_port
|
||||||
after 1000
|
wait_for_condition 50 100 {
|
||||||
s 0 role
|
[s 0 role] eq {slave}
|
||||||
} {slave}
|
} else {
|
||||||
|
fail "Replication not started."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
test "Test replication partial resync with backlog $backlog" {
|
test "Test replication partial resync: $descr" {
|
||||||
# Now while the clients are writing data, break the maste-slave
|
# Now while the clients are writing data, break the maste-slave
|
||||||
# link multiple times.
|
# link multiple times.
|
||||||
for {set j 0} {$j < 100} {incr j} {
|
for {set j 0} {$j < $duration*10} {incr j} {
|
||||||
after 100 ;# 100 times 100 milliseconds = 10 seconds total test
|
after 100
|
||||||
# catch {puts "MASTER [$master dbsize] keys, SLAVE [$slave dbsize] keys"}
|
# catch {puts "MASTER [$master dbsize] keys, SLAVE [$slave dbsize] keys"}
|
||||||
|
|
||||||
if {($j % 20) == 0} {
|
if {($j % 20) == 0} {
|
||||||
catch {
|
catch {
|
||||||
$slave client kill $master_host:$master_port
|
if {$delay} {
|
||||||
|
$slave multi
|
||||||
|
$slave client kill $master_host:$master_port
|
||||||
|
$slave debug sleep $delay
|
||||||
|
$slave exec
|
||||||
|
} else {
|
||||||
|
$slave client kill $master_host:$master_port
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -71,9 +88,18 @@ proc test_psync {backlog cond} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
test_psync 1000000 {
|
test_psync {ok psync} 6 1000000 3600 0 {
|
||||||
assert {[s -1 sync_partial_ok] > 0}
|
assert {[s -1 sync_partial_ok] > 0}
|
||||||
}
|
}
|
||||||
test_psync 100 {
|
|
||||||
|
test_psync {no backlog} 6 100 3600 0 {
|
||||||
|
assert {[s -1 sync_partial_err] > 0}
|
||||||
|
}
|
||||||
|
|
||||||
|
test_psync {ok after delay} 3 100000000 3600 3 {
|
||||||
|
assert {[s -1 sync_partial_ok] > 0}
|
||||||
|
}
|
||||||
|
|
||||||
|
test_psync {backlog expired} 3 100000000 1 3 {
|
||||||
assert {[s -1 sync_partial_err] > 0}
|
assert {[s -1 sync_partial_err] > 0}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user