diff --git a/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/AbstractDaemonTest.java b/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/AbstractDaemonTest.java index a9e7c7e354..13368f9c8a 100644 --- a/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/AbstractDaemonTest.java +++ b/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/AbstractDaemonTest.java @@ -58,14 +58,13 @@ import com.google.gerrit.server.git.MetaDataUpdate; import com.google.gerrit.server.git.ProjectConfig; import com.google.gerrit.server.index.ChangeIndexer; import com.google.gerrit.server.notedb.ChangeNotes; -import com.google.gerrit.server.notedb.ConfigNotesMigration; -import com.google.gerrit.server.notedb.NotesMigration; import com.google.gerrit.server.project.ProjectCache; import com.google.gerrit.server.project.Util; import com.google.gerrit.server.query.change.ChangeData; import com.google.gerrit.server.query.change.InternalChangeQuery; import com.google.gerrit.testutil.ConfigSuite; import com.google.gerrit.testutil.TempFileUtil; +import com.google.gerrit.testutil.TestNotesMigration; import com.google.gson.Gson; import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.SchemaFactory; @@ -187,7 +186,7 @@ public abstract class AbstractDaemonTest { protected Project.NameKey project; @Inject - protected NotesMigration notesMigration; + protected TestNotesMigration notesMigration; @Inject protected ChangeNotes.Factory notesFactory; @@ -254,9 +253,6 @@ public abstract class AbstractDaemonTest { GerritServer.Description methodDesc = GerritServer.Description.forTestMethod(description, configName); - if (isNoteDbTestEnabled()) { - ConfigNotesMigration.setAllEnabledConfig(baseConfig); - } baseConfig.setString("gerrit", null, "tempSiteDir", tempSiteDir.getRoot().getPath()); if (classDesc.equals(methodDesc)) { @@ -269,6 +265,7 @@ public abstract class AbstractDaemonTest { } server.getTestInjector().injectMembers(this); + notesMigration.setAllEnabled(isNoteDbTestEnabled()); Transport.register(inProcessProtocol); toClose = Collections.synchronizedList(new ArrayList()); admin = accounts.admin(); diff --git a/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/InMemoryTestingDatabaseModule.java b/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/InMemoryTestingDatabaseModule.java index 734008f415..ed8bf38562 100644 --- a/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/InMemoryTestingDatabaseModule.java +++ b/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/InMemoryTestingDatabaseModule.java @@ -27,7 +27,7 @@ import com.google.gerrit.server.config.SitePaths; import com.google.gerrit.server.config.TrackingFooters; import com.google.gerrit.server.config.TrackingFootersProvider; import com.google.gerrit.server.git.GitRepositoryManager; -import com.google.gerrit.server.notedb.ConfigNotesMigration; +import com.google.gerrit.server.notedb.NotesMigration; import com.google.gerrit.server.schema.DataSourceType; import com.google.gerrit.server.schema.NotesMigrationSchemaFactory; import com.google.gerrit.server.schema.ReviewDbFactory; @@ -36,6 +36,7 @@ import com.google.gerrit.server.schema.SchemaVersion; import com.google.gerrit.testutil.InMemoryDatabase; import com.google.gerrit.testutil.InMemoryH2Type; import com.google.gerrit.testutil.InMemoryRepositoryManager; +import com.google.gerrit.testutil.TestNotesMigration; import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmRuntimeException; import com.google.gwtorm.server.SchemaFactory; @@ -76,7 +77,7 @@ class InMemoryTestingDatabaseModule extends LifecycleModule { bind(MetricMaker.class).to(DisabledMetricMaker.class); bind(DataSourceType.class).to(InMemoryH2Type.class); - install(new ConfigNotesMigration.Module()); + bind(NotesMigration.class).to(TestNotesMigration.class); TypeLiteral> schemaFactory = new TypeLiteral>() {}; bind(schemaFactory).to(NotesMigrationSchemaFactory.class); diff --git a/gerrit-gpg/src/test/java/com/google/gerrit/gpg/GerritPublicKeyCheckerTest.java b/gerrit-gpg/src/test/java/com/google/gerrit/gpg/GerritPublicKeyCheckerTest.java index 4df9d37633..ebe8105559 100644 --- a/gerrit-gpg/src/test/java/com/google/gerrit/gpg/GerritPublicKeyCheckerTest.java +++ b/gerrit-gpg/src/test/java/com/google/gerrit/gpg/GerritPublicKeyCheckerTest.java @@ -46,6 +46,7 @@ import com.google.gerrit.server.util.RequestContext; import com.google.gerrit.server.util.ThreadLocalRequestContext; import com.google.gerrit.testutil.InMemoryDatabase; import com.google.gerrit.testutil.InMemoryModule; +import com.google.gerrit.testutil.TestNotesMigration; import com.google.inject.Guice; import com.google.inject.Inject; import com.google.inject.Injector; @@ -107,7 +108,8 @@ public class GerritPublicKeyCheckerTest { cfg.setStringList("receive", null, "trustedKey", ImmutableList.of( Fingerprint.toString(keyB().getPublicKey().getFingerprint()), Fingerprint.toString(keyD().getPublicKey().getFingerprint()))); - Injector injector = Guice.createInjector(new InMemoryModule(cfg)); + Injector injector = Guice.createInjector( + new InMemoryModule(cfg, new TestNotesMigration())); lifecycle = new LifecycleManager(); lifecycle.add(injector); 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 9c188929e0..17049c0447 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 @@ -77,21 +77,13 @@ public class ConfigNotesMigration extends NotesMigration { } } - public static ConfigNotesMigration allEnabled() { - return new ConfigNotesMigration(allEnabledConfig()); - } - public static Config allEnabledConfig() { Config cfg = new Config(); - setAllEnabledConfig(cfg); - return cfg; - } - - public static void setAllEnabledConfig(Config cfg) { for (Table t : Table.values()) { cfg.setBoolean(NOTEDB, t.key(), WRITE, true); cfg.setBoolean(NOTEDB, t.key(), READ, true); } + return cfg; } private final boolean writeChanges; diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/notedb/AbstractChangeNotesTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/notedb/AbstractChangeNotesTest.java index 98139479d0..4fbc4cccc6 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/notedb/AbstractChangeNotesTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/notedb/AbstractChangeNotesTest.java @@ -52,6 +52,7 @@ import com.google.gerrit.testutil.FakeAccountCache; import com.google.gerrit.testutil.GerritBaseTests; import com.google.gerrit.testutil.InMemoryRepositoryManager; import com.google.gerrit.testutil.TestChanges; +import com.google.gerrit.testutil.TestNotesMigration; import com.google.gerrit.testutil.TestTimeUtil; import com.google.gwtorm.client.KeyUtil; import com.google.gwtorm.server.OrmException; @@ -77,7 +78,8 @@ public class AbstractChangeNotesTest extends GerritBaseTests { private static final TimeZone TZ = TimeZone.getTimeZone("America/Los_Angeles"); - private static final NotesMigration MIGRATION = ConfigNotesMigration.allEnabled(); + private static final NotesMigration MIGRATION = + new TestNotesMigration().setAllEnabled(true); protected Account.Id otherUserId; protected FakeAccountCache accountCache; diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java index c42a75de7b..da83bae295 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java @@ -61,7 +61,6 @@ import com.google.gerrit.server.git.validators.CommitValidators; import com.google.gerrit.server.index.ChangeField; import com.google.gerrit.server.index.IndexCollection; import com.google.gerrit.server.notedb.ChangeNotes; -import com.google.gerrit.server.notedb.NotesMigration; import com.google.gerrit.server.project.ProjectControl; import com.google.gerrit.server.project.RefControl; import com.google.gerrit.server.schema.SchemaCreator; @@ -111,7 +110,6 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests { @Inject protected InMemoryDatabase schemaFactory; @Inject protected InMemoryRepositoryManager repoManager; @Inject protected InternalChangeQuery internalChangeQuery; - @Inject protected NotesMigration notesMigration; @Inject protected ChangeNotes.Factory notesFactory; @Inject protected PatchSetInserter.Factory patchSetFactory; @Inject protected ProjectControl.GenericFactory projectControlFactory; diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/LuceneQueryChangesTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/LuceneQueryChangesTest.java index 9303cd7167..038abda381 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/LuceneQueryChangesTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/LuceneQueryChangesTest.java @@ -30,7 +30,8 @@ public class LuceneQueryChangesTest extends AbstractQueryChangesTest { protected Injector createInjector() { Config luceneConfig = new Config(config); InMemoryModule.setDefaults(luceneConfig); - return Guice.createInjector(new InMemoryModule(luceneConfig)); + return Guice.createInjector( + new InMemoryModule(luceneConfig, notesMigration)); } @Test diff --git a/gerrit-server/src/test/java/com/google/gerrit/testutil/GerritServerTests.java b/gerrit-server/src/test/java/com/google/gerrit/testutil/GerritServerTests.java index 2f37cf8120..8909b08799 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/testutil/GerritServerTests.java +++ b/gerrit-server/src/test/java/com/google/gerrit/testutil/GerritServerTests.java @@ -15,7 +15,6 @@ package com.google.gerrit.testutil; import com.google.common.collect.ImmutableList; -import com.google.gerrit.server.notedb.ConfigNotesMigration; import org.eclipse.jgit.lib.Config; import org.junit.Rule; @@ -34,6 +33,8 @@ public class GerritServerTests extends GerritBaseTests { @ConfigSuite.Name private String configName; + protected TestNotesMigration notesMigration; + public static boolean isNoteDbTestEnabled() { List runValues = ImmutableList.of("yes", "y", "true", "1"); String value = System.getenv("GERRIT_ENABLE_NOTEDB"); @@ -59,9 +60,8 @@ public class GerritServerTests extends GerritBaseTests { }; public void beforeTest() throws Exception { - if (isNoteDbTestEnabled()) { - ConfigNotesMigration.setAllEnabledConfig(config); - } + notesMigration = new TestNotesMigration() + .setAllEnabled(isNoteDbTestEnabled()); } public void afterTest() { diff --git a/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryModule.java b/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryModule.java index b325880773..25722a5601 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryModule.java +++ b/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryModule.java @@ -50,7 +50,6 @@ import com.google.gerrit.server.git.SendEmailExecutor; import com.google.gerrit.server.index.ChangeSchemas; import com.google.gerrit.server.index.IndexModule.IndexType; import com.google.gerrit.server.mail.SignedTokenEmailTokenVerifier; -import com.google.gerrit.server.notedb.ConfigNotesMigration; import com.google.gerrit.server.notedb.NotesMigration; import com.google.gerrit.server.patch.DiffExecutor; import com.google.gerrit.server.schema.DataSourceType; @@ -105,13 +104,15 @@ public class InMemoryModule extends FactoryModule { } private final Config cfg; + private final TestNotesMigration notesMigration; public InMemoryModule() { - this(newDefaultConfig()); + this(newDefaultConfig(), new TestNotesMigration()); } - public InMemoryModule(Config cfg) { + public InMemoryModule(Config cfg, TestNotesMigration notesMigration) { this.cfg = cfg; + this.notesMigration = notesMigration; } public void inject(Object instance) { @@ -161,7 +162,7 @@ public class InMemoryModule extends FactoryModule { bind(InMemoryRepositoryManager.class).in(SINGLETON); bind(TrackingFooters.class).toProvider(TrackingFootersProvider.class) .in(SINGLETON); - bind(NotesMigration.class).to(ConfigNotesMigration.class); + bind(NotesMigration.class).toInstance(notesMigration); bind(DataSourceType.class) .to(InMemoryH2Type.class); 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 new file mode 100644 index 0000000000..032c3e5a78 --- /dev/null +++ b/gerrit-server/src/test/java/com/google/gerrit/testutil/TestNotesMigration.java @@ -0,0 +1,49 @@ +// Copyright (C) 2016 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.gerrit.testutil; + +import com.google.gerrit.server.notedb.NotesMigration; +import com.google.inject.Singleton; + +/** {@link NotesMigration} with bits that can be flipped live for testing. */ +@Singleton +public class TestNotesMigration extends NotesMigration { + private volatile boolean readChanges; + private volatile boolean writeChanges; + + @Override + public boolean readChanges() { + return readChanges; + } + + @Override + public boolean writeChanges() { + return writeChanges; + } + + public TestNotesMigration setReadChanges(boolean readChanges) { + this.readChanges = readChanges; + return this; + } + + public TestNotesMigration setWriteChanges(boolean writeChanges) { + this.writeChanges = writeChanges; + return this; + } + + public TestNotesMigration setAllEnabled(boolean enabled) { + return setReadChanges(enabled).setWriteChanges(enabled); + } +}