Add pause path coverage to replica migration tests (#937)
In #885, we only add a shutdown path, there is another path is that the server might got hang by slowlog. This PR added the pause path coverage to cover it. Signed-off-by: Binbin <binloveplay1314@qq.com>
This commit is contained in:
parent
5d06dc87e9
commit
ecb6846c8e
@ -11,8 +11,8 @@ proc my_slot_allocation {masters replicas} {
|
|||||||
R [expr $masters-1] cluster addslots 0
|
R [expr $masters-1] cluster addslots 0
|
||||||
}
|
}
|
||||||
|
|
||||||
start_cluster 4 4 {tags {external:skip cluster} overrides {cluster-node-timeout 1000 cluster-migration-barrier 999}} {
|
proc test_migrated_replica {type} {
|
||||||
test "Migrated replica reports zero repl offset and rank, and fails to win election" {
|
test "Migrated replica reports zero repl offset and rank, and fails to win election - $type" {
|
||||||
# Write some data to primary 0, slot 1, make a small repl_offset.
|
# Write some data to primary 0, slot 1, make a small repl_offset.
|
||||||
for {set i 0} {$i < 1024} {incr i} {
|
for {set i 0} {$i < 1024} {incr i} {
|
||||||
R 0 incr key_991803
|
R 0 incr key_991803
|
||||||
@ -45,8 +45,14 @@ start_cluster 4 4 {tags {external:skip cluster} overrides {cluster-node-timeout
|
|||||||
R 3 config set cluster-allow-replica-migration yes
|
R 3 config set cluster-allow-replica-migration yes
|
||||||
R 7 config set cluster-allow-replica-migration yes
|
R 7 config set cluster-allow-replica-migration yes
|
||||||
|
|
||||||
# Shutdown primary 0.
|
if {$type == "shutdown"} {
|
||||||
catch {R 0 shutdown nosave}
|
# Shutdown primary 0.
|
||||||
|
catch {R 0 shutdown nosave}
|
||||||
|
} elseif {$type == "sigstop"} {
|
||||||
|
# Pause primary 0.
|
||||||
|
set primary0_pid [s 0 process_id]
|
||||||
|
pause_process $primary0_pid
|
||||||
|
}
|
||||||
|
|
||||||
# Wait for the replica to become a primary, and make sure
|
# Wait for the replica to become a primary, and make sure
|
||||||
# the other primary become a replica.
|
# the other primary become a replica.
|
||||||
@ -93,11 +99,30 @@ start_cluster 4 4 {tags {external:skip cluster} overrides {cluster-node-timeout
|
|||||||
puts "R 7: [R 7 keys *]"
|
puts "R 7: [R 7 keys *]"
|
||||||
fail "Key not consistent"
|
fail "Key not consistent"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if {$type == "sigstop"} {
|
||||||
|
resume_process $primary0_pid
|
||||||
|
|
||||||
|
# Wait for the old primary to go online and become a replica.
|
||||||
|
wait_for_condition 1000 50 {
|
||||||
|
[s 0 role] eq {slave}
|
||||||
|
} else {
|
||||||
|
fail "The old primary was not converted into replica"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} ;# proc
|
||||||
|
|
||||||
|
start_cluster 4 4 {tags {external:skip cluster} overrides {cluster-node-timeout 1000 cluster-migration-barrier 999}} {
|
||||||
|
test_migrated_replica "shutdown"
|
||||||
} my_slot_allocation cluster_allocate_replicas ;# start_cluster
|
} my_slot_allocation cluster_allocate_replicas ;# start_cluster
|
||||||
|
|
||||||
start_cluster 4 4 {tags {external:skip cluster} overrides {cluster-node-timeout 1000 cluster-migration-barrier 999}} {
|
start_cluster 4 4 {tags {external:skip cluster} overrides {cluster-node-timeout 1000 cluster-migration-barrier 999}} {
|
||||||
test "New non-empty replica reports zero repl offset and rank, and fails to win election" {
|
test_migrated_replica "sigstop"
|
||||||
|
} my_slot_allocation cluster_allocate_replicas ;# start_cluster
|
||||||
|
|
||||||
|
proc test_nonempty_replica {type} {
|
||||||
|
test "New non-empty replica reports zero repl offset and rank, and fails to win election - $type" {
|
||||||
# Write some data to primary 0, slot 1, make a small repl_offset.
|
# Write some data to primary 0, slot 1, make a small repl_offset.
|
||||||
for {set i 0} {$i < 1024} {incr i} {
|
for {set i 0} {$i < 1024} {incr i} {
|
||||||
R 0 incr key_991803
|
R 0 incr key_991803
|
||||||
@ -118,8 +143,14 @@ start_cluster 4 4 {tags {external:skip cluster} overrides {cluster-node-timeout
|
|||||||
R 7 config set cluster-allow-replica-migration yes
|
R 7 config set cluster-allow-replica-migration yes
|
||||||
R 7 cluster replicate [R 0 cluster myid]
|
R 7 cluster replicate [R 0 cluster myid]
|
||||||
|
|
||||||
# Shutdown primary 0.
|
if {$type == "shutdown"} {
|
||||||
catch {R 0 shutdown nosave}
|
# Shutdown primary 0.
|
||||||
|
catch {R 0 shutdown nosave}
|
||||||
|
} elseif {$type == "sigstop"} {
|
||||||
|
# Pause primary 0.
|
||||||
|
set primary0_pid [s 0 process_id]
|
||||||
|
pause_process $primary0_pid
|
||||||
|
}
|
||||||
|
|
||||||
# Wait for the replica to become a primary.
|
# Wait for the replica to become a primary.
|
||||||
wait_for_condition 1000 50 {
|
wait_for_condition 1000 50 {
|
||||||
@ -155,7 +186,26 @@ start_cluster 4 4 {tags {external:skip cluster} overrides {cluster-node-timeout
|
|||||||
puts "R 7: [R 7 get key_991803]"
|
puts "R 7: [R 7 get key_991803]"
|
||||||
fail "Key not consistent"
|
fail "Key not consistent"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if {$type == "sigstop"} {
|
||||||
|
resume_process $primary0_pid
|
||||||
|
|
||||||
|
# Waiting the old primary go online and become a replica.
|
||||||
|
wait_for_condition 1000 50 {
|
||||||
|
[s 0 role] eq {slave}
|
||||||
|
} else {
|
||||||
|
fail "The old primary was not converted into replica"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} ;# proc
|
||||||
|
|
||||||
|
start_cluster 4 4 {tags {external:skip cluster} overrides {cluster-node-timeout 1000 cluster-migration-barrier 999}} {
|
||||||
|
test_nonempty_replica "shutdown"
|
||||||
|
} my_slot_allocation cluster_allocate_replicas ;# start_cluster
|
||||||
|
|
||||||
|
start_cluster 4 4 {tags {external:skip cluster} overrides {cluster-node-timeout 1000 cluster-migration-barrier 999}} {
|
||||||
|
test_nonempty_replica "sigstop"
|
||||||
} my_slot_allocation cluster_allocate_replicas ;# start_cluster
|
} my_slot_allocation cluster_allocate_replicas ;# start_cluster
|
||||||
|
|
||||||
start_cluster 4 4 {tags {external:skip cluster} overrides {cluster-node-timeout 1000 cluster-migration-barrier 999}} {
|
start_cluster 4 4 {tags {external:skip cluster} overrides {cluster-node-timeout 1000 cluster-migration-barrier 999}} {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user