private Map<Keyword, Object> runJepsenChecker(Checker ... checkers) { JepsenHistoryChecker jepsenChecker = new JepsenHistoryChecker(checkers); return jepsenChecker.checkClojureHistory(ImmutableList.of(INFO_EVENT)); }
@Test public void historyWithUnrecognisedShouldThrow() { Checker checker = mock(Checker.class); JepsenHistoryChecker jepsenChecker = new JepsenHistoryChecker(checker); assertThatThrownBy(() -> jepsenChecker.checkClojureHistory(ImmutableList.of(UNRECOGNISED_EVENT))) .isInstanceOf(Exception.class); }
@Test public void correctExampleHistoryShouldReturnValidAndNoErrors() throws IOException { List<Map<Keyword, ?>> convertedAllEvents = getClojureMapFromFile("correct_history.json"); Map<Keyword, Object> results = JepsenHistoryCheckers.createWithTimestampCheckers() .checkClojureHistory(convertedAllEvents); assertThat(results).containsEntry(Keyword.intern("valid?"), true); assertThat(results).containsEntry(Keyword.intern("errors"), ImmutableList.of()); }
@Test public void correctLockTestHistoryShouldReturnValidAndNoErrors() throws IOException { List<Map<Keyword, ?>> convertedAllEvents = getClojureMapFromFile("lock_test_without_nemesis.json"); Map<Keyword, Object> results = JepsenHistoryCheckers.createWithLockCheckers() .checkClojureHistory(convertedAllEvents); assertThat(results).containsEntry(Keyword.intern("valid?"), true); assertThat(results).containsEntry(Keyword.intern("errors"), ImmutableList.of()); }
@Test public void livenessFailingHistoryShouldReturnInvalidWithNemesisErrors() throws IOException { List<Map<Keyword, ?>> convertedAllEvents = getClojureMapFromFile("liveness_failing_history.json"); Map<Keyword, Object> results = JepsenHistoryCheckers.createWithCheckers( ImmutableList.<Supplier<Checker>>builder() .addAll(JepsenHistoryCheckers.TIMESTAMP_CHECKERS) .add(NemesisResilienceChecker::new) .build()) .checkClojureHistory(convertedAllEvents); Map<Keyword, ?> nemesisStartEventMap = ImmutableMap.of( Keyword.intern("f"), "start", Keyword.intern("process"), JepsenConstants.NEMESIS_PROCESS, Keyword.intern("type"), "info", Keyword.intern("value"), "start!", Keyword.intern("time"), 18784227842L); Map<Keyword, ?> nemesisStopEventMap = ImmutableMap.of( Keyword.intern("f"), "stop", Keyword.intern("process"), JepsenConstants.NEMESIS_PROCESS, Keyword.intern("type"), "info", Keyword.intern("value"), "stop!", Keyword.intern("time"), 18805796986L); List<Map<Keyword, ?>> expected = ImmutableList.of(nemesisStartEventMap, nemesisStopEventMap); assertThat(results).containsEntry(Keyword.intern("valid?"), false); assertThat(results).containsEntry(Keyword.intern("errors"), expected); }