use of org.neo4j.causalclustering.core.consensus.membership.MembershipEntry in project neo4j by neo4j.
the class RaftMachineTest method shouldNotBecomeLeaderOnMultipleVotesFromSameMember.
@Test
public void shouldNotBecomeLeaderOnMultipleVotesFromSameMember() throws Exception {
// Given
FakeClock fakeClock = Clocks.fakeClock();
ControlledRenewableTimeoutService timeouts = new ControlledRenewableTimeoutService(fakeClock);
RaftMachine raft = new RaftMachineBuilder(myself, 3, RaftTestMemberSetBuilder.INSTANCE).timeoutService(timeouts).clock(fakeClock).build();
raft.installCoreState(new RaftCoreState(new MembershipEntry(0, asSet(myself, member1, member2, member3, member4))));
raft.startTimers();
timeouts.invokeTimeout(ELECTION);
// When
raft.handle(voteResponse().from(member1).term(1).grant().build());
raft.handle(voteResponse().from(member1).term(1).grant().build());
// Then
assertThat(raft.isLeader(), is(false));
}
use of org.neo4j.causalclustering.core.consensus.membership.MembershipEntry in project neo4j by neo4j.
the class RaftMachineTest method shouldNotBecomeLeaderByVotesFromFutureTerm.
@Test
public void shouldNotBecomeLeaderByVotesFromFutureTerm() throws Exception {
// Given
FakeClock fakeClock = Clocks.fakeClock();
ControlledRenewableTimeoutService timeouts = new ControlledRenewableTimeoutService(fakeClock);
RaftMachine raft = new RaftMachineBuilder(myself, 3, RaftTestMemberSetBuilder.INSTANCE).timeoutService(timeouts).clock(fakeClock).build();
raft.installCoreState(new RaftCoreState(new MembershipEntry(0, asSet(myself, member1, member2))));
raft.startTimers();
timeouts.invokeTimeout(ELECTION);
// When
raft.handle(voteResponse().from(member1).term(2).grant().build());
raft.handle(voteResponse().from(member2).term(2).grant().build());
assertThat(raft.isLeader(), is(false));
assertEquals(raft.term(), 2L);
}
use of org.neo4j.causalclustering.core.consensus.membership.MembershipEntry in project neo4j by neo4j.
the class RaftMachineTest method shouldNotBecomeLeaderByVotesFromOldTerm.
@Test
public void shouldNotBecomeLeaderByVotesFromOldTerm() throws Exception {
// Given
FakeClock fakeClock = Clocks.fakeClock();
ControlledRenewableTimeoutService timeouts = new ControlledRenewableTimeoutService(fakeClock);
RaftMachine raft = new RaftMachineBuilder(myself, 3, RaftTestMemberSetBuilder.INSTANCE).timeoutService(timeouts).clock(fakeClock).build();
raft.installCoreState(new RaftCoreState(new MembershipEntry(0, asSet(myself, member1, member2))));
raft.startTimers();
timeouts.invokeTimeout(ELECTION);
// When
raft.handle(voteResponse().from(member1).term(0).grant().build());
raft.handle(voteResponse().from(member2).term(0).grant().build());
// Then
assertThat(raft.isLeader(), is(false));
}
use of org.neo4j.causalclustering.core.consensus.membership.MembershipEntry in project neo4j by neo4j.
the class RaftMachineTest method shouldNotBecomeLeaderWhenMembersVoteNo.
@Test
public void shouldNotBecomeLeaderWhenMembersVoteNo() throws Exception {
// Given
FakeClock fakeClock = Clocks.fakeClock();
ControlledRenewableTimeoutService timeouts = new ControlledRenewableTimeoutService(fakeClock);
RaftMachine raft = new RaftMachineBuilder(myself, 3, RaftTestMemberSetBuilder.INSTANCE).timeoutService(timeouts).clock(fakeClock).build();
raft.installCoreState(new RaftCoreState(new MembershipEntry(0, asSet(myself, member1, member2))));
raft.startTimers();
timeouts.invokeTimeout(ELECTION);
// When
raft.handle(voteResponse().from(member1).term(1).deny().build());
raft.handle(voteResponse().from(member2).term(1).deny().build());
// Then
assertThat(raft.isLeader(), is(false));
}
use of org.neo4j.causalclustering.core.consensus.membership.MembershipEntry in project neo4j by neo4j.
the class RaftMachineTest method shouldMonitorLeaderNotFound.
@Test
public void shouldMonitorLeaderNotFound() throws Exception {
// Given
ControlledRenewableTimeoutService timeouts = new ControlledRenewableTimeoutService();
Monitors monitors = new Monitors();
LeaderNotFoundMonitor leaderNotFoundMonitor = new StubLeaderNotFoundMonitor();
monitors.addMonitorListener(leaderNotFoundMonitor);
RaftMachine raft = new RaftMachineBuilder(myself, 3, RaftTestMemberSetBuilder.INSTANCE).timeoutService(timeouts).monitors(monitors).build();
raft.installCoreState(new RaftCoreState(new MembershipEntry(0, asSet(myself, member1, member2))));
try {
// When
// There is no leader
raft.getLeader();
fail("Should have thrown exception");
}// Then
catch (NoLeaderFoundException e) {
// expected
assertEquals(1, leaderNotFoundMonitor.leaderNotFoundExceptions());
}
}
Aggregations