use of org.neo4j.time.FakeClock in project neo4j by neo4j.
the class TransportWriteThrottleTest method shouldThrowThrottleExceptionWhenMaxDurationIsReached.
@Test
void shouldThrowThrottleExceptionWhenMaxDurationIsReached() throws Exception {
// given
FakeClock clock = Clocks.fakeClock(1, TimeUnit.SECONDS);
TransportThrottle throttle = newThrottleAndInstall(channel, new DefaultThrottleLock(), clock, Duration.ofSeconds(5));
when(channel.isWritable()).thenReturn(false);
// when
Future<Void> future = otherThread.execute(() -> {
throttle.acquire(channel);
return null;
});
otherThread.get().waitUntilWaiting();
clock.forward(6, TimeUnit.SECONDS);
// expect
assertThatExceptionOfType(ExecutionException.class).isThrownBy(() -> future.get(1, TimeUnit.MINUTES)).withCauseInstanceOf(TransportThrottleException.class).withMessageContaining("will be closed because the client did not consume outgoing buffers for");
}
use of org.neo4j.time.FakeClock in project neo4j by neo4j.
the class RaftMachineTest method shouldAppendNewLeaderBarrierAfterBecomingLeader.
@Test
public void shouldAppendNewLeaderBarrierAfterBecomingLeader() throws Exception {
// Given
FakeClock fakeClock = Clocks.fakeClock();
ControlledRenewableTimeoutService timeouts = new ControlledRenewableTimeoutService(fakeClock);
OutboundMessageCollector messages = new OutboundMessageCollector();
InMemoryRaftLog raftLog = new InMemoryRaftLog();
RaftMachine raft = new RaftMachineBuilder(myself, 3, RaftTestMemberSetBuilder.INSTANCE).timeoutService(timeouts).clock(fakeClock).outbound(messages).raftLog(raftLog).build();
raft.installCoreState(new RaftCoreState(new MembershipEntry(0, asSet(myself, member1, member2))));
raft.startTimers();
// When
timeouts.invokeTimeout(ELECTION);
raft.handle(voteResponse().from(member1).term(1).grant().build());
// Then
assertEquals(new NewLeaderBarrier(), readLogEntry(raftLog, raftLog.appendIndex()).content());
}
use of org.neo4j.time.FakeClock in project neo4j by neo4j.
the class RaftMachineTest method shouldThrowExceptionIfReceivesClientRequestWithNoLeaderElected.
@Test
public void shouldThrowExceptionIfReceivesClientRequestWithNoLeaderElected() 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();
try {
// When
// There is no leader
raft.getLeader();
fail("Should have thrown exception");
}// Then
catch (NoLeaderFoundException e) {
// expected
}
}
use of org.neo4j.time.FakeClock 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.time.FakeClock 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);
}
Aggregations