TasksStorage: Add unit tests for reset() and resetAll() Change-Id: I3a1c33a4257ec02069bfc4dad21479fc0b18f879
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorageTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorageTest.java index a31aa2a..0c4d1a7 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorageTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorageTest.java
@@ -75,8 +75,7 @@ storage.create(REF_UPDATE); storage.start(uriUpdates); storage.finish(uriUpdates); - assertThat(storage.listWaiting()).isEmpty(); - assertThat(storage.listRunning()).isEmpty(); + assertNoIncompleteTasks(storage); } @Test @@ -209,6 +208,106 @@ assertThat(storage.listRunning()).isEmpty(); } + @Test + public void canResetUpdate() throws Exception { + storage.create(REF_UPDATE); + storage.start(uriUpdates); + + storage.reset(uriUpdates); + assertContainsExactly(storage.listWaiting(), REF_UPDATE); + assertThat(storage.listRunning()).isEmpty(); + } + + @Test + public void canCompleteResetUpdate() throws Exception { + storage.create(REF_UPDATE); + storage.start(uriUpdates); + storage.reset(uriUpdates); + + storage.start(uriUpdates); + assertContainsExactly(storage.listRunning(), REF_UPDATE); + assertThat(storage.listWaiting()).isEmpty(); + + storage.finish(uriUpdates); + assertNoIncompleteTasks(storage); + } + + @Test + public void canResetAllEmpty() throws Exception { + storage.resetAll(); + assertNoIncompleteTasks(storage); + } + + @Test + public void canResetAllUpdate() throws Exception { + storage.create(REF_UPDATE); + storage.start(uriUpdates); + + storage.resetAll(); + assertContainsExactly(storage.listWaiting(), REF_UPDATE); + assertThat(storage.listRunning()).isEmpty(); + } + + @Test + public void canCompleteResetAllUpdate() throws Exception { + storage.create(REF_UPDATE); + storage.start(uriUpdates); + storage.resetAll(); + + storage.start(uriUpdates); + assertContainsExactly(storage.listRunning(), REF_UPDATE); + assertThat(storage.listWaiting()).isEmpty(); + + storage.finish(uriUpdates); + assertNoIncompleteTasks(storage); + } + + @Test + public void canResetAllMultipleUpdates() throws Exception { + ReplicateRefUpdate updateB = + new ReplicateRefUpdate( + PROJECT, + REF, + getUrish("ssh://example.com/" + PROJECT + ".git"), // uses ssh not http + REMOTE); + UriUpdates uriUpdatesB = TestUriUpdates.create(updateB); + storage.create(REF_UPDATE); + storage.create(updateB); + storage.start(uriUpdates); + storage.start(uriUpdatesB); + + storage.resetAll(); + assertContainsExactly(storage.listWaiting(), REF_UPDATE, updateB); + } + + @Test + public void canCompleteMultipleResetAllUpdates() throws Exception { + ReplicateRefUpdate updateB = + new ReplicateRefUpdate( + PROJECT, + REF, + getUrish("ssh://example.com/" + PROJECT + ".git"), // uses ssh not http + REMOTE); + UriUpdates uriUpdatesB = TestUriUpdates.create(updateB); + storage.create(REF_UPDATE); + storage.create(updateB); + storage.start(uriUpdates); + storage.start(uriUpdatesB); + storage.resetAll(); + + storage.start(uriUpdates); + assertContainsExactly(storage.listRunning(), REF_UPDATE); + assertContainsExactly(storage.listWaiting(), updateB); + + storage.start(uriUpdatesB); + assertContainsExactly(storage.listRunning(), REF_UPDATE, updateB); + assertThat(storage.listWaiting()).isEmpty(); + + storage.finish(uriUpdates); + storage.finish(uriUpdatesB); + assertNoIncompleteTasks(storage); + } + @Test(expected = Test.None.class /* no exception expected */) public void illegalFinishUncreatedIsGraceful() throws Exception { storage.finish(uriUpdates); @@ -244,6 +343,11 @@ assertThat(storage.listRunning()).isEmpty(); } + private void assertNoIncompleteTasks(ReplicationTasksStorage storage) { + assertThat(storage.listWaiting()).isEmpty(); + assertThat(storage.listRunning()).isEmpty(); + } + private void assertContainsExactly( List<ReplicateRefUpdate> all, ReplicateRefUpdate... refUpdates) { assertThat(all).hasSize(refUpdates.length);