summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNasser Grainawi <nasser@codeaurora.org>2020-10-28 10:13:20 -0600
committerNasser Grainawi <nasser@codeaurora.org>2020-10-28 10:13:20 -0600
commitc399e6521e207c12e5fe0150399d93d5dae93637 (patch)
treefa55014665d0e832c8b0840d37627f2844da162c
parent7c66e0cc4c7925a744b1c218e9a275cd72f771d1 (diff)
Move shouldCleanupTasksAfterNewProjectReplication test
This test is focused on the storage level, so move it to ReplicationStorageIT. Slightly improve it to use the new best practices for specifying test timeouts. Change-Id: I0ef708ab7813ee09d6f115d3151d2d12b9984a80
-rw-r--r--src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationDaemon.java13
-rw-r--r--src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java61
-rw-r--r--src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationStorageIT.java19
3 files changed, 32 insertions, 61 deletions
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationDaemon.java b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationDaemon.java
index f393036..815f140 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationDaemon.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationDaemon.java
@@ -50,8 +50,13 @@ public class ReplicationDaemon extends LightweightPluginDaemonTest {
protected static final int TEST_REPLICATION_DELAY_SECONDS = 1;
protected static final int TEST_REPLICATION_RETRY_MINUTES = 1;
protected static final int TEST_PUSH_TIME_SECONDS = 1;
+ protected static final int TEST_PROJECT_CREATION_SECONDS = 10;
protected static final Duration TEST_PUSH_TIMEOUT =
Duration.ofSeconds(TEST_REPLICATION_DELAY_SECONDS + TEST_PUSH_TIME_SECONDS);
+ protected static final Duration TEST_NEW_PROJECT_TIMEOUT =
+ Duration.ofSeconds(
+ (TEST_REPLICATION_DELAY_SECONDS + TEST_REPLICATION_RETRY_MINUTES * 60)
+ + TEST_PROJECT_CREATION_SECONDS);
@Inject protected SitePaths sitePaths;
@Inject private ProjectOperations projectOperations;
@@ -166,4 +171,12 @@ public class ReplicationDaemon extends LightweightPluginDaemonTest {
protected <T> T getInstance(Class<T> classObj) {
return plugin.getSysInjector().getInstance(classObj);
}
+
+ protected boolean nonEmptyProjectExists(Project.NameKey name) {
+ try (Repository r = repoManager.openRepository(name)) {
+ return !r.getAllRefsByPeeledObjectId().isEmpty();
+ } catch (Exception e) {
+ return false;
+ }
+ }
}
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 391c62d..e62f85a 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java
@@ -22,18 +22,13 @@ import com.google.gerrit.acceptance.PushOneCommit.Result;
import com.google.gerrit.acceptance.TestPlugin;
import com.google.gerrit.acceptance.UseLocalDisk;
import com.google.gerrit.entities.Project;
-import com.google.gerrit.extensions.annotations.PluginData;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.api.projects.BranchInput;
import com.google.gerrit.extensions.common.ProjectInfo;
import com.google.gerrit.extensions.events.ProjectDeletedListener;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.inject.Inject;
-import com.google.inject.Key;
import java.io.IOException;
-import java.nio.file.DirectoryStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
import java.time.Duration;
import java.util.function.Supplier;
import org.eclipse.jgit.lib.Constants;
@@ -50,30 +45,11 @@ import org.junit.Test;
name = "replication",
sysModule = "com.googlesource.gerrit.plugins.replication.ReplicationModule")
public class ReplicationIT extends ReplicationDaemon {
- private static final int TEST_PROJECT_CREATION_SECONDS = 10;
private static final Duration TEST_TIMEOUT =
Duration.ofSeconds(
(TEST_REPLICATION_DELAY_SECONDS + TEST_REPLICATION_RETRY_MINUTES * 60) + 1);
- private static final Duration TEST_NEW_PROJECT_TIMEOUT =
- Duration.ofSeconds(
- (TEST_REPLICATION_DELAY_SECONDS + TEST_REPLICATION_RETRY_MINUTES * 60)
- + TEST_PROJECT_CREATION_SECONDS);
-
@Inject private DynamicSet<ProjectDeletedListener> deletedListeners;
- private Path pluginDataDir;
- private Path storagePath;
- private ReplicationTasksStorage tasksStorage;
-
- @Override
- public void setUpTestPlugin() throws Exception {
- super.setUpTestPlugin();
-
- pluginDataDir = plugin.getSysInjector().getInstance(Key.get(Path.class, PluginData.class));
- storagePath = pluginDataDir.resolve("ref-updates");
- tasksStorage = plugin.getSysInjector().getInstance(ReplicationTasksStorage.class);
- cleanupReplicationTasks();
- }
@Test
public void shouldReplicateNewProject() throws Exception {
@@ -374,19 +350,6 @@ public class ReplicationIT extends ReplicationDaemon {
}
}
- @Test
- public void shouldCleanupTasksAfterNewProjectReplication() throws Exception {
- setReplicationDestination("task_cleanup_project", "replica", ALL_PROJECTS);
- config.setInt("remote", "task_cleanup_project", "replicationRetry", 0);
- config.save();
- reloadConfig();
- assertThat(tasksStorage.listRunning()).hasSize(0);
- Project.NameKey sourceProject = createTestProject("task_cleanup_project");
-
- waitUntil(() -> nonEmptyProjectExists(Project.nameKey(sourceProject + "replica.git")));
- waitUntil(() -> tasksStorage.listRunning().size() == 0);
- }
-
private Ref getRef(Repository repo, String branchName) throws IOException {
return repo.getRefDatabase().exactRef(branchName);
}
@@ -417,30 +380,6 @@ public class ReplicationIT extends ReplicationDaemon {
return getInstance(ReplicationQueue.class);
}
- public void cleanupReplicationTasks() throws IOException {
- cleanupReplicationTasks(storagePath);
- }
-
- private void cleanupReplicationTasks(Path basePath) throws IOException {
- try (DirectoryStream<Path> files = Files.newDirectoryStream(basePath)) {
- for (Path path : files) {
- if (Files.isDirectory(path)) {
- cleanupReplicationTasks(path);
- } else {
- path.toFile().delete();
- }
- }
- }
- }
-
- private boolean nonEmptyProjectExists(Project.NameKey name) {
- try (Repository r = repoManager.openRepository(name)) {
- return !r.getAllRefsByPeeledObjectId().isEmpty();
- } catch (Exception e) {
- return false;
- }
- }
-
private ObjectId createNewBranchWithoutPush(String fromBranch, String newBranch)
throws Exception {
try (Repository repo = repoManager.openRepository(project);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationStorageIT.java b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationStorageIT.java
index c0ae479..991c045 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationStorageIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationStorageIT.java
@@ -24,6 +24,7 @@ import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.api.projects.BranchInput;
import com.googlesource.gerrit.plugins.replication.ReplicationTasksStorage.ReplicateRefUpdate;
import java.net.URISyntaxException;
+import java.time.Duration;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
@@ -41,6 +42,9 @@ import org.junit.Test;
name = "replication",
sysModule = "com.googlesource.gerrit.plugins.replication.ReplicationModule")
public class ReplicationStorageIT extends ReplicationDaemon {
+ private static final int TEST_TASK_FINISH_SECONDS = 1;
+ protected static final Duration TEST_TASK_FINISH_TIMEOUT =
+ Duration.ofSeconds(TEST_TASK_FINISH_SECONDS);
protected ReplicationTasksStorage tasksStorage;
@Override
@@ -257,6 +261,21 @@ public class ReplicationStorageIT extends ReplicationDaemon {
assertThat(listWaitingReplicationTasks(branchToDelete)).hasSize(1);
}
+ @Test
+ public void shouldCleanupTasksAfterNewProjectReplication() throws Exception {
+ setReplicationDestination("task_cleanup_project", "replica", ALL_PROJECTS);
+ config.setInt("remote", "task_cleanup_project", "replicationRetry", 0);
+ config.save();
+ reloadConfig();
+ assertThat(tasksStorage.listRunning()).hasSize(0);
+ Project.NameKey sourceProject = createTestProject("task_cleanup_project");
+
+ WaitUtil.waitUntil(
+ () -> nonEmptyProjectExists(Project.nameKey(sourceProject + "replica.git")),
+ TEST_NEW_PROJECT_TIMEOUT);
+ WaitUtil.waitUntil(() -> tasksStorage.listRunning().size() == 0, TEST_TASK_FINISH_TIMEOUT);
+ }
+
private Stream<ReplicateRefUpdate> waitingChangeReplicationTasksForRemote(
String changeRef, String remote) {
return tasksStorage.listWaiting().stream()