From aba0d645c49f1de5b26a19f80b5a3b9ad8833a61 Mon Sep 17 00:00:00 2001 From: Edwin Kempin Date: Thu, 18 May 2017 16:09:21 +0200 Subject: [PATCH] Add test to abandon inactive open changes This increases the test coverage of AbandonUtil from 15% to 75%. Change-Id: Ifc1c3c98a0e9557f568a0ea4643e572dd0af200d Signed-off-by: Edwin Kempin --- .../acceptance/api/change/AbandonIT.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/AbandonIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/AbandonIT.java index e3357febd7..cb9d705224 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/AbandonIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/AbandonIT.java @@ -16,10 +16,14 @@ package com.google.gerrit.acceptance.api.change; import static com.google.common.truth.Truth.assertThat; import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS; +import static java.util.concurrent.TimeUnit.HOURS; +import static java.util.concurrent.TimeUnit.SECONDS; +import static java.util.stream.Collectors.toList; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.gerrit.acceptance.AbstractDaemonTest; +import com.google.gerrit.acceptance.GerritConfig; import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.common.data.Permission; import com.google.gerrit.extensions.client.ChangeStatus; @@ -28,13 +32,19 @@ import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.server.CurrentUser; +import com.google.gerrit.server.change.AbandonUtil; import com.google.gerrit.server.project.ChangeControl; +import com.google.gerrit.server.query.change.ChangeData; +import com.google.gerrit.testutil.TestTimeUtil; +import com.google.inject.Inject; import java.util.List; import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository; import org.eclipse.jgit.junit.TestRepository; import org.junit.Test; public class AbandonIT extends AbstractDaemonTest { + @Inject private AbandonUtil abandonUtil; + @Test public void abandon() throws Exception { PushOneCommit.Result r = createChange(); @@ -108,6 +118,30 @@ public class AbandonIT extends AbstractDaemonTest { gApi.changes().id(changeId).abandon(); } + @Test + @GerritConfig(name = "changeCleanup.abandonAfter", value = "1w") + public void abandonInactiveOpenChanges() throws Exception { + TestTimeUtil.resetWithClockStep(1, SECONDS); + + // create 2 changes which will be abandoned ... + int id1 = createChange().getChange().getId().get(); + int id2 = createChange().getChange().getId().get(); + + // ... because they are older than 1 week + TestTimeUtil.incrementClock(7 * 24, HOURS); + + // create 1 new change that will not be abandoned + ChangeData cd = createChange().getChange(); + int id3 = cd.getId().get(); + + assertThat(toChangeNumbers(query("is:open"))).containsExactly(id1, id2, id3); + assertThat(query("is:abandoned")).isEmpty(); + + abandonUtil.abandonInactiveOpenChanges(batchUpdateFactory); + assertThat(toChangeNumbers(query("is:open"))).containsExactly(id3); + assertThat(toChangeNumbers(query("is:abandoned"))).containsExactly(id1, id2); + } + @Test public void abandonNotAllowedWithoutPermission() throws Exception { PushOneCommit.Result r = createChange(); @@ -162,4 +196,8 @@ public class AbandonIT extends AbstractDaemonTest { exception.expectMessage("restore not permitted"); gApi.changes().id(changeId).restore(); } + + private List toChangeNumbers(List changes) { + return changes.stream().map(i -> i._number).collect(toList()); + } }