Teach InMemoryModule to work with custom index types

Change-Id: Iac9b5b825878069783f98aaf77352ff4533a49b6
This commit is contained in:
Dave Borowitz
2013-10-10 12:55:42 -07:00
parent fb5744b065
commit fac1fa5930

View File

@@ -17,6 +17,9 @@ package com.google.gerrit.testutil;
import static com.google.common.base.Preconditions.checkState; import static com.google.common.base.Preconditions.checkState;
import static com.google.inject.Scopes.SINGLETON; import static com.google.inject.Scopes.SINGLETON;
import com.google.common.base.Enums;
import com.google.common.base.Objects;
import com.google.common.base.Optional;
import com.google.gerrit.common.ChangeHooks; import com.google.gerrit.common.ChangeHooks;
import com.google.gerrit.common.DisabledChangeHooks; import com.google.gerrit.common.DisabledChangeHooks;
import com.google.gerrit.lucene.LuceneIndexModule; import com.google.gerrit.lucene.LuceneIndexModule;
@@ -41,7 +44,6 @@ import com.google.gerrit.server.config.TrackingFootersProvider;
import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.PerThreadRequestScope; import com.google.gerrit.server.git.PerThreadRequestScope;
import com.google.gerrit.server.index.ChangeSchemas; import com.google.gerrit.server.index.ChangeSchemas;
import com.google.gerrit.server.index.IndexModule;
import com.google.gerrit.server.index.IndexModule.IndexType; import com.google.gerrit.server.index.IndexModule.IndexType;
import com.google.gerrit.server.index.NoIndexModule; import com.google.gerrit.server.index.NoIndexModule;
import com.google.gerrit.server.mail.SignedTokenEmailTokenVerifier; import com.google.gerrit.server.mail.SignedTokenEmailTokenVerifier;
@@ -157,20 +159,26 @@ public class InMemoryModule extends FactoryModule {
install(new SmtpEmailSender.Module()); install(new SmtpEmailSender.Module());
install(new SignedTokenEmailTokenVerifier.Module()); install(new SignedTokenEmailTokenVerifier.Module());
IndexType indexType = IndexModule.getIndexType(cfgInjector); String indexTypeStr = cfg.getString("index", null, "type");
switch (indexType) { Optional<IndexType> indexType = Enums.getIfPresent(IndexType.class,
case LUCENE: Objects.firstNonNull(indexTypeStr, IndexType.SQL.toString()));
int version = cfg.getInt("index", "lucene", "testVersion", -1); if (indexType.isPresent()) {
checkState(ChangeSchemas.ALL.containsKey(version), switch (indexType.get()) {
"invalid index.lucene.testVersion %s", version); case LUCENE:
install(new LuceneIndexModule(version, 0, null)); int version = cfg.getInt("index", "lucene", "testVersion", -1);
break; checkState(ChangeSchemas.ALL.containsKey(version),
case SQL: "invalid index.lucene.testVersion %s", version);
install(new NoIndexModule()); install(new LuceneIndexModule(version, 0, null));
break; break;
default: case SQL:
throw new ProvisionException( install(new NoIndexModule());
"index type unsupported in tests: " + indexType); break;
default:
throw new ProvisionException(
"index type unsupported in tests: " + indexType);
}
} else {
// Custom index type, caller must provide their own module.
} }
} }