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