H2AccountPatchReviewStore: Factor out test store
Change-Id: I5d35e965dd09aeea8c8684266b0be00a84424ab8
This commit is contained in:
parent
75e79d7ac8
commit
260c66d9ab
@ -78,7 +78,7 @@ import com.google.gerrit.server.plugins.PluginGuiceEnvironment;
|
||||
import com.google.gerrit.server.plugins.PluginModule;
|
||||
import com.google.gerrit.server.plugins.PluginRestApiModule;
|
||||
import com.google.gerrit.server.schema.DataSourceProvider;
|
||||
import com.google.gerrit.server.schema.H2AccountPatchReviewStore;
|
||||
import com.google.gerrit.server.schema.InMemoryAccountPatchReviewStore;
|
||||
import com.google.gerrit.server.schema.JdbcAccountPatchReviewStore;
|
||||
import com.google.gerrit.server.schema.SchemaVersionCheck;
|
||||
import com.google.gerrit.server.securestore.DefaultSecureStore;
|
||||
@ -377,7 +377,7 @@ public class Daemon extends SiteProgram {
|
||||
modules.add(new EventBroker.Module());
|
||||
modules.add(
|
||||
test
|
||||
? new H2AccountPatchReviewStore.InMemoryModule()
|
||||
? new InMemoryAccountPatchReviewStore.Module()
|
||||
: new JdbcAccountPatchReviewStore.Module(config));
|
||||
modules.add(new ReceiveCommitsExecutorModule());
|
||||
modules.add(new DiffExecutorModule());
|
||||
|
@ -14,10 +14,6 @@
|
||||
|
||||
package com.google.gerrit.server.schema;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.gerrit.extensions.registration.DynamicItem;
|
||||
import com.google.gerrit.lifecycle.LifecycleModule;
|
||||
import com.google.gerrit.server.change.AccountPatchReviewStore;
|
||||
import com.google.gerrit.server.config.GerritServerConfig;
|
||||
import com.google.gerrit.server.config.SitePaths;
|
||||
import com.google.gwtorm.server.OrmDuplicateKeyException;
|
||||
@ -30,33 +26,11 @@ import org.eclipse.jgit.lib.Config;
|
||||
@Singleton
|
||||
public class H2AccountPatchReviewStore extends JdbcAccountPatchReviewStore {
|
||||
|
||||
@VisibleForTesting
|
||||
public static class InMemoryModule extends LifecycleModule {
|
||||
@Override
|
||||
protected void configure() {
|
||||
H2AccountPatchReviewStore inMemoryStore = new H2AccountPatchReviewStore();
|
||||
DynamicItem.bind(binder(), AccountPatchReviewStore.class).toInstance(inMemoryStore);
|
||||
listener().toInstance(inMemoryStore);
|
||||
}
|
||||
}
|
||||
|
||||
@Inject
|
||||
H2AccountPatchReviewStore(@GerritServerConfig Config cfg, SitePaths sitePaths) {
|
||||
super(cfg, sitePaths);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an in-memory H2 database to store the reviewed flags. This should be used for tests
|
||||
* only.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
private H2AccountPatchReviewStore() {
|
||||
// DB_CLOSE_DELAY=-1: By default the content of an in-memory H2 database is
|
||||
// lost at the moment the last connection is closed. This option keeps the
|
||||
// content as long as the vm lives.
|
||||
super(createDataSource("jdbc:h2:mem:account_patch_reviews;DB_CLOSE_DELAY=-1"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrmException convertError(String op, SQLException err) {
|
||||
switch (getSQLStateInt(err)) {
|
||||
|
@ -0,0 +1,58 @@
|
||||
// Copyright (C) 2017 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.server.schema;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.gerrit.extensions.registration.DynamicItem;
|
||||
import com.google.gerrit.lifecycle.LifecycleModule;
|
||||
import com.google.gerrit.server.change.AccountPatchReviewStore;
|
||||
import com.google.gwtorm.jdbc.SimpleDataSource;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Properties;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
public class InMemoryAccountPatchReviewStore extends JdbcAccountPatchReviewStore {
|
||||
@VisibleForTesting
|
||||
public static class Module extends LifecycleModule {
|
||||
@Override
|
||||
protected void configure() {
|
||||
InMemoryAccountPatchReviewStore inMemoryStore = new InMemoryAccountPatchReviewStore();
|
||||
DynamicItem.bind(binder(), AccountPatchReviewStore.class).toInstance(inMemoryStore);
|
||||
listener().toInstance(inMemoryStore);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an in-memory H2 database to store the reviewed flags. This should be used for tests
|
||||
* only.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
private InMemoryAccountPatchReviewStore() {
|
||||
super(newDataSource());
|
||||
}
|
||||
|
||||
private static synchronized DataSource newDataSource() {
|
||||
final Properties p = new Properties();
|
||||
p.setProperty("driver", "org.h2.Driver");
|
||||
// DB_CLOSE_DELAY=-1: By default the content of an in-memory H2 database is lost at the moment
|
||||
// the last connection is closed. This option keeps the content as long as the vm lives.
|
||||
p.setProperty("url", "jdbc:h2:mem:account_patch_reviews;DB_CLOSE_DELAY=-1");
|
||||
try {
|
||||
return new SimpleDataSource(p);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("Unable to create test datasource", e);
|
||||
}
|
||||
}
|
||||
}
|
@ -58,7 +58,7 @@ import com.google.gerrit.server.notedb.GwtormChangeBundleReader;
|
||||
import com.google.gerrit.server.notedb.NotesMigration;
|
||||
import com.google.gerrit.server.patch.DiffExecutor;
|
||||
import com.google.gerrit.server.schema.DataSourceType;
|
||||
import com.google.gerrit.server.schema.H2AccountPatchReviewStore;
|
||||
import com.google.gerrit.server.schema.InMemoryAccountPatchReviewStore;
|
||||
import com.google.gerrit.server.schema.SchemaCreator;
|
||||
import com.google.gerrit.server.securestore.DefaultSecureStore;
|
||||
import com.google.gerrit.server.securestore.SecureStore;
|
||||
@ -203,7 +203,7 @@ public class InMemoryModule extends FactoryModule {
|
||||
install(new FakeEmailSender.Module());
|
||||
install(new SignedTokenEmailTokenVerifier.Module());
|
||||
install(new GpgModule(cfg));
|
||||
install(new H2AccountPatchReviewStore.InMemoryModule());
|
||||
install(new InMemoryAccountPatchReviewStore.Module());
|
||||
|
||||
bind(AllAccountsIndexer.class).toProvider(Providers.of(null));
|
||||
bind(AllChangesIndexer.class).toProvider(Providers.of(null));
|
||||
|
Loading…
Reference in New Issue
Block a user