Merge branch 'stable-3.1' into stable-3.2 * stable-3.1: Add Gatling e2e-test for rename-project Add REST endpoint to rename operation Adapt checks to the new rename replication feature Introduce rename replication feature Upgrade bazlets to latest stable-3.1 to build with 3.1.12 API RenamePreconditions: check if project state is not null Upgrade bazlets to latest stable-3.0 to build with 3.0.15 API Upgrade bazlets to latest stable-2.16 to build with 2.16.26 API Upgrade bazlets to latest stable-2.16 to build with 2.16.23 API Conflict resolution for WORKSPACE is to keep the original bazlets version. A new testRenameReplicationViaSshAdminUser test needs to be adapted to stable-3.2 because ProjectCahce.get() method return Optional of ProjectState instead. GerritConfig is moved from acceptance package to acceptance.config. Change-Id: If8b67dd7bca810db1e4d31e5a8d16c5efb7d1f1e
diff --git a/WORKSPACE b/WORKSPACE index b4840fb..4d7507b 100644 --- a/WORKSPACE +++ b/WORKSPACE
@@ -3,7 +3,7 @@ load("//:bazlets.bzl", "load_bazlets") load_bazlets( - commit = "87fd5f0d0a89d01df13deaf2d21a4bdb3bc03cfd", + commit = "8dc0767541f16b35d2136eccebffd9ebe2b81133", #local_path = "/home/<user>/projects/bazlets", )
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java index 9773f96..cac0b30 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java +++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
@@ -34,6 +34,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.List; +import java.util.NoSuchElementException; import java.util.Optional; import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.Option; @@ -88,7 +89,7 @@ } } } - } catch (RestApiException | IOException e) { + } catch (NoSuchElementException | RestApiException | IOException e) { throw die(e); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java index 204c564..cab2957 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java +++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
@@ -25,7 +25,7 @@ import com.google.gerrit.server.project.ProjectResource; import com.google.gerrit.server.restapi.project.ListChildProjects; import com.google.gerrit.server.submit.MergeOpRepoManager; -import com.google.gerrit.server.submit.SubmoduleException; +import com.google.gerrit.server.submit.SubmoduleConflictException; import com.google.gerrit.server.submit.SubmoduleOp; import com.google.inject.Inject; import com.google.inject.Provider; @@ -121,7 +121,7 @@ throw new CannotRenameProjectException(message); } } - } catch (IOException | SubmoduleException e) { + } catch (IOException | SubmoduleConflictException e) { throw new CannotRenameProjectException(e); } }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProjectTest.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProjectTest.java index aa3776f..02c47c5 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProjectTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/LockUnlockProjectTest.java
@@ -34,10 +34,13 @@ @Test public void testLockUnlockSucceeds() throws IOException, ConfigInvalidException { - assertThat(projectCache.get(project).getProject().getState()).isEqualTo(ProjectState.ACTIVE); + assertThat(projectCache.get(project).get().getProject().getState()) + .isEqualTo(ProjectState.ACTIVE); lockUnlockInstance.lock(project); - assertThat(projectCache.get(project).getProject().getState()).isEqualTo(ProjectState.READ_ONLY); + assertThat(projectCache.get(project).get().getProject().getState()) + .isEqualTo(ProjectState.READ_ONLY); lockUnlockInstance.unlock(project); - assertThat(projectCache.get(project).getProject().getState()).isEqualTo(ProjectState.ACTIVE); + assertThat(projectCache.get(project).get().getProject().getState()) + .isEqualTo(ProjectState.ACTIVE); } }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RenameIT.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RenameIT.java index a69ddc9..7b41fb2 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RenameIT.java +++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RenameIT.java
@@ -22,13 +22,13 @@ import static org.mockito.Mockito.when; import com.google.common.cache.Cache; -import com.google.gerrit.acceptance.GerritConfig; import com.google.gerrit.acceptance.LightweightPluginDaemonTest; import com.google.gerrit.acceptance.PushOneCommit.Result; import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.TestPlugin; import com.google.gerrit.acceptance.UseLocalDisk; import com.google.gerrit.acceptance.UseSsh; +import com.google.gerrit.acceptance.config.GerritConfig; import com.google.gerrit.acceptance.testsuite.request.RequestScopeOperations; import com.google.gerrit.entities.Change.Id; import com.google.gerrit.entities.Project; @@ -39,6 +39,7 @@ import com.googlesource.gerrit.plugins.renameproject.RenameProject.Input; import java.io.OutputStream; import java.util.List; +import java.util.Optional; import javax.inject.Named; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.transport.URIish; @@ -71,8 +72,8 @@ adminSshSession.exec(PLUGIN_NAME + " " + project.get() + " " + NEW_PROJECT_NAME); adminSshSession.assertSuccess(); - ProjectState projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME)); - assertThat(projectState).isNotNull(); + Optional<ProjectState> projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME)); + assertThat(projectState.isPresent()).isTrue(); assertThat(queryProvider.get().byProject(project)).isEmpty(); assertThat(queryProvider.get().byProject(Project.nameKey(NEW_PROJECT_NAME))).isNotEmpty(); } @@ -96,8 +97,8 @@ PLUGIN_NAME + " " + project.get() + " " + NEW_PROJECT_NAME + " " + REPLICATION_OPTION); adminSshSession.assertSuccess(); - ProjectState projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME)); - assertThat(projectState).isNotNull(); + Optional<ProjectState> projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME)); + assertThat(projectState.isPresent()).isTrue(); } @Test @@ -108,8 +109,8 @@ adminSshSession.exec(PLUGIN_NAME + " " + project.get() + " " + newProjectName); adminSshSession.assertFailure(); - ProjectState projectState = projectCache.get(Project.nameKey(newProjectName)); - assertThat(projectState).isNull(); + Optional<ProjectState> projectState = projectCache.get(Project.nameKey(newProjectName)); + assertThat(projectState.isPresent()).isFalse(); } @Test @@ -119,8 +120,8 @@ adminSshSession.exec(PLUGIN_NAME + " " + allProjects.get() + " " + NEW_PROJECT_NAME); adminSshSession.assertFailure(); - ProjectState projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME)); - assertThat(projectState).isNull(); + Optional<ProjectState> projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME)); + assertThat(projectState.isPresent()).isFalse(); } @Test @@ -235,8 +236,8 @@ RestResponse r = renameProjectTo(NEW_PROJECT_NAME); r.assertOK(); - ProjectState projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME)); - assertThat(projectState).isNotNull(); + Optional<ProjectState> projectState = projectCache.get(Project.nameKey(NEW_PROJECT_NAME)); + assertThat(projectState.isPresent()).isTrue(); assertThat(queryProvider.get().byProject(project)).isEmpty(); assertThat(queryProvider.get().byProject(Project.nameKey(NEW_PROJECT_NAME))).isNotEmpty(); } @@ -249,8 +250,8 @@ RestResponse r = renameProjectTo(newProjectName); r.assertBadRequest(); - ProjectState projectState = projectCache.get(Project.nameKey(newProjectName)); - assertThat(projectState).isNull(); + Optional<ProjectState> projectState = projectCache.get(Project.nameKey(newProjectName)); + assertThat(projectState.isPresent()).isFalse(); } private RestResponse renameProjectTo(String newName) throws Exception {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java index b6e6057..f33829d 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
@@ -126,22 +126,22 @@ } private void assertReverted() throws Exception { - ProjectState oldProjectState = projectCache.get(oldProjectKey); - assertThat(oldProjectState).isNotNull(); + Optional<ProjectState> oldProjectState = projectCache.get(oldProjectKey); + assertThat(oldProjectState.isPresent()).isTrue(); - ProjectState newProjectState = projectCache.get(newProjectKey); - assertThat(newProjectState).isNull(); + Optional<ProjectState> newProjectState = projectCache.get(newProjectKey); + assertThat(newProjectState.isPresent()).isFalse(); assertThat(queryProvider.get().byProject(oldProjectKey)).isNotEmpty(); assertThat(queryProvider.get().byProject(newProjectKey)).isEmpty(); } private void assertRenamed(Result result) throws Exception { - ProjectState oldProjectState = projectCache.get(oldProjectKey); - assertThat(oldProjectState).isNull(); + Optional<ProjectState> oldProjectState = projectCache.get(oldProjectKey); + assertThat(oldProjectState.isPresent()).isFalse(); - ProjectState newProjectState = projectCache.get(newProjectKey); - assertThat(newProjectState).isNotNull(); + Optional<ProjectState> newProjectState = projectCache.get(newProjectKey); + assertThat(newProjectState.isPresent()).isTrue(); if (renameProject.getStepsPerformed().contains(Step.DATABASE)) { ChangeApi changeApi = gApi.changes().id(NEW_PROJECT_NAME, result.getChange().getId().get());