Skip to content
/ etcd Public
forked from etcd-io/etcd

Commit

Permalink
Merge pull request etcd-io#9671 from lorneli/raft-test
Browse files Browse the repository at this point in the history
raft: merge test cases of pre-candidate with the normal one
  • Loading branch information
xiang90 authored May 24, 2018
2 parents b4f84f0 + 3d12e36 commit 20cf7f4
Showing 1 changed file with 13 additions and 18 deletions.
31 changes: 13 additions & 18 deletions raft/raft_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -303,8 +303,15 @@ func TestLeaderElectionPreVote(t *testing.T) {

func testLeaderElection(t *testing.T, preVote bool) {
var cfg func(*Config)
candState := StateType(StateCandidate)
candTerm := uint64(1)
if preVote {
cfg = preVoteConfig
// In pre-vote mode, an election that fails to complete
// leaves the node in pre-candidate state without advancing
// the term.
candState = StatePreCandidate
candTerm = 0
}
tests := []struct {
*network
Expand All @@ -313,8 +320,8 @@ func testLeaderElection(t *testing.T, preVote bool) {
}{
{newNetworkWithConfig(cfg, nil, nil, nil), StateLeader, 1},
{newNetworkWithConfig(cfg, nil, nil, nopStepper), StateLeader, 1},
{newNetworkWithConfig(cfg, nil, nopStepper, nopStepper), StateCandidate, 1},
{newNetworkWithConfig(cfg, nil, nopStepper, nopStepper, nil), StateCandidate, 1},
{newNetworkWithConfig(cfg, nil, nopStepper, nopStepper), candState, candTerm},
{newNetworkWithConfig(cfg, nil, nopStepper, nopStepper, nil), candState, candTerm},
{newNetworkWithConfig(cfg, nil, nopStepper, nopStepper, nil, nil), StateLeader, 1},

// three logs further along than 0, but in the same term so rejections
Expand All @@ -327,23 +334,11 @@ func testLeaderElection(t *testing.T, preVote bool) {
for i, tt := range tests {
tt.send(pb.Message{From: 1, To: 1, Type: pb.MsgHup})
sm := tt.network.peers[1].(*raft)
var expState StateType
var expTerm uint64
if tt.state == StateCandidate && preVote {
// In pre-vote mode, an election that fails to complete
// leaves the node in pre-candidate state without advancing
// the term.
expState = StatePreCandidate
expTerm = 0
} else {
expState = tt.state
expTerm = tt.expTerm
}
if sm.state != expState {
t.Errorf("#%d: state = %s, want %s", i, sm.state, expState)
if sm.state != tt.state {
t.Errorf("#%d: state = %s, want %s", i, sm.state, tt.state)
}
if g := sm.Term; g != expTerm {
t.Errorf("#%d: term = %d, want %d", i, g, expTerm)
if g := sm.Term; g != tt.expTerm {
t.Errorf("#%d: term = %d, want %d", i, g, tt.expTerm)
}
}
}
Expand Down

0 comments on commit 20cf7f4

Please sign in to comment.