@Test public void doesNotRecordDuplicateLeadershipLost() { recorder.recordRound(ROUND_1_LEADING); recorder.recordRound(ROUND_2_NOT_LEADING); recorder.recordRound(ROUND_2_NOT_LEADING); recorder.recordRound(ROUND_3_NOT_LEADING); verify(events).gainedLeadershipFor(ROUND_1_LEADING); verify(events).lostLeadershipFor(ROUND_1_LEADING); }
@Test public void doesNotRecordDuplicateLeadershipGained() { recorder.recordRound(ROUND_1_LEADING); recorder.recordRound(ROUND_1_LEADING); verify(events).gainedLeadershipFor(ROUND_1_LEADING); }
@Test public void cannotGainLeadershipAfterLosingWithOutOfOrderRounds() { recorder.recordRound(ROUND_1_LEADING); recorder.recordRound(ROUND_3_NOT_LEADING); recorder.recordRound(ROUND_2_LEADING); verify(events).gainedLeadershipFor(ROUND_1_LEADING); verify(events).lostLeadershipFor(ROUND_1_LEADING); }
@Test public void reacordsLeadershipGainedAfterLost() { recorder.recordRound(ROUND_1_LEADING); recorder.recordRound(ROUND_2_NOT_LEADING); recorder.recordRound(ROUND_3_LEADING); verify(events).gainedLeadershipFor(ROUND_1_LEADING); verify(events).lostLeadershipFor(ROUND_1_LEADING); verify(events).gainedLeadershipFor(ROUND_3_LEADING); }
@Test public void recordsLeadershipLost() { recorder.recordRound(ROUND_1_LEADING); recorder.recordRound(ROUND_2_NOT_LEADING); verify(events).gainedLeadershipFor(ROUND_1_LEADING); verify(events).lostLeadershipFor(ROUND_1_LEADING); }
@Test public void recordsLeadershipGained() { recorder.recordRound(ROUND_1_LEADING); verify(events).gainedLeadershipFor(ROUND_1_LEADING); }
@Test public void recordsLeadershipLostBetweenSequentialLeadershipGained() { recorder.recordRound(ROUND_1_LEADING); recorder.recordRound(ROUND_2_LEADING); verify(events).gainedLeadershipFor(ROUND_1_LEADING); verify(events).lostLeadershipFor(ROUND_1_LEADING); verify(events).gainedLeadershipFor(ROUND_2_LEADING); }
@Test public void cannotGainLeadershipAfterLosing() { recorder.recordRound(ROUND_1_LEADING); recorder.recordNotLeading(ROUND_1_LEADING); recorder.recordRound(ROUND_1_LEADING); verify(events).gainedLeadershipFor(ROUND_1_LEADING); verify(events).lostLeadershipFor(ROUND_1_LEADING); }
@Test public void notifiesObserverIfLostLeadership() { recorder.recordRound(ROUND_1_LEADING); recorder.recordRound(ROUND_2_NOT_LEADING); verify(events).gainedLeadershipFor(ROUND_1_LEADING); verify(events).lostLeadershipFor(ROUND_1_LEADING); verify(observer).gainedLeadership(); verify(observer).lostLeadership(); }
@Test public void ignoresNullRounds() { recorder.recordRound(null); recorder.recordNotLeading(null); recorder.recordNoQuorum(null); recorder.recordRound(ROUND_1_LEADING); recorder.recordRound(null); recorder.recordNotLeading(null); recorder.recordNoQuorum(null); verify(events).gainedLeadershipFor(ROUND_1_LEADING); }
@Test public void notifiesObserverIfGainedLeadership() { recorder.recordRound(ROUND_1_LEADING); verify(events).gainedLeadershipFor(ROUND_1_LEADING); verify(observer).gainedLeadership(); }
@Test public void recordsDuplicateNoQuorum() { recorder.recordRound(ROUND_1_LEADING); recorder.recordNoQuorum(ROUND_1_LEADING); recorder.recordNoQuorum(ROUND_1_LEADING); verify(events).gainedLeadershipFor(ROUND_1_LEADING); verify(events, times(2)).noQuorum(ROUND_1_LEADING); }