batch33 task6 port wave T2 raft tests

This commit is contained in:
Joseph Doherty
2026-02-28 23:05:22 -05:00
parent 0bdccc839c
commit cbc6ff7144
2 changed files with 78 additions and 0 deletions

View File

@@ -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();
}
}

Binary file not shown.