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);