@Test public void shouldSucceedOnNoEvents() { assertNoError(ImmutableList.<Event>of()); }
@Test public void cannotRefreshWithoutLock() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeRefresh(0, PROCESS_1)) .add(TestEventUtils.refreshSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeRefresh(2, PROCESS_1, "alternate_lock")) .add(TestEventUtils.refreshFailure(3, PROCESS_1)) .build(); CheckerResult result = runIsolatedProcessRefreshSuccessChecker(eventList); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(eventList.get(0), eventList.get(1)); }
@Test public void cannotRefreshWithWrongLock() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeRefresh(2, PROCESS_1, "alternate_lock")) .add(TestEventUtils.refreshSuccess(3, PROCESS_1)) .build(); CheckerResult result = runIsolatedProcessRefreshSuccessChecker(eventList); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(eventList.get(2), eventList.get(3)); }
@Test public void canRefreshAfterLockSuccess() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeRefresh(2, PROCESS_1)) .add(TestEventUtils.refreshSuccess(3, PROCESS_1)) .build(); assertNoError(eventList); }
@Test public void cannotRefreshAfterLockFailure() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockFailure(1, PROCESS_1)) .add(TestEventUtils.invokeRefresh(2, PROCESS_1)) .add(TestEventUtils.refreshSuccess(3, PROCESS_1)) .build(); CheckerResult result = runIsolatedProcessRefreshSuccessChecker(eventList); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(eventList.get(1), eventList.get(3)); }
@Test public void onlyLocksSucceeds() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeLock(2, PROCESS_1, "alternate_lock")) .add(TestEventUtils.lockFailure(3, PROCESS_1)) .build(); assertNoError(eventList); }
@Test public void cannotUnlockWithoutLock() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeUnlock(0, PROCESS_1)) .add(TestEventUtils.unlockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeUnlock(2, PROCESS_1, "alternate_lock")) .add(TestEventUtils.unlockFailure(3, PROCESS_1)) .build(); CheckerResult result = runIsolatedProcessRefreshSuccessChecker(eventList); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(eventList.get(0), eventList.get(1)); }
@Test public void canRefreshAfterRefreshSuccess() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeRefresh(2, PROCESS_1)) .add(TestEventUtils.refreshSuccess(3, PROCESS_1)) .add(TestEventUtils.invokeRefresh(4, PROCESS_1)) .add(TestEventUtils.refreshSuccess(5, PROCESS_1)) .build(); assertNoError(eventList); }
@Test public void invalidRefreshResetsState() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeRefresh(0, PROCESS_1)) .add(TestEventUtils.refreshSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeRefresh(3, PROCESS_1)) .add(TestEventUtils.refreshSuccess(4, PROCESS_1)) .build(); CheckerResult result = runIsolatedProcessRefreshSuccessChecker(eventList); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(eventList.get(0), eventList.get(1)); }
@Test public void canResetLockAfterUnlock() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeUnlock(2, PROCESS_1)) .add(TestEventUtils.unlockSuccess(3, PROCESS_1)) .add(TestEventUtils.invokeLock(4, PROCESS_1)) .add(TestEventUtils.lockSuccess(5, PROCESS_1)) .add(TestEventUtils.invokeRefresh(6, PROCESS_1)) .add(TestEventUtils.refreshSuccess(7, PROCESS_1)) .build(); assertNoError(eventList); }
@Test public void cannotRefreshAfterUnlockFailure() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeUnlock(2, PROCESS_1)) .add(TestEventUtils.unlockFailure(3, PROCESS_1)) .add(TestEventUtils.invokeRefresh(4, PROCESS_1)) .add(TestEventUtils.refreshSuccess(5, PROCESS_1)) .build(); CheckerResult result = runIsolatedProcessRefreshSuccessChecker(eventList); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(eventList.get(3), eventList.get(5)); }
@Test public void cannotUnlockTwice() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeUnlock(2, PROCESS_1)) .add(TestEventUtils.unlockSuccess(3, PROCESS_1)) .add(TestEventUtils.invokeUnlock(4, PROCESS_1)) .add(TestEventUtils.unlockSuccess(5, PROCESS_1)) .build(); CheckerResult result = runIsolatedProcessRefreshSuccessChecker(eventList); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(eventList.get(3), eventList.get(5)); }
@Test public void cannotRefreshAfterUnlockSuccess() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeUnlock(2, PROCESS_1)) .add(TestEventUtils.unlockSuccess(3, PROCESS_1)) .add(TestEventUtils.invokeRefresh(4, PROCESS_1)) .add(TestEventUtils.refreshSuccess(5, PROCESS_1)) .build(); CheckerResult result = runIsolatedProcessRefreshSuccessChecker(eventList); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(eventList.get(3), eventList.get(5)); }
@Test public void cannotRefreshAfterRefreshFailure() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeRefresh(2, PROCESS_1)) .add(TestEventUtils.refreshFailure(3, PROCESS_1)) .add(TestEventUtils.invokeRefresh(4, PROCESS_1)) .add(TestEventUtils.refreshSuccess(5, PROCESS_1)) .build(); CheckerResult result = runIsolatedProcessRefreshSuccessChecker(eventList); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(eventList.get(3), eventList.get(5)); }
@Test public void cannotUnlockAfterRefreshFailure() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeRefresh(2, PROCESS_1)) .add(TestEventUtils.refreshFailure(3, PROCESS_1)) .add(TestEventUtils.invokeUnlock(4, PROCESS_1)) .add(TestEventUtils.unlockSuccess(5, PROCESS_1)) .build(); CheckerResult result = runIsolatedProcessRefreshSuccessChecker(eventList); assertThat(result.valid()).isFalse(); assertThat(result.errors()).containsExactly(eventList.get(3), eventList.get(5)); }