public static JepsenHistoryChecker createWithLockCheckers() { return createWithCheckers(LOCK_CHECKERS); }
@Test public void canCreateWithTimestampCheckers() { JepsenHistoryChecker checker = JepsenHistoryCheckers.createWithTimestampCheckers(); assertCheckerHasMatchingCheckers(JepsenHistoryCheckers.TIMESTAMP_CHECKERS, checker); assertThat(checker.getCheckers()).hasSize(JepsenHistoryCheckers.TIMESTAMP_CHECKERS.size()); }
@Test public void canCreateWithLockCheckers() { JepsenHistoryChecker checker = JepsenHistoryCheckers.createWithLockCheckers(); assertCheckerHasMatchingCheckers(JepsenHistoryCheckers.LOCK_CHECKERS, checker); assertThat(checker.getCheckers()).hasSize(JepsenHistoryCheckers.LOCK_CHECKERS.size()); }
@Test public void createsDistinctCheckerInstances() { JepsenHistoryChecker checker1 = JepsenHistoryCheckers.createWithTimestampCheckers(); JepsenHistoryChecker checker2 = JepsenHistoryCheckers.createWithTimestampCheckers(); for (Checker checkerFromCheckerOne : checker1.getCheckers()) { for (Checker checkerFromCheckerTwo : checker2.getCheckers()) { assertThat(checkerFromCheckerOne).isNotSameAs(checkerFromCheckerTwo); } } }
@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()); }
public static JepsenHistoryChecker createWithTimestampCheckers() { return createWithCheckers(TIMESTAMP_CHECKERS); }
@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 canCreateWithAlternativeCheckers() { Checker dummyChecker = mock(Checker.class); JepsenHistoryChecker checker = JepsenHistoryCheckers.createWithCheckers( ImmutableList.of(() -> dummyChecker) ); assertThat(checker.getCheckers()).containsExactly(dummyChecker); }
@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); }