2014-02-22 11:26:30 -05:00
|
|
|
# Test Sentinel configuration consistency after partitions heal.
|
|
|
|
|
|
|
|
source "../sentinel-tests/includes/init-tests.tcl"
|
|
|
|
|
|
|
|
test "We can failover with Sentinel 1 crashed" {
|
|
|
|
set old_port [RI $master_id tcp_port]
|
|
|
|
set addr [S 0 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster]
|
|
|
|
assert {[lindex $addr 1] == $old_port}
|
|
|
|
|
|
|
|
# Crash Sentinel 1
|
|
|
|
kill_instance sentinel 1
|
|
|
|
|
2014-02-25 08:33:44 -05:00
|
|
|
kill_instance redis $master_id
|
2014-02-22 11:26:30 -05:00
|
|
|
foreach_sentinel_id id {
|
|
|
|
if {$id != 1} {
|
|
|
|
wait_for_condition 1000 50 {
|
|
|
|
[lindex [S $id SENTINEL GET-MASTER-ADDR-BY-NAME mymaster] 1] != $old_port
|
|
|
|
} else {
|
|
|
|
fail "Sentinel $id did not received failover info"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2014-02-25 08:33:44 -05:00
|
|
|
restart_instance redis $master_id
|
2014-02-22 11:26:30 -05:00
|
|
|
set addr [S 0 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster]
|
|
|
|
set master_id [get_instance_id_by_port redis [lindex $addr 1]]
|
|
|
|
}
|
|
|
|
|
|
|
|
test "After Sentinel 1 is restarted, its config gets updated" {
|
|
|
|
restart_instance sentinel 1
|
|
|
|
wait_for_condition 1000 50 {
|
|
|
|
[lindex [S 1 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster] 1] != $old_port
|
|
|
|
} else {
|
|
|
|
fail "Restarted Sentinel did not received failover info"
|
|
|
|
}
|
|
|
|
}
|
2014-02-25 08:59:36 -05:00
|
|
|
|
|
|
|
test "New master [join $addr {:}] role matches" {
|
|
|
|
assert {[RI $master_id role] eq {master}}
|
|
|
|
}
|