diff options
author | Nasser Grainawi <nasser@codeaurora.org> | 2020-10-28 10:13:20 -0600 |
---|---|---|
committer | Nasser Grainawi <nasser@codeaurora.org> | 2020-10-28 10:13:20 -0600 |
commit | c399e6521e207c12e5fe0150399d93d5dae93637 (patch) | |
tree | fa55014665d0e832c8b0840d37627f2844da162c | |
parent | 7c66e0cc4c7925a744b1c218e9a275cd72f771d1 (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
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() |