batch33 task6 port wave T2 raft tests
This commit is contained in:
@@ -382,4 +382,82 @@ public sealed class RaftNodeTests
|
||||
raft.XferCampaign();
|
||||
raft.Vote.ShouldNotBeNull();
|
||||
}
|
||||
|
||||
[Fact] // T:2616
|
||||
public void NRGSimple_ShouldSucceed()
|
||||
{
|
||||
var raft = new Raft { Csz = 1, Qn = 1, StateValue = (int)RaftState.Follower };
|
||||
raft.CampaignInternal(TimeSpan.FromMilliseconds(5)).ShouldBeNull();
|
||||
raft.State().ShouldBe(RaftState.Candidate);
|
||||
}
|
||||
|
||||
[Fact] // T:2620
|
||||
public void NRGRecoverFromFollowingNoLeader_ShouldSucceed()
|
||||
{
|
||||
var raft = new Raft { StateValue = (int)RaftState.Follower, Term_ = 3 };
|
||||
raft.ProcessAppendEntry(new AppendEntry { Leader = string.Empty, TermV = 3, Commit = 0, PIndex = 0 });
|
||||
raft.State().ShouldBe(RaftState.Follower);
|
||||
}
|
||||
|
||||
[Fact] // T:2622
|
||||
public void NRGObserverMode_ShouldSucceed()
|
||||
{
|
||||
var raft = new Raft { StateValue = (int)RaftState.Follower };
|
||||
raft.SetObserverInternal(true);
|
||||
raft.IsObserver().ShouldBeTrue();
|
||||
}
|
||||
|
||||
[Fact] // T:2624
|
||||
public void NRGSimpleElection_ShouldSucceed()
|
||||
{
|
||||
var raft = new Raft { Csz = 1, Qn = 1, StateValue = (int)RaftState.Follower };
|
||||
raft.CampaignInternal(TimeSpan.FromMilliseconds(10)).ShouldBeNull();
|
||||
raft.State().ShouldBe(RaftState.Candidate);
|
||||
}
|
||||
|
||||
[Fact] // T:2627
|
||||
public void NRGStepDownOnSameTermDoesntClearVote_ShouldSucceed()
|
||||
{
|
||||
var raft = new Raft { Vote = "N2", Term_ = 10, StateValue = (int)RaftState.Leader };
|
||||
raft.StepDown("N2");
|
||||
raft.Term_.ShouldBe(10UL);
|
||||
raft.Vote.ShouldBe("N2");
|
||||
}
|
||||
|
||||
[Fact] // T:2628
|
||||
public void NRGUnsuccessfulVoteRequestDoesntResetElectionTimer_ShouldSucceed()
|
||||
{
|
||||
var raft = new Raft { Term_ = 10, PTerm = 10, PIndex = 10 };
|
||||
var granted = raft.ProcessVoteRequest(new VoteRequest
|
||||
{
|
||||
TermV = 10,
|
||||
LastTerm = 1,
|
||||
LastIndex = 1,
|
||||
Candidate = "N2",
|
||||
});
|
||||
granted.ShouldBeFalse();
|
||||
}
|
||||
|
||||
[Fact] // T:2630
|
||||
public void NRGInvalidTAVDoesntPanic_ShouldSucceed()
|
||||
{
|
||||
var raft = new Raft();
|
||||
var encoded = new VoteRequest { Candidate = "N1", TermV = 1, LastIndex = 0, LastTerm = 0 }.Encode();
|
||||
Should.NotThrow(() => raft.DecodeVoteRequest(encoded));
|
||||
}
|
||||
|
||||
[Fact] // T:2631
|
||||
public void NRGAssumeHighTermAfterCandidateIsolation_ShouldSucceed()
|
||||
{
|
||||
var raft = new Raft { Term_ = 5, StateValue = (int)RaftState.Candidate };
|
||||
raft.ProcessAppendEntry(new AppendEntry { Leader = "N2", TermV = 7, Commit = 1, PIndex = 1 });
|
||||
raft.Term_.ShouldBeGreaterThanOrEqualTo(7UL);
|
||||
}
|
||||
|
||||
[Fact] // T:2634
|
||||
public void NRGSystemClientCleanupFromAccount_ShouldSucceed()
|
||||
{
|
||||
var raft = new Raft { StateValue = (int)RaftState.Follower };
|
||||
raft.GetTrafficAccountName().ShouldNotBeNull();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user