summaryrefslogtreecommitdiffstats
path: root/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/ConsistencyCheckerIT.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/ConsistencyCheckerIT.java')
-rw-r--r--gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/ConsistencyCheckerIT.java452
1 files changed, 227 insertions, 225 deletions
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/ConsistencyCheckerIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/ConsistencyCheckerIT.java
index e0346b30a5..ed64ce0648 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/ConsistencyCheckerIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/ConsistencyCheckerIT.java
@@ -41,19 +41,20 @@ import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.Sequences;
+import com.google.gerrit.server.account.AccountsUpdate;
import com.google.gerrit.server.change.ChangeInserter;
import com.google.gerrit.server.change.ConsistencyChecker;
import com.google.gerrit.server.change.PatchSetInserter;
import com.google.gerrit.server.config.AnonymousCowardName;
-import com.google.gerrit.server.git.validators.CommitValidators;
import com.google.gerrit.server.notedb.ChangeNoteUtil;
+import com.google.gerrit.server.notedb.ChangeNotes;
import com.google.gerrit.server.notedb.NoteDbChangeState.PrimaryStorage;
-import com.google.gerrit.server.project.ChangeControl;
import com.google.gerrit.server.update.BatchUpdate;
import com.google.gerrit.server.update.BatchUpdateOp;
import com.google.gerrit.server.update.ChangeContext;
import com.google.gerrit.server.update.RepoContext;
import com.google.gerrit.testutil.InMemoryRepositoryManager;
+import com.google.gerrit.testutil.NoteDbMode;
import com.google.gerrit.testutil.TestChanges;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
@@ -68,20 +69,17 @@ import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.transport.ReceiveCommand;
import org.junit.Before;
import org.junit.Test;
@NoHttpd
public class ConsistencyCheckerIT extends AbstractDaemonTest {
- @Inject private ChangeControl.GenericFactory changeControlFactory;
+ @Inject private ChangeNotes.Factory changeNotesFactory;
@Inject private Provider<ConsistencyChecker> checkerProvider;
@Inject private IdentifiedUser.GenericFactory userFactory;
- @Inject private BatchUpdate.Factory updateFactory;
-
@Inject private ChangeInserter.Factory changeInserterFactory;
@Inject private PatchSetInserter.Factory patchSetInserterFactory;
@@ -92,10 +90,17 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
@Inject private Sequences sequences;
+ @Inject private AccountsUpdate.Server accountsUpdate;
+
private RevCommit tip;
private Account.Id adminId;
private ConsistencyChecker checker;
+ private void assumeNoteDbDisabled() {
+ assume().that(notesMigration.readChanges()).isFalse();
+ assume().that(NoteDbMode.get()).isNotEqualTo(NoteDbMode.CHECK);
+ }
+
@Before
public void setUp() throws Exception {
// Ignore client clone of project; repurpose as server-side TestRepository.
@@ -113,47 +118,47 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
@Test
public void validMergedChange() throws Exception {
- ChangeControl ctl = mergeChange(incrementPatchSet(insertChange()));
- assertNoProblems(ctl, null);
+ ChangeNotes notes = mergeChange(incrementPatchSet(insertChange()));
+ assertNoProblems(notes, null);
}
@Test
public void missingOwner() throws Exception {
- TestAccount owner = accounts.create("missing");
- ChangeControl ctl = insertChange(owner);
- db.accounts().deleteKeys(singleton(owner.getId()));
+ TestAccount owner = accountCreator.create("missing");
+ ChangeNotes notes = insertChange(owner);
+ accountsUpdate.create().deleteByKey(owner.getId());
- assertProblems(ctl, null, problem("Missing change owner: " + owner.getId()));
+ assertProblems(notes, null, problem("Missing change owner: " + owner.getId()));
}
@Test
public void missingRepo() throws Exception {
// NoteDb can't have a change without a repo.
- assume().that(notesMigration.enabled()).isFalse();
+ assumeNoteDbDisabled();
- ChangeControl ctl = insertChange();
- Project.NameKey name = ctl.getProject().getNameKey();
+ ChangeNotes notes = insertChange();
+ Project.NameKey name = notes.getProjectName();
((InMemoryRepositoryManager) repoManager).deleteRepository(name);
-
- assertProblems(ctl, null, problem("Destination repository not found: " + name));
+ assertThat(checker.check(notes, null).problems())
+ .containsExactly(problem("Destination repository not found: " + name));
}
@Test
public void invalidRevision() throws Exception {
// NoteDb always parses the revision when inserting a patch set, so we can't
// create an invalid patch set.
- assume().that(notesMigration.enabled()).isFalse();
+ assumeNoteDbDisabled();
- ChangeControl ctl = insertChange();
+ ChangeNotes notes = insertChange();
PatchSet ps =
newPatchSet(
- ctl.getChange().currentPatchSetId(),
+ notes.getChange().currentPatchSetId(),
"fooooooooooooooooooooooooooooooooooooooo",
adminId);
db.patchSets().update(singleton(ps));
assertProblems(
- ctl,
+ notes,
null,
problem("Invalid revision on patch set 1: fooooooooooooooooooooooooooooooooooooooo"));
}
@@ -164,11 +169,11 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
@Test
public void patchSetObjectAndRefMissing() throws Exception {
String rev = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef";
- ChangeControl ctl = insertChange();
- PatchSet ps = insertMissingPatchSet(ctl, rev);
- ctl = reload(ctl);
+ ChangeNotes notes = insertChange();
+ PatchSet ps = insertMissingPatchSet(notes, rev);
+ notes = reload(notes);
assertProblems(
- ctl,
+ notes,
null,
problem("Ref missing: " + ps.getId().toRefName()),
problem("Object missing: patch set 2: deadbeefdeadbeefdeadbeefdeadbeefdeadbeef"));
@@ -177,13 +182,13 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
@Test
public void patchSetObjectAndRefMissingWithFix() throws Exception {
String rev = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef";
- ChangeControl ctl = insertChange();
- PatchSet ps = insertMissingPatchSet(ctl, rev);
- ctl = reload(ctl);
+ ChangeNotes notes = insertChange();
+ PatchSet ps = insertMissingPatchSet(notes, rev);
+ notes = reload(notes);
String refName = ps.getId().toRefName();
assertProblems(
- ctl,
+ notes,
new FixInput(),
problem("Ref missing: " + refName),
problem("Object missing: patch set 2: " + rev));
@@ -191,88 +196,91 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
@Test
public void patchSetRefMissing() throws Exception {
- ChangeControl ctl = insertChange();
+ ChangeNotes notes = insertChange();
testRepo.update(
- "refs/other/foo",
- ObjectId.fromString(psUtil.current(db, ctl.getNotes()).getRevision().get()));
- String refName = ctl.getChange().currentPatchSetId().toRefName();
+ "refs/other/foo", ObjectId.fromString(psUtil.current(db, notes).getRevision().get()));
+ String refName = notes.getChange().currentPatchSetId().toRefName();
deleteRef(refName);
- assertProblems(ctl, null, problem("Ref missing: " + refName));
+ assertProblems(notes, null, problem("Ref missing: " + refName));
}
@Test
public void patchSetRefMissingWithFix() throws Exception {
- ChangeControl ctl = insertChange();
- String rev = psUtil.current(db, ctl.getNotes()).getRevision().get();
+ ChangeNotes notes = insertChange();
+ String rev = psUtil.current(db, notes).getRevision().get();
testRepo.update("refs/other/foo", ObjectId.fromString(rev));
- String refName = ctl.getChange().currentPatchSetId().toRefName();
+ String refName = notes.getChange().currentPatchSetId().toRefName();
deleteRef(refName);
assertProblems(
- ctl, new FixInput(), problem("Ref missing: " + refName, FIXED, "Repaired patch set ref"));
+ notes, new FixInput(), problem("Ref missing: " + refName, FIXED, "Repaired patch set ref"));
assertThat(testRepo.getRepository().exactRef(refName).getObjectId().name()).isEqualTo(rev);
}
@Test
public void patchSetObjectAndRefMissingWithDeletingPatchSet() throws Exception {
- ChangeControl ctl = insertChange();
- PatchSet ps1 = psUtil.current(db, ctl.getNotes());
+ ChangeNotes notes = insertChange();
+ PatchSet ps1 = psUtil.current(db, notes);
String rev2 = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef";
- PatchSet ps2 = insertMissingPatchSet(ctl, rev2);
- ctl = reload(ctl);
+ PatchSet ps2 = insertMissingPatchSet(notes, rev2);
+ notes = reload(notes);
FixInput fix = new FixInput();
fix.deletePatchSetIfCommitMissing = true;
assertProblems(
- ctl,
+ notes,
fix,
problem("Ref missing: " + ps2.getId().toRefName()),
problem("Object missing: patch set 2: " + rev2, FIXED, "Deleted patch set"));
- ctl = reload(ctl);
- assertThat(ctl.getChange().currentPatchSetId().get()).isEqualTo(1);
- assertThat(psUtil.get(db, ctl.getNotes(), ps1.getId())).isNotNull();
- assertThat(psUtil.get(db, ctl.getNotes(), ps2.getId())).isNull();
+ notes = reload(notes);
+ assertThat(notes.getChange().currentPatchSetId().get()).isEqualTo(1);
+ assertThat(psUtil.get(db, notes, ps1.getId())).isNotNull();
+ assertThat(psUtil.get(db, notes, ps2.getId())).isNull();
}
@Test
public void patchSetMultipleObjectsMissingWithDeletingPatchSets() throws Exception {
- ChangeControl ctl = insertChange();
- PatchSet ps1 = psUtil.current(db, ctl.getNotes());
+ ChangeNotes notes = insertChange();
+ PatchSet ps1 = psUtil.current(db, notes);
String rev2 = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef";
- PatchSet ps2 = insertMissingPatchSet(ctl, rev2);
+ PatchSet ps2 = insertMissingPatchSet(notes, rev2);
- ctl = incrementPatchSet(reload(ctl));
- PatchSet ps3 = psUtil.current(db, ctl.getNotes());
+ notes = incrementPatchSet(reload(notes));
+ PatchSet ps3 = psUtil.current(db, notes);
String rev4 = "c0ffeeeec0ffeeeec0ffeeeec0ffeeeec0ffeeee";
- PatchSet ps4 = insertMissingPatchSet(ctl, rev4);
- ctl = reload(ctl);
+ PatchSet ps4 = insertMissingPatchSet(notes, rev4);
+ notes = reload(notes);
FixInput fix = new FixInput();
fix.deletePatchSetIfCommitMissing = true;
assertProblems(
- ctl,
+ notes,
fix,
problem("Ref missing: " + ps2.getId().toRefName()),
problem("Object missing: patch set 2: " + rev2, FIXED, "Deleted patch set"),
problem("Ref missing: " + ps4.getId().toRefName()),
problem("Object missing: patch set 4: " + rev4, FIXED, "Deleted patch set"));
- ctl = reload(ctl);
- assertThat(ctl.getChange().currentPatchSetId().get()).isEqualTo(3);
- assertThat(psUtil.get(db, ctl.getNotes(), ps1.getId())).isNotNull();
- assertThat(psUtil.get(db, ctl.getNotes(), ps2.getId())).isNull();
- assertThat(psUtil.get(db, ctl.getNotes(), ps3.getId())).isNotNull();
- assertThat(psUtil.get(db, ctl.getNotes(), ps4.getId())).isNull();
+ notes = reload(notes);
+ assertThat(notes.getChange().currentPatchSetId().get()).isEqualTo(3);
+ assertThat(psUtil.get(db, notes, ps1.getId())).isNotNull();
+ assertThat(psUtil.get(db, notes, ps2.getId())).isNull();
+ assertThat(psUtil.get(db, notes, ps3.getId())).isNotNull();
+ assertThat(psUtil.get(db, notes, ps4.getId())).isNull();
}
@Test
public void onlyPatchSetObjectMissingWithFix() throws Exception {
Change c = TestChanges.newChange(project, admin.getId(), sequences.nextChangeId());
+
+ // Set review started, mimicking Schema_153, so tests pass with NoteDbMode.CHECK.
+ c.setReviewStarted(true);
+
PatchSet.Id psId = c.currentPatchSetId();
String rev = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef";
PatchSet ps = newPatchSet(psId, rev, adminId);
@@ -300,13 +308,12 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
+ rev
+ "\n");
indexer.index(db, c.getProject(), c.getId());
- IdentifiedUser user = userFactory.create(admin.getId());
- ChangeControl ctl = changeControlFactory.controlFor(db, c.getProject(), c.getId(), user);
+ ChangeNotes notes = changeNotesFactory.create(db, c.getProject(), c.getId());
FixInput fix = new FixInput();
fix.deletePatchSetIfCommitMissing = true;
assertProblems(
- ctl,
+ notes,
fix,
problem("Ref missing: " + ps.getId().toRefName()),
problem(
@@ -314,35 +321,35 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
FIX_FAILED,
"Cannot delete patch set; no patch sets would remain"));
- ctl = reload(ctl);
- assertThat(ctl.getChange().currentPatchSetId().get()).isEqualTo(1);
- assertThat(psUtil.current(db, ctl.getNotes())).isNotNull();
+ notes = reload(notes);
+ assertThat(notes.getChange().currentPatchSetId().get()).isEqualTo(1);
+ assertThat(psUtil.current(db, notes)).isNotNull();
}
@Test
public void currentPatchSetMissing() throws Exception {
// NoteDb can't create a change without a patch set.
- assume().that(notesMigration.enabled()).isFalse();
+ assumeNoteDbDisabled();
- ChangeControl ctl = insertChange();
- db.patchSets().deleteKeys(singleton(ctl.getChange().currentPatchSetId()));
- assertProblems(ctl, null, problem("Current patch set 1 not found"));
+ ChangeNotes notes = insertChange();
+ db.patchSets().deleteKeys(singleton(notes.getChange().currentPatchSetId()));
+ assertProblems(notes, null, problem("Current patch set 1 not found"));
}
@Test
public void duplicatePatchSetRevisions() throws Exception {
- ChangeControl ctl = insertChange();
- PatchSet ps1 = psUtil.current(db, ctl.getNotes());
+ ChangeNotes notes = insertChange();
+ PatchSet ps1 = psUtil.current(db, notes);
String rev = ps1.getRevision().get();
- ctl = incrementPatchSet(ctl, testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev)));
+ notes = incrementPatchSet(notes, testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev)));
- assertProblems(ctl, null, problem("Multiple patch sets pointing to " + rev + ": [1, 2]"));
+ assertProblems(notes, null, problem("Multiple patch sets pointing to " + rev + ": [1, 2]"));
}
@Test
public void missingDestRef() throws Exception {
- ChangeControl ctl = insertChange();
+ ChangeNotes notes = insertChange();
String ref = "refs/heads/master";
// Detach head so we're allowed to delete ref.
@@ -351,16 +358,16 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
ru.setForceUpdate(true);
assertThat(ru.delete()).isEqualTo(RefUpdate.Result.FORCED);
- assertProblems(ctl, null, problem("Destination ref not found (may be new branch): " + ref));
+ assertProblems(notes, null, problem("Destination ref not found (may be new branch): " + ref));
}
@Test
public void mergedChangeIsNotMerged() throws Exception {
- ChangeControl ctl = insertChange();
+ ChangeNotes notes = insertChange();
try (BatchUpdate bu = newUpdate(adminId)) {
bu.addOp(
- ctl.getId(),
+ notes.getChangeId(),
new BatchUpdateOp() {
@Override
public boolean updateChange(ChangeContext ctx) throws OrmException {
@@ -371,12 +378,12 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
});
bu.execute();
}
- ctl = reload(ctl);
+ notes = reload(notes);
- String rev = psUtil.current(db, ctl.getNotes()).getRevision().get();
- ObjectId tip = getDestRef(ctl);
+ String rev = psUtil.current(db, notes).getRevision().get();
+ ObjectId tip = getDestRef(notes);
assertProblems(
- ctl,
+ notes,
null,
problem(
"Patch set 1 ("
@@ -389,14 +396,14 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
@Test
public void newChangeIsMerged() throws Exception {
- ChangeControl ctl = insertChange();
- String rev = psUtil.current(db, ctl.getNotes()).getRevision().get();
+ ChangeNotes notes = insertChange();
+ String rev = psUtil.current(db, notes).getRevision().get();
testRepo
- .branch(ctl.getChange().getDest().get())
+ .branch(notes.getChange().getDest().get())
.update(testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev)));
assertProblems(
- ctl,
+ notes,
null,
problem(
"Patch set 1 ("
@@ -409,14 +416,14 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
@Test
public void newChangeIsMergedWithFix() throws Exception {
- ChangeControl ctl = insertChange();
- String rev = psUtil.current(db, ctl.getNotes()).getRevision().get();
+ ChangeNotes notes = insertChange();
+ String rev = psUtil.current(db, notes).getRevision().get();
testRepo
- .branch(ctl.getChange().getDest().get())
+ .branch(notes.getChange().getDest().get())
.update(testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev)));
assertProblems(
- ctl,
+ notes,
new FixInput(),
problem(
"Patch set 1 ("
@@ -428,38 +435,38 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
FIXED,
"Marked change as merged"));
- ctl = reload(ctl);
- assertThat(ctl.getChange().getStatus()).isEqualTo(Change.Status.MERGED);
- assertNoProblems(ctl, null);
+ notes = reload(notes);
+ assertThat(notes.getChange().getStatus()).isEqualTo(Change.Status.MERGED);
+ assertNoProblems(notes, null);
}
@Test
public void extensionApiReturnsUpdatedValueAfterFix() throws Exception {
- ChangeControl ctl = insertChange();
- String rev = psUtil.current(db, ctl.getNotes()).getRevision().get();
+ ChangeNotes notes = insertChange();
+ String rev = psUtil.current(db, notes).getRevision().get();
testRepo
- .branch(ctl.getChange().getDest().get())
+ .branch(notes.getChange().getDest().get())
.update(testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev)));
- ChangeInfo info = gApi.changes().id(ctl.getId().get()).info();
+ ChangeInfo info = gApi.changes().id(notes.getChangeId().get()).info();
assertThat(info.status).isEqualTo(ChangeStatus.NEW);
- info = gApi.changes().id(ctl.getId().get()).check(new FixInput());
+ info = gApi.changes().id(notes.getChangeId().get()).check(new FixInput());
assertThat(info.status).isEqualTo(ChangeStatus.MERGED);
}
@Test
public void expectedMergedCommitIsLatestPatchSet() throws Exception {
- ChangeControl ctl = insertChange();
- String rev = psUtil.current(db, ctl.getNotes()).getRevision().get();
+ ChangeNotes notes = insertChange();
+ String rev = psUtil.current(db, notes).getRevision().get();
testRepo
- .branch(ctl.getChange().getDest().get())
+ .branch(notes.getChange().getDest().get())
.update(testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev)));
FixInput fix = new FixInput();
fix.expectMergedAs = rev;
assertProblems(
- ctl,
+ notes,
fix,
problem(
"Patch set 1 ("
@@ -471,23 +478,23 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
FIXED,
"Marked change as merged"));
- ctl = reload(ctl);
- assertThat(ctl.getChange().getStatus()).isEqualTo(Change.Status.MERGED);
- assertNoProblems(ctl, null);
+ notes = reload(notes);
+ assertThat(notes.getChange().getStatus()).isEqualTo(Change.Status.MERGED);
+ assertNoProblems(notes, null);
}
@Test
public void expectedMergedCommitNotMergedIntoDestination() throws Exception {
- ChangeControl ctl = insertChange();
- String rev = psUtil.current(db, ctl.getNotes()).getRevision().get();
+ ChangeNotes notes = insertChange();
+ String rev = psUtil.current(db, notes).getRevision().get();
RevCommit commit = testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev));
- testRepo.branch(ctl.getChange().getDest().get()).update(commit);
+ testRepo.branch(notes.getChange().getDest().get()).update(commit);
FixInput fix = new FixInput();
RevCommit other = testRepo.commit().message(commit.getFullMessage()).create();
fix.expectMergedAs = other.name();
assertProblems(
- ctl,
+ notes,
fix,
problem(
"Expected merged commit "
@@ -500,9 +507,9 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
@Test
public void createNewPatchSetForExpectedMergeCommitWithNoChangeId() throws Exception {
- ChangeControl ctl = insertChange();
- String dest = ctl.getChange().getDest().get();
- String rev = psUtil.current(db, ctl.getNotes()).getRevision().get();
+ ChangeNotes notes = insertChange();
+ String dest = notes.getChange().getDest().get();
+ String rev = psUtil.current(db, notes).getRevision().get();
RevCommit commit = testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev));
RevCommit mergedAs =
@@ -511,12 +518,12 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
assertThat(mergedAs.getFooterLines(FooterConstants.CHANGE_ID)).isEmpty();
testRepo.update(dest, mergedAs);
- assertNoProblems(ctl, null);
+ assertNoProblems(notes, null);
FixInput fix = new FixInput();
fix.expectMergedAs = mergedAs.name();
assertProblems(
- ctl,
+ notes,
fix,
problem(
"No patch set found for merged commit " + mergedAs.name(),
@@ -527,20 +534,19 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
FIXED,
"Inserted as patch set 2"));
- ctl = reload(ctl);
- PatchSet.Id psId2 = new PatchSet.Id(ctl.getId(), 2);
- assertThat(ctl.getChange().currentPatchSetId()).isEqualTo(psId2);
- assertThat(psUtil.get(db, ctl.getNotes(), psId2).getRevision().get())
- .isEqualTo(mergedAs.name());
+ notes = reload(notes);
+ PatchSet.Id psId2 = new PatchSet.Id(notes.getChangeId(), 2);
+ assertThat(notes.getChange().currentPatchSetId()).isEqualTo(psId2);
+ assertThat(psUtil.get(db, notes, psId2).getRevision().get()).isEqualTo(mergedAs.name());
- assertNoProblems(ctl, null);
+ assertNoProblems(notes, null);
}
@Test
public void createNewPatchSetForExpectedMergeCommitWithChangeId() throws Exception {
- ChangeControl ctl = insertChange();
- String dest = ctl.getChange().getDest().get();
- String rev = psUtil.current(db, ctl.getNotes()).getRevision().get();
+ ChangeNotes notes = insertChange();
+ String dest = notes.getChange().getDest().get();
+ String rev = psUtil.current(db, notes).getRevision().get();
RevCommit commit = testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev));
RevCommit mergedAs =
@@ -552,20 +558,20 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
+ "\n"
+ "\n"
+ "Change-Id: "
- + ctl.getChange().getKey().get()
+ + notes.getChange().getKey().get()
+ "\n")
.create();
testRepo.getRevWalk().parseBody(mergedAs);
assertThat(mergedAs.getFooterLines(FooterConstants.CHANGE_ID))
- .containsExactly(ctl.getChange().getKey().get());
+ .containsExactly(notes.getChange().getKey().get());
testRepo.update(dest, mergedAs);
- assertNoProblems(ctl, null);
+ assertNoProblems(notes, null);
FixInput fix = new FixInput();
fix.expectMergedAs = mergedAs.name();
assertProblems(
- ctl,
+ notes,
fix,
problem(
"No patch set found for merged commit " + mergedAs.name(),
@@ -576,30 +582,29 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
FIXED,
"Inserted as patch set 2"));
- ctl = reload(ctl);
- PatchSet.Id psId2 = new PatchSet.Id(ctl.getId(), 2);
- assertThat(ctl.getChange().currentPatchSetId()).isEqualTo(psId2);
- assertThat(psUtil.get(db, ctl.getNotes(), psId2).getRevision().get())
- .isEqualTo(mergedAs.name());
+ notes = reload(notes);
+ PatchSet.Id psId2 = new PatchSet.Id(notes.getChangeId(), 2);
+ assertThat(notes.getChange().currentPatchSetId()).isEqualTo(psId2);
+ assertThat(psUtil.get(db, notes, psId2).getRevision().get()).isEqualTo(mergedAs.name());
- assertNoProblems(ctl, null);
+ assertNoProblems(notes, null);
}
@Test
public void expectedMergedCommitIsOldPatchSetOfSameChange() throws Exception {
- ChangeControl ctl = insertChange();
- PatchSet ps1 = psUtil.current(db, ctl.getNotes());
+ ChangeNotes notes = insertChange();
+ PatchSet ps1 = psUtil.current(db, notes);
String rev1 = ps1.getRevision().get();
- ctl = incrementPatchSet(ctl);
- PatchSet ps2 = psUtil.current(db, ctl.getNotes());
+ notes = incrementPatchSet(notes);
+ PatchSet ps2 = psUtil.current(db, notes);
testRepo
- .branch(ctl.getChange().getDest().get())
+ .branch(notes.getChange().getDest().get())
.update(testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev1)));
FixInput fix = new FixInput();
fix.expectMergedAs = rev1;
assertProblems(
- ctl,
+ notes,
fix,
problem("No patch set found for merged commit " + rev1, FIXED, "Marked change as merged"),
problem(
@@ -617,38 +622,37 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
FIXED,
"Inserted as patch set 3"));
- ctl = reload(ctl);
- PatchSet.Id psId3 = new PatchSet.Id(ctl.getId(), 3);
- assertThat(ctl.getChange().currentPatchSetId()).isEqualTo(psId3);
- assertThat(ctl.getChange().getStatus()).isEqualTo(Change.Status.MERGED);
- assertThat(psUtil.byChangeAsMap(db, ctl.getNotes()).keySet())
- .containsExactly(ps2.getId(), psId3);
- assertThat(psUtil.get(db, ctl.getNotes(), psId3).getRevision().get()).isEqualTo(rev1);
+ notes = reload(notes);
+ PatchSet.Id psId3 = new PatchSet.Id(notes.getChangeId(), 3);
+ assertThat(notes.getChange().currentPatchSetId()).isEqualTo(psId3);
+ assertThat(notes.getChange().getStatus()).isEqualTo(Change.Status.MERGED);
+ assertThat(psUtil.byChangeAsMap(db, notes).keySet()).containsExactly(ps2.getId(), psId3);
+ assertThat(psUtil.get(db, notes, psId3).getRevision().get()).isEqualTo(rev1);
}
@Test
public void expectedMergedCommitIsDanglingPatchSetOlderThanCurrent() throws Exception {
- ChangeControl ctl = insertChange();
- PatchSet ps1 = psUtil.current(db, ctl.getNotes());
+ ChangeNotes notes = insertChange();
+ PatchSet ps1 = psUtil.current(db, notes);
// Create dangling ref so next ID in the database becomes 3.
- PatchSet.Id psId2 = new PatchSet.Id(ctl.getId(), 2);
+ PatchSet.Id psId2 = new PatchSet.Id(notes.getChangeId(), 2);
RevCommit commit2 = patchSetCommit(psId2);
String rev2 = commit2.name();
testRepo.branch(psId2.toRefName()).update(commit2);
- ctl = incrementPatchSet(ctl);
- PatchSet ps3 = psUtil.current(db, ctl.getNotes());
+ notes = incrementPatchSet(notes);
+ PatchSet ps3 = psUtil.current(db, notes);
assertThat(ps3.getId().get()).isEqualTo(3);
testRepo
- .branch(ctl.getChange().getDest().get())
+ .branch(notes.getChange().getDest().get())
.update(testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev2)));
FixInput fix = new FixInput();
fix.expectMergedAs = rev2;
assertProblems(
- ctl,
+ notes,
fix,
problem("No patch set found for merged commit " + rev2, FIXED, "Marked change as merged"),
problem(
@@ -666,34 +670,34 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
FIXED,
"Inserted as patch set 4"));
- ctl = reload(ctl);
- PatchSet.Id psId4 = new PatchSet.Id(ctl.getId(), 4);
- assertThat(ctl.getChange().currentPatchSetId()).isEqualTo(psId4);
- assertThat(ctl.getChange().getStatus()).isEqualTo(Change.Status.MERGED);
- assertThat(psUtil.byChangeAsMap(db, ctl.getNotes()).keySet())
+ notes = reload(notes);
+ PatchSet.Id psId4 = new PatchSet.Id(notes.getChangeId(), 4);
+ assertThat(notes.getChange().currentPatchSetId()).isEqualTo(psId4);
+ assertThat(notes.getChange().getStatus()).isEqualTo(Change.Status.MERGED);
+ assertThat(psUtil.byChangeAsMap(db, notes).keySet())
.containsExactly(ps1.getId(), ps3.getId(), psId4);
- assertThat(psUtil.get(db, ctl.getNotes(), psId4).getRevision().get()).isEqualTo(rev2);
+ assertThat(psUtil.get(db, notes, psId4).getRevision().get()).isEqualTo(rev2);
}
@Test
public void expectedMergedCommitIsDanglingPatchSetNewerThanCurrent() throws Exception {
- ChangeControl ctl = insertChange();
- PatchSet ps1 = psUtil.current(db, ctl.getNotes());
+ ChangeNotes notes = insertChange();
+ PatchSet ps1 = psUtil.current(db, notes);
// Create dangling ref with no patch set.
- PatchSet.Id psId2 = new PatchSet.Id(ctl.getId(), 2);
+ PatchSet.Id psId2 = new PatchSet.Id(notes.getChangeId(), 2);
RevCommit commit2 = patchSetCommit(psId2);
String rev2 = commit2.name();
testRepo.branch(psId2.toRefName()).update(commit2);
testRepo
- .branch(ctl.getChange().getDest().get())
+ .branch(notes.getChange().getDest().get())
.update(testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev2)));
FixInput fix = new FixInput();
fix.expectMergedAs = rev2;
assertProblems(
- ctl,
+ notes,
fix,
problem("No patch set found for merged commit " + rev2, FIXED, "Marked change as merged"),
problem(
@@ -704,20 +708,19 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
FIXED,
"Inserted as patch set 2"));
- ctl = reload(ctl);
- assertThat(ctl.getChange().currentPatchSetId()).isEqualTo(psId2);
- assertThat(ctl.getChange().getStatus()).isEqualTo(Change.Status.MERGED);
- assertThat(psUtil.byChangeAsMap(db, ctl.getNotes()).keySet())
- .containsExactly(ps1.getId(), psId2);
- assertThat(psUtil.get(db, ctl.getNotes(), psId2).getRevision().get()).isEqualTo(rev2);
+ notes = reload(notes);
+ assertThat(notes.getChange().currentPatchSetId()).isEqualTo(psId2);
+ assertThat(notes.getChange().getStatus()).isEqualTo(Change.Status.MERGED);
+ assertThat(psUtil.byChangeAsMap(db, notes).keySet()).containsExactly(ps1.getId(), psId2);
+ assertThat(psUtil.get(db, notes, psId2).getRevision().get()).isEqualTo(rev2);
}
@Test
public void expectedMergedCommitWithMismatchedChangeId() throws Exception {
- ChangeControl ctl = insertChange();
- String dest = ctl.getChange().getDest().get();
+ ChangeNotes notes = insertChange();
+ String dest = notes.getChange().getDest().get();
RevCommit parent = testRepo.branch(dest).commit().message("parent").create();
- String rev = psUtil.current(db, ctl.getNotes()).getRevision().get();
+ String rev = psUtil.current(db, notes).getRevision().get();
RevCommit commit = testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev));
testRepo.branch(dest).update(commit);
@@ -732,12 +735,12 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
assertThat(mergedAs.getFooterLines(FooterConstants.CHANGE_ID)).containsExactly(badId);
testRepo.update(dest, mergedAs);
- assertNoProblems(ctl, null);
+ assertNoProblems(notes, null);
FixInput fix = new FixInput();
fix.expectMergedAs = mergedAs.name();
assertProblems(
- ctl,
+ notes,
fix,
problem(
"Expected merged commit "
@@ -745,30 +748,30 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
+ " has Change-Id: "
+ badId
+ ", but expected "
- + ctl.getChange().getKey().get()));
+ + notes.getChange().getKey().get()));
}
@Test
public void expectedMergedCommitMatchesMultiplePatchSets() throws Exception {
- ChangeControl ctl1 = insertChange();
- PatchSet.Id psId1 = psUtil.current(db, ctl1.getNotes()).getId();
- String dest = ctl1.getChange().getDest().get();
- String rev = psUtil.current(db, ctl1.getNotes()).getRevision().get();
+ ChangeNotes notes1 = insertChange();
+ PatchSet.Id psId1 = psUtil.current(db, notes1).getId();
+ String dest = notes1.getChange().getDest().get();
+ String rev = psUtil.current(db, notes1).getRevision().get();
RevCommit commit = testRepo.getRevWalk().parseCommit(ObjectId.fromString(rev));
testRepo.branch(dest).update(commit);
- ChangeControl ctl2 = insertChange();
- ctl2 = incrementPatchSet(ctl2, commit);
- PatchSet.Id psId2 = psUtil.current(db, ctl2.getNotes()).getId();
+ ChangeNotes notes2 = insertChange();
+ notes2 = incrementPatchSet(notes2, commit);
+ PatchSet.Id psId2 = psUtil.current(db, notes2).getId();
- ChangeControl ctl3 = insertChange();
- ctl3 = incrementPatchSet(ctl3, commit);
- PatchSet.Id psId3 = psUtil.current(db, ctl3.getNotes()).getId();
+ ChangeNotes notes3 = insertChange();
+ notes3 = incrementPatchSet(notes3, commit);
+ PatchSet.Id psId3 = psUtil.current(db, notes3).getId();
FixInput fix = new FixInput();
fix.expectMergedAs = commit.name();
assertProblems(
- ctl1,
+ notes1,
fix,
problem(
"Multiple patch sets for expected merged commit "
@@ -783,18 +786,18 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
}
private BatchUpdate newUpdate(Account.Id owner) {
- return updateFactory.create(db, project, userFactory.create(owner), TimeUtil.nowTs());
+ return batchUpdateFactory.create(db, project, userFactory.create(owner), TimeUtil.nowTs());
}
- private ChangeControl insertChange() throws Exception {
+ private ChangeNotes insertChange() throws Exception {
return insertChange(admin);
}
- private ChangeControl insertChange(TestAccount owner) throws Exception {
+ private ChangeNotes insertChange(TestAccount owner) throws Exception {
return insertChange(owner, "refs/heads/master");
}
- private ChangeControl insertChange(TestAccount owner, String dest) throws Exception {
+ private ChangeNotes insertChange(TestAccount owner, String dest) throws Exception {
Change.Id id = new Change.Id(sequences.nextChangeId());
ChangeInserter ins;
try (BatchUpdate bu = newUpdate(owner.getId())) {
@@ -802,41 +805,40 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
ins =
changeInserterFactory
.create(id, commit, dest)
- .setValidatePolicy(CommitValidators.Policy.NONE)
+ .setValidate(false)
.setNotify(NotifyHandling.NONE)
.setFireRevisionCreated(false)
.setSendMail(false);
bu.insertChange(ins).execute();
}
- // Return control for admin regardless of owner.
- return changeControlFactory.controlFor(db, ins.getChange(), userFactory.create(adminId));
+ return changeNotesFactory.create(db, project, ins.getChange().getId());
}
- private PatchSet.Id nextPatchSetId(ChangeControl ctl) throws Exception {
- return ChangeUtil.nextPatchSetId(testRepo.getRepository(), ctl.getChange().currentPatchSetId());
+ private PatchSet.Id nextPatchSetId(ChangeNotes notes) throws Exception {
+ return ChangeUtil.nextPatchSetId(
+ testRepo.getRepository(), notes.getChange().currentPatchSetId());
}
- private ChangeControl incrementPatchSet(ChangeControl ctl) throws Exception {
- return incrementPatchSet(ctl, patchSetCommit(nextPatchSetId(ctl)));
+ private ChangeNotes incrementPatchSet(ChangeNotes notes) throws Exception {
+ return incrementPatchSet(notes, patchSetCommit(nextPatchSetId(notes)));
}
- private ChangeControl incrementPatchSet(ChangeControl ctl, RevCommit commit) throws Exception {
+ private ChangeNotes incrementPatchSet(ChangeNotes notes, RevCommit commit) throws Exception {
PatchSetInserter ins;
- try (BatchUpdate bu = newUpdate(ctl.getChange().getOwner())) {
+ try (BatchUpdate bu = newUpdate(notes.getChange().getOwner())) {
ins =
patchSetInserterFactory
- .create(ctl, nextPatchSetId(ctl), commit)
- .setValidatePolicy(CommitValidators.Policy.NONE)
+ .create(notes, nextPatchSetId(notes), commit)
+ .setValidate(false)
.setFireRevisionCreated(false)
.setNotify(NotifyHandling.NONE);
- bu.addOp(ctl.getId(), ins).execute();
+ bu.addOp(notes.getChangeId(), ins).execute();
}
- return reload(ctl);
+ return reload(notes);
}
- private ChangeControl reload(ChangeControl ctl) throws Exception {
- return changeControlFactory.controlFor(
- db, ctl.getChange().getProject(), ctl.getId(), ctl.getUser());
+ private ChangeNotes reload(ChangeNotes notes) throws Exception {
+ return changeNotesFactory.create(db, notes.getChange().getProject(), notes.getChangeId());
}
private RevCommit patchSetCommit(PatchSet.Id psId) throws Exception {
@@ -844,12 +846,12 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
return testRepo.parseBody(c);
}
- private PatchSet insertMissingPatchSet(ChangeControl ctl, String rev) throws Exception {
+ private PatchSet insertMissingPatchSet(ChangeNotes notes, String rev) throws Exception {
// Don't use BatchUpdate since we're manually updating the meta ref rather
// than using ChangeUpdate.
String subject = "Subject for missing commit";
- Change c = new Change(ctl.getChange());
- PatchSet.Id psId = nextPatchSetId(ctl);
+ Change c = new Change(notes.getChange());
+ PatchSet.Id psId = nextPatchSetId(notes);
c.setCurrentPatchSet(psId, subject, c.getOriginalSubject());
PatchSet ps = newPatchSet(psId, rev, adminId);
@@ -904,23 +906,22 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
.create();
}
- private ObjectId getDestRef(ChangeControl ctl) throws Exception {
- return testRepo.getRepository().exactRef(ctl.getChange().getDest().get()).getObjectId();
+ private ObjectId getDestRef(ChangeNotes notes) throws Exception {
+ return testRepo.getRepository().exactRef(notes.getChange().getDest().get()).getObjectId();
}
- private ChangeControl mergeChange(ChangeControl ctl) throws Exception {
- final ObjectId oldId = getDestRef(ctl);
- final ObjectId newId =
- ObjectId.fromString(psUtil.current(db, ctl.getNotes()).getRevision().get());
- final String dest = ctl.getChange().getDest().get();
+ private ChangeNotes mergeChange(ChangeNotes notes) throws Exception {
+ final ObjectId oldId = getDestRef(notes);
+ final ObjectId newId = ObjectId.fromString(psUtil.current(db, notes).getRevision().get());
+ final String dest = notes.getChange().getDest().get();
try (BatchUpdate bu = newUpdate(adminId)) {
bu.addOp(
- ctl.getId(),
+ notes.getChangeId(),
new BatchUpdateOp() {
@Override
public void updateRepo(RepoContext ctx) throws IOException {
- ctx.addRefUpdate(new ReceiveCommand(oldId, newId, dest));
+ ctx.addRefUpdate(oldId, newId, dest);
}
@Override
@@ -932,7 +933,7 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
});
bu.execute();
}
- return reload(ctl);
+ return reload(notes);
}
private static ProblemInfo problem(String message) {
@@ -949,14 +950,15 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
}
private void assertProblems(
- ChangeControl ctl, @Nullable FixInput fix, ProblemInfo first, ProblemInfo... rest) {
+ ChangeNotes notes, @Nullable FixInput fix, ProblemInfo first, ProblemInfo... rest)
+ throws Exception {
List<ProblemInfo> expected = new ArrayList<>(1 + rest.length);
expected.add(first);
expected.addAll(Arrays.asList(rest));
- assertThat(checker.check(ctl, fix).problems()).containsExactlyElementsIn(expected).inOrder();
+ assertThat(checker.check(notes, fix).problems()).containsExactlyElementsIn(expected).inOrder();
}
- private void assertNoProblems(ChangeControl ctl, @Nullable FixInput fix) {
- assertThat(checker.check(ctl, fix).problems()).isEmpty();
+ private void assertNoProblems(ChangeNotes notes, @Nullable FixInput fix) throws Exception {
+ assertThat(checker.check(notes, fix).problems()).isEmpty();
}
}