use of org.neo4j.time.FakeClock in project neo4j by neo4j.
the class IdleChannelReaperTest method shouldNotTryToCloseAChannelThatWasRecentlyActive.
@Test
public void shouldNotTryToCloseAChannelThatWasRecentlyActive() {
// given
FakeClock clock = Clocks.fakeClock();
ChannelCloser channelCloser = mock(ChannelCloser.class);
IdleChannelReaper idleChannelReaper = new IdleChannelReaper(channelCloser, NO_LOGGING, clock, THRESHOLD);
Channel channel = mock(Channel.class);
RequestContext request = dummyRequestContext();
idleChannelReaper.add(channel, request);
// when
clock.forward(THRESHOLD + 100, TimeUnit.MILLISECONDS);
idleChannelReaper.update(channel);
idleChannelReaper.run();
// then
verifyNoMoreInteractions(channelCloser);
}
use of org.neo4j.time.FakeClock in project neo4j by neo4j.
the class TransactionStateMachineSPITest method throwsWhenTxAwaitDurationExpires.
@Test
public void throwsWhenTxAwaitDurationExpires() throws Exception {
long lastClosedTransactionId = 100;
TransactionIdStore txIdStore = fixedTxIdStore(lastClosedTransactionId);
Duration txAwaitDuration = Duration.ofSeconds(42);
FakeClock clock = new FakeClock();
AvailabilityGuard availabilityGuard = spy(new AvailabilityGuard(clock, NullLog.getInstance()));
when(availabilityGuard.isAvailable()).then(invocation -> {
boolean available = (boolean) invocation.callRealMethod();
clock.forward(txAwaitDuration.getSeconds() + 1, SECONDS);
return available;
});
TransactionStateMachineSPI txSpi = createTxSpi(txIdStore, txAwaitDuration, availabilityGuard, clock);
Future<Void> result = otherThread.execute(state -> {
txSpi.awaitUpToDate(lastClosedTransactionId + 42);
return null;
});
try {
result.get(20, SECONDS);
} catch (Exception e) {
assertThat(e, instanceOf(ExecutionException.class));
assertThat(e.getCause(), instanceOf(TransactionFailureException.class));
}
}
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));
}
Aggregations