integration: improve TestTransferLeader

so that it can check leader transition
This commit is contained in:
Gyu-Ho Lee
2016-08-19 13:02:22 -07:00
parent 5e6d2a23b7
commit eaa5d9772f
2 changed files with 39 additions and 28 deletions

View File

@ -702,13 +702,13 @@ func (m *member) Stop(t *testing.T) {
plog.Printf("stopped %s (%s)", m.Name, m.grpcAddr)
}
// StopWithAutoLeaderTransfer stops the member with auto leader transfer.
func (m *member) StopWithAutoLeaderTransfer(t *testing.T) {
plog.Printf("stopping %s (%s)", m.Name, m.grpcAddr)
m.s.TransferLeadership()
m.Close()
m.hss = nil
plog.Printf("stopped %s (%s)", m.Name, m.grpcAddr)
// checkLeaderTransition waits for leader transition, returning the new leader ID.
func checkLeaderTransition(t *testing.T, m *member, oldLead uint64) uint64 {
interval := time.Duration(m.s.Cfg.TickMs) * time.Millisecond
for m.s.Lead() == 0 || (m.s.Lead() == oldLead) {
time.Sleep(interval)
}
return m.s.Lead()
}
// StopNotify unblocks when a member stop completes