Teach InMemoryModule to work with custom index types

Change-Id: Iac9b5b825878069783f98aaf77352ff4533a49b6
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 39c2868..a417416 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
@@ -17,6 +17,9 @@
 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.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 @@
     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.
     }
   }