diff options
author | Luca Milanesio <luca.milanesio@gmail.com> | 2019-12-06 18:47:04 +0000 |
---|---|---|
committer | David Pursehouse <dpursehouse@collab.net> | 2019-12-07 09:24:49 +0900 |
commit | 505f2c63c41100d215e706c7df6932854d213bd7 (patch) | |
tree | 0a041782bc2b932bb4d9210858ee181ecc4953bd | |
parent | d145d3ce8c1c7c0ea48e6e0e5073611341f33ea0 (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.java | 10 | ||||
-rw-r--r-- | src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java | 6 |
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()); } |