From 59a720d8beb3ef138eff05cf371386a2b2466af5 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Sat, 24 May 2014 21:43:12 -0700 Subject: [PATCH] raft: vote test for candidate and leader --- raft/raft_test.go | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/raft/raft_test.go b/raft/raft_test.go index d518abc59..21f4ffdc6 100644 --- a/raft/raft_test.go +++ b/raft/raft_test.go @@ -345,37 +345,41 @@ func TestCommit(t *testing.T) { func TestVote(t *testing.T) { tests := []struct { + state stateType i, term int voteFor int w int }{ - {0, 0, none, -1}, - {0, 1, none, -1}, - {0, 2, none, -1}, - {0, 3, none, 2}, + {stateFollower, 0, 0, none, -1}, + {stateFollower, 0, 1, none, -1}, + {stateFollower, 0, 2, none, -1}, + {stateFollower, 0, 3, none, 2}, - {1, 0, none, -1}, - {1, 1, none, -1}, - {1, 2, none, -1}, - {1, 3, none, 2}, + {stateFollower, 1, 0, none, -1}, + {stateFollower, 1, 1, none, -1}, + {stateFollower, 1, 2, none, -1}, + {stateFollower, 1, 3, none, 2}, - {2, 0, none, -1}, - {2, 1, none, -1}, - {2, 2, none, 2}, - {2, 3, none, 2}, + {stateFollower, 2, 0, none, -1}, + {stateFollower, 2, 1, none, -1}, + {stateFollower, 2, 2, none, 2}, + {stateFollower, 2, 3, none, 2}, - {3, 0, none, -1}, - {3, 1, none, -1}, - {3, 2, none, 2}, - {3, 3, none, 2}, + {stateFollower, 3, 0, none, -1}, + {stateFollower, 3, 1, none, -1}, + {stateFollower, 3, 2, none, 2}, + {stateFollower, 3, 3, none, 2}, - {3, 2, 0, 2}, - {3, 2, 1, -1}, + {stateFollower, 3, 2, 1, 2}, + {stateFollower, 3, 2, 0, -1}, + + {stateLeader, 3, 3, 0, -1}, + {stateCandidate, 3, 3, 0, -1}, } for i, tt := range tests { called := false - sm := &nsm{stateMachine{vote: tt.voteFor, log: &log{ents: []Entry{{}, {Term: 2}, {Term: 2}}}}, nil} + sm := &nsm{stateMachine{state: tt.state, vote: tt.voteFor, log: &log{ents: []Entry{{}, {Term: 2}, {Term: 2}}}}, nil} sm.next = stepperFunc(func(m Message) { called = true @@ -383,7 +387,7 @@ func TestVote(t *testing.T) { t.Errorf("#%d, m.Index = %d, want %d", i, m.Index, tt.w) } }) - sm.Step(Message{Type: msgVote, Index: tt.i, LogTerm: tt.term}) + sm.Step(Message{Type: msgVote, From: 1, Index: tt.i, LogTerm: tt.term}) if !called { t.Fatal("#%d: not called", i) }