@Test public void succeedsWithNoNemesisAction() { assertNoErrors(INVOKE_1, OK_1); }
@Test public void failsWithConsecutiveNemesisStartStop() { assertSimpleNemesisError(NEMESIS_START, NEMESIS_STOP); }
private static void assertSimpleNemesisError(Event... events) { CheckerResult result = runNemesisResilienceChecker(events); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(NEMESIS_START, NEMESIS_STOP); }
@Test public void failsOnDistributedCycle() { CheckerResult result = runNemesisResilienceChecker( NEMESIS_START, INVOKE_1, NEMESIS_STOP, NEMESIS_START_2, OK_1, NEMESIS_STOP_2); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(NEMESIS_START, NEMESIS_STOP, NEMESIS_START_2, NEMESIS_STOP_2); }
@Test public void succeedsWithOneProcessSuccessfulCycle() { assertNoErrors(NEMESIS_START, INVOKE_1, INVOKE_2, OK_1, NEMESIS_STOP); }
@Test public void doesNotObserveCycleWithDifferentProcesses() { assertSimpleNemesisError(NEMESIS_START, INVOKE_1, OK_2, NEMESIS_STOP); }
@Test public void reportsMultipleOffendingNemesisEvents() { CheckerResult result = runNemesisResilienceChecker( NEMESIS_START, NEMESIS_STOP, NEMESIS_START_2, NEMESIS_STOP_2); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(NEMESIS_START, NEMESIS_STOP, NEMESIS_START_2, NEMESIS_STOP_2); }
@Test public void succeedsWithNemesisStopWithoutStart() { assertNoErrors(OK_1, NEMESIS_STOP); }
@Test public void skipsNonNemesisRelatedInfoEvents() { assertSimpleNemesisError(INVOKE_1, NEMESIS_START, IMPOSTOR_START, OK_1, NEMESIS_STOP, IMPOSTOR_STOP); }
@Test public void reportsInnerEventsAsOffending() { CheckerResult result = runNemesisResilienceChecker( NEMESIS_START, NEMESIS_START_2, NEMESIS_STOP, NEMESIS_STOP_2); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(NEMESIS_START_2, NEMESIS_STOP); }
@Test public void succeedsWithAnySuccessfulInvokeOkCycle() { assertNoErrors(NEMESIS_START, INVOKE_1, INVOKE_1, ERROR_1, OK_1, NEMESIS_STOP); }
@Test public void failsWithInvokeBeforeNemesisStart() { assertSimpleNemesisError(INVOKE_1, NEMESIS_START, OK_1, NEMESIS_STOP); }
@Test public void onlyReportsRelevantOffendingEvents() { CheckerResult result = runNemesisResilienceChecker( NEMESIS_START, INVOKE_1, OK_1, NEMESIS_STOP, NEMESIS_START_2, NEMESIS_STOP_2); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(NEMESIS_START_2, NEMESIS_STOP_2); }
@Test public void succeedsWithNoCycleInStopStartWindow() { assertNoErrors(NEMESIS_STOP, NEMESIS_START); }
@Test public void failsWithUnsuccessfulResponse() { assertSimpleNemesisError(NEMESIS_START, INVOKE_1, ERROR_1, NEMESIS_STOP); }
@Test public void failsIfCycleNotBetweenInnermostEvents() { CheckerResult result = runNemesisResilienceChecker( NEMESIS_START, INVOKE_1, NEMESIS_START_2, OK_1, INVOKE_2, NEMESIS_STOP, OK_2, NEMESIS_STOP_2); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(NEMESIS_START_2, NEMESIS_STOP); }
@Test public void succeedsWithNemesisStartWithoutStop() { assertNoErrors(OK_1, NEMESIS_START); }
@Test public void failsWithOkAfterNemesisStop() { assertSimpleNemesisError(NEMESIS_START, INVOKE_1, NEMESIS_STOP, OK_1); }
@Test public void succeedsWithMultipleInvokeOksBetweenNemesisStartStop() { assertNoErrors(NEMESIS_START, INVOKE_1, OK_1, INVOKE_2, OK_2, NEMESIS_STOP); }
@Test public void failsWithCycleNotInNemesisWindow() { assertSimpleNemesisError(INVOKE_1, NEMESIS_START, OK_1, INVOKE_1, NEMESIS_STOP, OK_1); }