Merge branch 'stable-3.1' into stable-3.2 * stable-3.1: Remove disableDeleteForTesting flag ReplicationFanoutIT: Fix invalid replicationDelay setting Make the shouldReplicateNewProject test more reliable Change-Id: I0726006f18c5b832ddbd8f32920b2b5ded137d56
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 4ef0d13..e1b1c0a5 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java
@@ -63,8 +63,6 @@ public class ReplicationTasksStorage { private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - private boolean disableDeleteForTesting; - public static class ReplicateRefUpdate { public final String project; public final String ref; @@ -106,11 +104,6 @@ return new Task(r).create(); } - @VisibleForTesting - public void disableDeleteForTesting(boolean deleteDisabled) { - this.disableDeleteForTesting = deleteDisabled; - } - public synchronized void start(UriUpdates uriUpdates) { for (ReplicateRefUpdate update : uriUpdates.getReplicateRefUpdates()) { new Task(update).start(); @@ -238,11 +231,6 @@ } public void finish() { - if (disableDeleteForTesting) { - logger.atFine().log("DELETE %s %s DISABLED", running, updateLog()); - return; - } - try { logger.atFine().log("DELETE %s %s", running, updateLog()); Files.delete(running);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationFanoutIT.java b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationFanoutIT.java index f06b933..c32a55d 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationFanoutIT.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationFanoutIT.java
@@ -86,7 +86,6 @@ storagePath = pluginDataDir.resolve("ref-updates"); tasksStorage = plugin.getSysInjector().getInstance(ReplicationTasksStorage.class); cleanupReplicationTasks(); - tasksStorage.disableDeleteForTesting(true); } @After @@ -156,13 +155,13 @@ @Test public void shouldCreateIndividualReplicationTasksForEveryRemoteUrlPair() throws Exception { List<String> replicaSuffixes = Arrays.asList("replica1", "replica2"); - createTestProject(project + "replica1"); - createTestProject(project + "replica2"); - setReplicationDestination("foo1", replicaSuffixes, ALL_PROJECTS); - setReplicationDestination("foo2", replicaSuffixes, ALL_PROJECTS); - config.setInt("remote", "foo1", "replicationDelay", TEST_REPLICATION_DELAY * 100); - config.setInt("remote", "foo2", "replicationDelay", TEST_REPLICATION_DELAY * 100); + FileBasedConfig dest1 = setReplicationDestination("foo1", replicaSuffixes, ALL_PROJECTS); + FileBasedConfig dest2 = setReplicationDestination("foo2", replicaSuffixes, ALL_PROJECTS); + dest1.setInt("remote", null, "replicationDelay", TEST_REPLICATION_DELAY * 100); + dest2.setInt("remote", null, "replicationDelay", TEST_REPLICATION_DELAY * 100); + dest1.save(); + dest2.save(); reloadConfig(); createChange(); @@ -191,7 +190,7 @@ setReplicationDestination(remoteName, Arrays.asList(replicaSuffix), project); } - private void setReplicationDestination( + private FileBasedConfig setReplicationDestination( String remoteName, List<String> replicaSuffixes, Optional<String> allProjects) throws IOException { FileBasedConfig remoteConfig = @@ -200,6 +199,7 @@ FS.DETECTED); setReplicationDestination(remoteConfig, replicaSuffixes, allProjects); + return remoteConfig; } private void setAutoReload() throws IOException {
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 4fb0387..9a81488 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java
@@ -76,6 +76,11 @@ Duration.ofSeconds( (TEST_REPLICATION_DELAY + TEST_REPLICATION_RETRY * 60) * TEST_REPLICATION_MAX_RETRIES + 10); + private static final int TEST_PROJECT_CREATION_SECONDS = 10; + + private static final Duration TEST_NEW_PROJECT_TIMEOUT = + Duration.ofSeconds( + (TEST_REPLICATION_DELAY + TEST_REPLICATION_RETRY * 60) + TEST_PROJECT_CREATION_SECONDS); @Inject private SitePaths sitePaths; @Inject private ProjectOperations projectOperations; @@ -108,7 +113,6 @@ tasksStorage = plugin.getSysInjector().getInstance(ReplicationTasksStorage.class); destinationCollection = plugin.getSysInjector().getInstance(DestinationsCollection.class); cleanupReplicationTasks(); - tasksStorage.disableDeleteForTesting(true); } @Test @@ -120,7 +124,9 @@ assertThat(listIncompleteTasks("refs/meta/config")).hasSize(1); - waitUntil(() -> nonEmptyProjectExists(Project.nameKey(sourceProject + "replica.git"))); + WaitUtil.waitUntil( + () -> nonEmptyProjectExists(Project.nameKey(sourceProject + "replica.git")), + TEST_NEW_PROJECT_TIMEOUT); ProjectInfo replicaProject = gApi.projects().name(sourceProject + "replica").get(); assertThat(replicaProject).isNotNull(); @@ -338,8 +344,6 @@ } private void replicateBranchDeletion(boolean mirror) throws Exception { - tasksStorage.disableDeleteForTesting(false); - setReplicationDestination("foo", "replica", ALL_PROJECTS, mirror); reloadConfig(); @@ -445,7 +449,6 @@ @Test public void shouldCleanupTasksAfterNewProjectReplication() throws Exception { - tasksStorage.disableDeleteForTesting(false); setReplicationDestination("task_cleanup_project", "replica", ALL_PROJECTS); config.setInt("remote", "task_cleanup_project", "replicationRetry", 0); config.save(); @@ -459,7 +462,6 @@ @Test public void shouldCleanupBothTasksAndLocksAfterNewProjectReplication() throws Exception { - tasksStorage.disableDeleteForTesting(false); setReplicationDestination("task_cleanup_locks_project", "replica", ALL_PROJECTS); config.setInt("remote", "task_cleanup_locks_project", "replicationRetry", 0); config.save(); @@ -477,7 +479,6 @@ String projectName = "task_cleanup_locks_project_cancelled"; String remoteDestination = "http://invalidurl:9090/"; URIish urish = new URIish(remoteDestination + projectName + ".git"); - tasksStorage.disableDeleteForTesting(false); setReplicationDestination(projectName, "replica", Optional.of(projectName)); // replace correct urls with invalid one to trigger retry @@ -524,7 +525,6 @@ String changeRef = createChange().getPatchSet().refName(); - tasksStorage.disableDeleteForTesting(false); changeReplicationTasksForRemote(tasksStorage.listWaiting().stream(), changeRef, remote1) .forEach( (update) -> { @@ -535,7 +535,6 @@ } catch (URISyntaxException e) { } }); - tasksStorage.disableDeleteForTesting(true); setReplicationDestination(remote1, suffix1, ALL_PROJECTS); setReplicationDestination(remote2, suffix2, ALL_PROJECTS);