batch33 task6 port wave T2 raft tests
This commit is contained in:
@@ -382,4 +382,82 @@ public sealed class RaftNodeTests
|
|||||||
raft.XferCampaign();
|
raft.XferCampaign();
|
||||||
raft.Vote.ShouldNotBeNull();
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
porting.db
BIN
porting.db
Binary file not shown.
Reference in New Issue
Block a user