summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryDatabase.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryDatabase.java')
-rw-r--r--gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryDatabase.java92
1 files changed, 50 insertions, 42 deletions
diff --git a/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryDatabase.java b/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryDatabase.java
index b1f956fc50..303c497760 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryDatabase.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryDatabase.java
@@ -14,19 +14,22 @@
package com.google.gerrit.testutil;
+import static com.google.inject.Scopes.SINGLETON;
+
import com.google.gerrit.reviewdb.client.CurrentSchemaVersion;
import com.google.gerrit.reviewdb.client.SystemConfig;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.GerritPersonIdent;
import com.google.gerrit.server.GerritPersonIdentProvider;
import com.google.gerrit.server.config.AllProjectsName;
+import com.google.gerrit.server.config.AllProjectsNameProvider;
import com.google.gerrit.server.config.AnonymousCowardName;
import com.google.gerrit.server.config.AnonymousCowardNameProvider;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.SitePath;
import com.google.gerrit.server.git.GitRepositoryManager;
-import com.google.gerrit.server.git.LocalDiskRepositoryManager;
import com.google.gerrit.server.schema.Current;
+import com.google.gerrit.server.schema.DataSourceType;
import com.google.gerrit.server.schema.SchemaCreator;
import com.google.gerrit.server.schema.SchemaVersion;
import com.google.gwtorm.jdbc.Database;
@@ -35,6 +38,7 @@ import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
+import com.google.inject.Injector;
import com.google.inject.Key;
import junit.framework.TestCase;
@@ -81,6 +85,7 @@ public class InMemoryDatabase implements SchemaFactory<ReviewDb> {
private Database<ReviewDb> database;
private boolean created;
private SchemaVersion schemaVersion;
+ private Injector injector;
public InMemoryDatabase() throws OrmException {
try {
@@ -96,46 +101,54 @@ public class InMemoryDatabase implements SchemaFactory<ReviewDb> {
//
database = new Database<ReviewDb>(dataSource, ReviewDb.class);
- schemaVersion =
- Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- install(new SchemaVersion.Module());
-
- bind(File.class) //
- .annotatedWith(SitePath.class) //
- .toInstance(new File("."));
-
- Config cfg = new Config();
- cfg.setString("gerrit", null, "basePath", "git");
- cfg.setString("user", null, "name", "Gerrit Code Review");
- cfg.setString("user", null, "email", "gerrit@localhost");
-
- bind(Config.class) //
- .annotatedWith(GerritServerConfig.class) //
- .toInstance(cfg);
-
- bind(PersonIdent.class) //
- .annotatedWith(GerritPersonIdent.class) //
- .toProvider(GerritPersonIdentProvider.class);
-
- bind(AllProjectsName.class)
- .toInstance(new AllProjectsName("All-Projects"));
-
- bind(GitRepositoryManager.class) //
- .to(LocalDiskRepositoryManager.class);
-
- bind(String.class) //
- .annotatedWith(AnonymousCowardName.class) //
- .toProvider(AnonymousCowardNameProvider.class);
- }
- }).getBinding(Key.get(SchemaVersion.class, Current.class))
- .getProvider().get();
+ injector = Guice.createInjector(new AbstractModule() {
+ @Override
+ protected void configure() {
+ install(new SchemaVersion.Module());
+
+ bind(File.class) //
+ .annotatedWith(SitePath.class) //
+ .toInstance(new File("."));
+
+ Config cfg = new Config();
+ cfg.setString("gerrit", null, "basePath", "git");
+ cfg.setString("gerrit", null, "allProjects", "Test-Projects");
+ cfg.setString("user", null, "name", "Gerrit Code Review");
+ cfg.setString("user", null, "email", "gerrit@localhost");
+
+ bind(Config.class) //
+ .annotatedWith(GerritServerConfig.class) //
+ .toInstance(cfg);
+
+ bind(PersonIdent.class) //
+ .annotatedWith(GerritPersonIdent.class) //
+ .toProvider(GerritPersonIdentProvider.class);
+
+ bind(AllProjectsName.class) //
+ .toProvider(AllProjectsNameProvider.class);
+
+ bind(GitRepositoryManager.class) //
+ .to(InMemoryRepositoryManager.class).in(SINGLETON);
+
+ bind(String.class) //
+ .annotatedWith(AnonymousCowardName.class) //
+ .toProvider(AnonymousCowardNameProvider.class);
+
+ bind(DataSourceType.class) //
+ .to(InMemoryH2Type.class);
+ }
+ });
+ schemaVersion = injector.getInstance(
+ Key.get(SchemaVersion.class, Current.class));
} catch (SQLException e) {
throw new OrmException(e);
}
}
+ public <T> T getInstance(Class<T> clazz) {
+ return injector.getInstance(clazz);
+ }
+
public Database<ReviewDb> getDatabase() {
return database;
}
@@ -152,12 +165,7 @@ public class InMemoryDatabase implements SchemaFactory<ReviewDb> {
final ReviewDb c = open();
try {
try {
- new SchemaCreator(
- new File("."),
- schemaVersion,
- null,
- new AllProjectsName("Test-Projects"),
- new PersonIdent("name", "email@site")).create(c);
+ getInstance(SchemaCreator.class).create(c);
} catch (IOException e) {
throw new OrmException("Cannot create in-memory database", e);
} catch (ConfigInvalidException e) {