private void verifyRefreshAllowed(OkEvent event, Integer process) { if (!EventUtils.isFailure(event) && !refreshAllowed.contains(process)) { addEventsToErrors(event, process); refreshAllowed.add(process); } }
@Test public void shouldSucceedOnNoEvents() { assertNoError(ImmutableList.<Event>of()); }
@Test public void shouldSucceedOnNoEvents() { assertNoError(ImmutableList.<Event>of()); }
@Test public void shouldSucceedOnNoEvents() { assertNoError(ImmutableList.<Event>of()); }
@Test public void shouldSucceedWhenNoRefreshes() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.invokeLock(1, PROCESS_2)) .add(TestEventUtils.lockSuccess(2, PROCESS_2)) .add(TestEventUtils.lockSuccess(3, PROCESS_1)) .build(); assertNoError(eventList); }
@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 successiveRefreshesShouldSucceed() { ImmutableList<Event> list = 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(list); }
@Test public void allowSimultaneousLockAndRefresh() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(0, PROCESS_1)) .add(TestEventUtils.invokeRefresh(0, PROCESS_1)) .add(TestEventUtils.refreshSuccess(0, PROCESS_1)) .build(); assertNoError(eventList); }
@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 simpleOverlappingRefreshesOnDifferentLocksShouldSucceed() { ImmutableList<Event> list = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeLock(2, PROCESS_2, ALT_LOCK)) .add(TestEventUtils.lockSuccess(3, PROCESS_2)) .add(TestEventUtils.invokeRefresh(4, PROCESS_1)) .add(TestEventUtils.invokeRefresh(4, PROCESS_2, ALT_LOCK)) .add(TestEventUtils.refreshSuccess(5, PROCESS_1)) .add(TestEventUtils.refreshSuccess(5, PROCESS_2)) .build(); assertNoError(list); }
@Test public void canRefreshWhenAnotherProcessHasDifferentLock() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeLock(2, PROCESS_2, "alternate_lock")) .add(TestEventUtils.lockSuccess(3, PROCESS_2)) .add(TestEventUtils.invokeRefresh(4, PROCESS_1)) .add(TestEventUtils.refreshSuccess(5, PROCESS_1)) .build(); assertNoError(eventList); }
@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 simpleNonOverlappingRefreshesShouldSucceed() { ImmutableList<Event> list = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeRefresh(2, PROCESS_1)) .add(TestEventUtils.invokeLock(2, PROCESS_2)) .add(TestEventUtils.lockSuccess(3, PROCESS_2)) .add(TestEventUtils.refreshSuccess(3, PROCESS_1)) .add(TestEventUtils.invokeRefresh(4, PROCESS_2)) .add(TestEventUtils.refreshSuccess(5, PROCESS_2)) .build(); assertNoError(list); }
@Test public void failedLockIntervalCoveredByAnotherProcessSucceeds() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeLock(2, PROCESS_2)) .add(TestEventUtils.lockFailure(3, PROCESS_2)) .add(TestEventUtils.invokeRefresh(4, PROCESS_1)) .add(TestEventUtils.refreshSuccess(5, PROCESS_1)) .build(); assertNoError(eventList); }
@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 anotherProcessCanGrabLockAtLastRefreshInvoke() { ImmutableList<Event> list = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeRefresh(2, PROCESS_1)) .add(TestEventUtils.invokeLock(2, PROCESS_2)) .add(TestEventUtils.lockSuccess(2, PROCESS_2)) .add(TestEventUtils.invokeRefresh(3, PROCESS_2)) .add(TestEventUtils.refreshSuccess(4, PROCESS_2)) .add(TestEventUtils.refreshSuccess(4, PROCESS_1)) .build(); assertNoError(list); }
@Test public void shouldSucceedForIntervalEdgeCases() { ImmutableList<Event> eventList = ImmutableList.<Event>builder() .add(TestEventUtils.invokeLock(0, PROCESS_1)) .add(TestEventUtils.lockSuccess(1, PROCESS_1)) .add(TestEventUtils.invokeLock(1, PROCESS_2)) .add(TestEventUtils.lockSuccess(2, PROCESS_2)) .add(TestEventUtils.invokeLock(3, PROCESS_3)) .add(TestEventUtils.lockSuccess(4, PROCESS_3)) .add(TestEventUtils.invokeRefresh(4, PROCESS_1)) .add(TestEventUtils.refreshSuccess(5, PROCESS_1)) .build(); assertNoError(eventList); }