TestNotesMigration: Add method to copy another config instance
We might want to populate TestNotesMigration from something other than
the environment, e.g. a ConfigNotesMigration. Make this possible.
Change-Id: Ic76f5a0fe70f5c14fbc68a04d902df26fe44538a
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/RefAdvertisementIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/RefAdvertisementIT.java
index 3282117..ab04ba5 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/RefAdvertisementIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/RefAdvertisementIT.java
@@ -543,7 +543,7 @@
throws Exception {
List<String> expected = new ArrayList<>(expectedWithMeta.length);
for (String r : expectedWithMeta) {
- if (notesMigration.writeChanges() || !r.endsWith(RefNames.META_SUFFIX)) {
+ if (notesMigration.commitChangeWrites() || !r.endsWith(RefNames.META_SUFFIX)) {
expected.add(r);
}
}
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/DeleteDraftPatchSetIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/DeleteDraftPatchSetIT.java
index 244efbf..228b478 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/DeleteDraftPatchSetIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/DeleteDraftPatchSetIT.java
@@ -92,7 +92,7 @@
din.message = "comment on a.txt";
gApi.changes().id(changeId).current().createDraft(din);
- if (notesMigration.writeChanges()) {
+ if (notesMigration.commitChangeWrites()) {
assertThat(getDraftRef(admin, id)).isNotNull();
}
@@ -110,7 +110,7 @@
deletePatchSet(changeId, ps);
assertThat(queryProvider.get().byKeyPrefix(changeId)).isEmpty();
- if (notesMigration.writeChanges()) {
+ if (notesMigration.commitChangeWrites()) {
assertThat(getDraftRef(admin, id)).isNull();
assertThat(getMetaRef(id)).isNull();
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/AbstractChangeNotes.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/AbstractChangeNotes.java
index 4cb570a..149f6b1 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/AbstractChangeNotes.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/AbstractChangeNotes.java
@@ -143,7 +143,7 @@
if (!read && primaryStorage == PrimaryStorage.NOTE_DB) {
throw new OrmException("NoteDb is required to read change " + changeId);
}
- boolean readOrWrite = read || args.migration.writeChanges();
+ boolean readOrWrite = read || args.migration.rawWriteChangesSetting();
if (!readOrWrite && !autoRebuild) {
loadDefaults();
return self();
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ConfigNotesMigration.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ConfigNotesMigration.java
index c0b0525..b894393 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ConfigNotesMigration.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ConfigNotesMigration.java
@@ -84,7 +84,7 @@
private final boolean disableChangeReviewDb;
@Inject
- ConfigNotesMigration(@GerritServerConfig Config cfg) {
+ public ConfigNotesMigration(@GerritServerConfig Config cfg) {
checkConfig(cfg);
writeChanges = cfg.getBoolean(NOTE_DB, CHANGES.key(), WRITE, false);
@@ -106,7 +106,7 @@
}
@Override
- protected boolean writeChanges() {
+ public boolean rawWriteChangesSetting() {
return writeChanges;
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/NotesMigration.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/NotesMigration.java
index c708bfe..995847f 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/NotesMigration.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/NotesMigration.java
@@ -49,6 +49,9 @@
/**
* Write changes to NoteDb.
*
+ * <p>This method is awkwardly named because you should be using either {@link
+ * #commitChangeWrites()} or {@link #failChangeWrites()} instead.
+ *
* <p>Updates to change data are written to NoteDb refs, but ReviewDb is still the source of
* truth. Change data will not be written unless the NoteDb refs are already up to date, and the
* write path will attempt to rebuild the change if not.
@@ -57,7 +60,7 @@
* readChanges() = false}, writes to NoteDb are simply ignored; if {@code true}, any attempts to
* write will generate an error.
*/
- protected abstract boolean writeChanges();
+ public abstract boolean rawWriteChangesSetting();
/**
* Read sequential change ID numbers from NoteDb.
@@ -99,14 +102,14 @@
// same codepath. This specific condition is used by the auto-rebuilding
// path to rebuild a change and stage the results, but not commit them due
// to failChangeWrites().
- return writeChanges() || readChanges();
+ return rawWriteChangesSetting() || readChanges();
}
public boolean failChangeWrites() {
- return !writeChanges() && readChanges();
+ return !rawWriteChangesSetting() && readChanges();
}
public boolean enabled() {
- return writeChanges() || readChanges();
+ return rawWriteChangesSetting() || readChanges();
}
}
diff --git a/gerrit-server/src/test/java/com/google/gerrit/testutil/NoteDbChecker.java b/gerrit-server/src/test/java/com/google/gerrit/testutil/NoteDbChecker.java
index aeaaa47..ad876ce 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/testutil/NoteDbChecker.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/testutil/NoteDbChecker.java
@@ -89,7 +89,7 @@
List<ChangeBundle> allExpected = readExpected(changeIds);
- boolean oldWrite = notesMigration.writeChanges();
+ boolean oldWrite = notesMigration.rawWriteChangesSetting();
boolean oldRead = notesMigration.readChanges();
try {
notesMigration.setWriteChanges(true);
@@ -162,7 +162,7 @@
private void checkActual(List<ChangeBundle> allExpected, List<String> msgs) throws Exception {
ReviewDb db = getUnwrappedDb();
boolean oldRead = notesMigration.readChanges();
- boolean oldWrite = notesMigration.writeChanges();
+ boolean oldWrite = notesMigration.rawWriteChangesSetting();
try {
notesMigration.setWriteChanges(true);
notesMigration.setReadChanges(true);
diff --git a/gerrit-server/src/test/java/com/google/gerrit/testutil/TestNotesMigration.java b/gerrit-server/src/test/java/com/google/gerrit/testutil/TestNotesMigration.java
index e6a72fc..d4ddaf1 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/testutil/TestNotesMigration.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/testutil/TestNotesMigration.java
@@ -29,6 +29,8 @@
private volatile boolean disableChangeReviewDb;
private volatile boolean failOnLoad;
+ public TestNotesMigration() {}
+
@Override
public boolean readChanges() {
return readChanges;
@@ -54,7 +56,7 @@
// Increase visbility from superclass, as tests may want to check whether
// NoteDb data is written in specific migration scenarios.
@Override
- public boolean writeChanges() {
+ public boolean rawWriteChangesSetting() {
return writeChanges;
}
@@ -129,4 +131,12 @@
}
return this;
}
+
+ public TestNotesMigration setFrom(NotesMigration other) {
+ setWriteChanges(other.rawWriteChangesSetting());
+ setReadChanges(other.readChanges());
+ setChangePrimaryStorage(other.changePrimaryStorage());
+ setDisableChangeReviewDb(other.disableChangeReviewDb());
+ return this;
+ }
}