ChangeRebuilderIT: Use ChangeBundle for comparisons
Add a new test util class NoteDbChecker that rebuilds a given set of changes and then compares their ChangeBundles. Change-Id: I1db6c449ba7077db6e0f74c47779c5648d0c1867
This commit is contained in:
@@ -14,27 +14,21 @@
|
||||
|
||||
package com.google.gerrit.acceptance.server.notedb;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.common.truth.TruthJUnit.assume;
|
||||
import static com.google.gerrit.common.TimeUtil.roundToSecond;
|
||||
import static com.google.gerrit.testutil.GerritServerTests.isNoteDbTestEnabled;
|
||||
|
||||
import com.google.gerrit.acceptance.AbstractDaemonTest;
|
||||
import com.google.gerrit.acceptance.PushOneCommit;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||
import com.google.gerrit.server.notedb.ChangeNotes;
|
||||
import com.google.gerrit.server.notedb.ChangeRebuilder;
|
||||
import com.google.gerrit.testutil.NoteDbChecker;
|
||||
import com.google.inject.Inject;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class ChangeRebuilderIT extends AbstractDaemonTest {
|
||||
@Inject
|
||||
private ChangeRebuilder rebuilder;
|
||||
private NoteDbChecker checker;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
@@ -47,11 +41,7 @@ public class ChangeRebuilderIT extends AbstractDaemonTest {
|
||||
PushOneCommit.Result r = createChange();
|
||||
Change.Id id = r.getPatchSetId().getParentKey();
|
||||
gApi.changes().id(id.get()).topic(name("a-topic"));
|
||||
Change old = db.changes().get(id);
|
||||
|
||||
rebuild(id);
|
||||
|
||||
assertChangeEqual(old, notesFactory.create(db, project, id).getChange());
|
||||
checker.checkChanges(id);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -59,68 +49,6 @@ public class ChangeRebuilderIT extends AbstractDaemonTest {
|
||||
PushOneCommit.Result r = createChange();
|
||||
Change.Id id = r.getPatchSetId().getParentKey();
|
||||
r = amendChange(r.getChangeId());
|
||||
|
||||
PatchSet ps1 = db.patchSets().get(new PatchSet.Id(id, 1));
|
||||
PatchSet ps2 = db.patchSets().get(new PatchSet.Id(id, 2));
|
||||
|
||||
rebuild(id);
|
||||
|
||||
ChangeNotes notes = notesFactory.create(db, project, id);
|
||||
Map<PatchSet.Id, PatchSet> patchSets = notes.getPatchSets();
|
||||
assertThat(patchSets.keySet()).containsExactly(ps1.getId(), ps2.getId())
|
||||
.inOrder();
|
||||
|
||||
assertPatchSetEqual(ps1, patchSets.get(ps1.getId()));
|
||||
assertPatchSetEqual(ps2, patchSets.get(ps2.getId()));
|
||||
}
|
||||
|
||||
private void rebuild(Change.Id... changeIds) throws Exception {
|
||||
notesMigration.setWriteChanges(true);
|
||||
for (Change.Id id : changeIds) {
|
||||
rebuilder.rebuild(db, id);
|
||||
}
|
||||
notesMigration.setReadChanges(true);
|
||||
}
|
||||
|
||||
private static void assertChangeEqual(Change expectedReviewDb,
|
||||
Change actualNoteDb) {
|
||||
assertThat(actualNoteDb.getId()).isEqualTo(expectedReviewDb.getId());
|
||||
assertThat(actualNoteDb.getKey()).isEqualTo(expectedReviewDb.getKey());
|
||||
|
||||
// TODO(dborowitz): actualNoteDb's timestamps should come from notedb, currently
|
||||
// they're read from reviewdb.
|
||||
assertThat(roundToSecond(actualNoteDb.getCreatedOn()))
|
||||
.isEqualTo(roundToSecond(expectedReviewDb.getCreatedOn()));
|
||||
assertThat(roundToSecond(actualNoteDb.getLastUpdatedOn()))
|
||||
.isEqualTo(roundToSecond(expectedReviewDb.getLastUpdatedOn()));
|
||||
assertThat(actualNoteDb.getOwner()).isEqualTo(expectedReviewDb.getOwner());
|
||||
assertThat(actualNoteDb.getDest()).isEqualTo(expectedReviewDb.getDest());
|
||||
assertThat(actualNoteDb.getStatus())
|
||||
.isEqualTo(expectedReviewDb.getStatus());
|
||||
assertThat(actualNoteDb.currentPatchSetId())
|
||||
.isEqualTo(expectedReviewDb.currentPatchSetId());
|
||||
assertThat(actualNoteDb.getSubject())
|
||||
.isEqualTo(expectedReviewDb.getSubject());
|
||||
assertThat(actualNoteDb.getTopic()).isEqualTo(expectedReviewDb.getTopic());
|
||||
assertThat(actualNoteDb.getOriginalSubject())
|
||||
.isEqualTo(expectedReviewDb.getOriginalSubject());
|
||||
assertThat(actualNoteDb.getSubmissionId())
|
||||
.isEqualTo(expectedReviewDb.getSubmissionId());
|
||||
}
|
||||
|
||||
private static void assertPatchSetEqual(PatchSet expectedReviewDb,
|
||||
PatchSet actualNoteDb) {
|
||||
assertThat(actualNoteDb.getId()).isEqualTo(expectedReviewDb.getId());
|
||||
assertThat(actualNoteDb.getRevision())
|
||||
.isEqualTo(expectedReviewDb.getRevision());
|
||||
assertThat(actualNoteDb.getUploader())
|
||||
.isEqualTo(expectedReviewDb.getUploader());
|
||||
assertThat(actualNoteDb.getCreatedOn())
|
||||
.isEqualTo(roundToSecond(expectedReviewDb.getCreatedOn()));
|
||||
assertThat(actualNoteDb.isDraft()).isEqualTo(expectedReviewDb.isDraft());
|
||||
assertThat(actualNoteDb.getGroups())
|
||||
.isEqualTo(expectedReviewDb.getGroups());
|
||||
assertThat(actualNoteDb.getPushCertificate())
|
||||
.isEqualTo(expectedReviewDb.getPushCertificate());
|
||||
checker.checkChanges(id);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user