summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuca Milanesio <luca.milanesio@gmail.com>2019-12-06 18:47:04 +0000
committerDavid Pursehouse <dpursehouse@collab.net>2019-12-07 09:24:49 +0900
commit505f2c63c41100d215e706c7df6932854d213bd7 (patch)
tree0a041782bc2b932bb4d9210858ee181ecc4953bd
parentd145d3ce8c1c7c0ea48e6e0e5073611341f33ea0 (diff)
Fix ReplicationIT flakiness by listing all persistent tasks
Since Change-Id: Ia31329e8 the tasks are stored in three different directories, based on their waiting/running/building status. List all tasks on all directories so that they can be discovered and checked by the integration tests. The flakiness in tests was coming from the possibility that tasks were already migrated into a different state during the wait cycles and thus the test could randomly miss them. Bug: Issue 11843 Change-Id: Ie164b03579cc917f1095cfde6d77cab630f77759
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java10
-rw-r--r--src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java6
2 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java
index b069508..5564925 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java
@@ -134,6 +134,16 @@ public class ReplicationTasksStorage {
return list(createDir(waitingUpdates));
}
+ @VisibleForTesting
+ public List<ReplicateRefUpdate> listRunning() {
+ return list(createDir(runningUpdates));
+ }
+
+ @VisibleForTesting
+ public List<ReplicateRefUpdate> listBuilding() {
+ return list(createDir(buildingUpdates));
+ }
+
private List<ReplicateRefUpdate> list(Path tasks) {
List<ReplicateRefUpdate> results = new ArrayList<>();
try (DirectoryStream<Path> events = Files.newDirectoryStream(tasks)) {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java
index 19269f0..41f93b3 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java
@@ -42,6 +42,7 @@ import java.util.List;
import java.util.Optional;
import java.util.function.Supplier;
import java.util.regex.Pattern;
+import java.util.stream.Stream;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
@@ -399,7 +400,10 @@ public class ReplicationIT extends LightweightPluginDaemonTest {
private List<ReplicateRefUpdate> listReplicationTasks(String refRegex) {
Pattern refmaskPattern = Pattern.compile(refRegex);
- return tasksStorage.listWaiting().stream()
+ return Stream.concat(
+ tasksStorage.listWaiting().stream(),
+ Stream.concat(
+ tasksStorage.listBuilding().stream(), tasksStorage.listRunning().stream()))
.filter(task -> refmaskPattern.matcher(task.ref).matches())
.collect(toList());
}