summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuca Milanesio <luca.milanesio@gmail.com>2023-08-21 09:39:12 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2023-08-21 09:39:12 +0000
commit0bfed0096035285cab83a2f03227bbc5e7d43bd4 (patch)
tree76586ae27f233a11e7a3d6887f88b142a9ac300c
parent5b65e5e9486da0d8fc682fe3e80f5d468e1bb15b (diff)
parent3af5aed69ba4d6e729bffeac4d3440f37b4d9bdd (diff)
Merge "IndexType not honoured in AbstractDeamonTest" into stable-3.6
-rw-r--r--java/com/google/gerrit/acceptance/GerritServer.java44
-rw-r--r--java/com/google/gerrit/index/testing/AbstractFakeIndex.java3
-rw-r--r--javatests/com/google/gerrit/acceptance/ssh/CustomIndexIT.java80
3 files changed, 106 insertions, 21 deletions
diff --git a/java/com/google/gerrit/acceptance/GerritServer.java b/java/com/google/gerrit/acceptance/GerritServer.java
index a01a5d960c..009bebdc6c 100644
--- a/java/com/google/gerrit/acceptance/GerritServer.java
+++ b/java/com/google/gerrit/acceptance/GerritServer.java
@@ -61,6 +61,7 @@ import com.google.gerrit.server.config.SitePath;
import com.google.gerrit.server.experiments.ConfigExperimentFeatures.ConfigExperimentFeaturesModule;
import com.google.gerrit.server.git.receive.AsyncReceiveCommits.AsyncReceiveCommitsModule;
import com.google.gerrit.server.git.validators.CommitValidationListener;
+import com.google.gerrit.server.index.AbstractIndexModule;
import com.google.gerrit.server.index.options.AutoFlush;
import com.google.gerrit.server.schema.JdbcAccountPatchReviewStore;
import com.google.gerrit.server.ssh.NoSshModule;
@@ -458,7 +459,11 @@ public class GerritServer implements AutoCloseable {
if (desc.memory()) {
checkArgument(additionalArgs.length == 0, "cannot pass args to in-memory server");
- return startInMemory(desc, site, baseConfig, daemon, inMemoryRepoManager);
+ AbstractIndexModule testIndexModule =
+ (testSysModule instanceof AbstractIndexModule)
+ ? (AbstractIndexModule) testSysModule
+ : null;
+ return startInMemory(desc, site, baseConfig, daemon, inMemoryRepoManager, testIndexModule);
}
return startOnDisk(desc, site, daemon, serverStarted, additionalArgs);
}
@@ -468,7 +473,8 @@ public class GerritServer implements AutoCloseable {
Path site,
Config baseConfig,
Daemon daemon,
- @Nullable InMemoryRepositoryManager inMemoryRepoManager)
+ @Nullable InMemoryRepositoryManager inMemoryRepoManager,
+ @Nullable AbstractIndexModule testIndexModule)
throws Exception {
Config cfg = desc.buildConfig(baseConfig);
mergeTestConfig(cfg);
@@ -484,24 +490,11 @@ public class GerritServer implements AutoCloseable {
"accountPatchReviewDb", null, "url", JdbcAccountPatchReviewStore.TEST_IN_MEMORY_URL);
String configuredIndexBackend = cfg.getString("index", null, "type");
- IndexType indexType;
- if (configuredIndexBackend != null) {
- // Explicitly configured index backend from gerrit.config trumps any other ways to configure
- // index backends so that Reindex tests can be explicit about the backend they want to test
- // against.
- indexType = new IndexType(configuredIndexBackend);
- } else {
- // Allow configuring the index backend based on sys/env variables so that integration tests
- // can be run against different index backends.
- indexType = IndexType.fromEnvironment().orElse(new IndexType("fake"));
- }
- if (indexType.isLucene()) {
- daemon.setIndexModule(
- LuceneIndexModule.singleVersionAllLatest(
- 0, ReplicaUtil.isReplica(baseConfig), AutoFlush.ENABLED));
- } else {
- daemon.setIndexModule(FakeIndexModule.latestVersion(false));
- }
+ IndexType indexType =
+ (configuredIndexBackend != null)
+ ? new IndexType(configuredIndexBackend)
+ : IndexType.fromEnvironment().orElse(new IndexType("fake"));
+ daemon.setIndexModule(createIndexModule(indexType, baseConfig, testIndexModule));
daemon.setEnableHttpd(desc.httpd());
daemon.setInMemory(true);
@@ -521,6 +514,17 @@ public class GerritServer implements AutoCloseable {
return new GerritServer(desc, null, createTestInjector(daemon), daemon, null);
}
+ private static AbstractIndexModule createIndexModule(
+ IndexType indexType, Config baseConfig, @Nullable AbstractIndexModule testIndexModule) {
+ if (testIndexModule != null) {
+ return testIndexModule;
+ }
+ return indexType.isLucene()
+ ? LuceneIndexModule.singleVersionAllLatest(
+ 0, ReplicaUtil.isReplica(baseConfig), AutoFlush.ENABLED)
+ : FakeIndexModule.latestVersion(false);
+ }
+
private static GerritServer startOnDisk(
Description desc,
Path site,
diff --git a/java/com/google/gerrit/index/testing/AbstractFakeIndex.java b/java/com/google/gerrit/index/testing/AbstractFakeIndex.java
index 8ecdae86e6..27c7fe8002 100644
--- a/java/com/google/gerrit/index/testing/AbstractFakeIndex.java
+++ b/java/com/google/gerrit/index/testing/AbstractFakeIndex.java
@@ -236,7 +236,8 @@ public abstract class AbstractFakeIndex<K, V, D> implements Index<K, V> {
private final boolean skipMergable;
@Inject
- FakeChangeIndex(
+ @VisibleForTesting
+ protected FakeChangeIndex(
SitePaths sitePaths,
ChangeData.Factory changeDataFactory,
@Assisted Schema<ChangeData> schema,
diff --git a/javatests/com/google/gerrit/acceptance/ssh/CustomIndexIT.java b/javatests/com/google/gerrit/acceptance/ssh/CustomIndexIT.java
index 434071ff9c..fee413ab8d 100644
--- a/javatests/com/google/gerrit/acceptance/ssh/CustomIndexIT.java
+++ b/javatests/com/google/gerrit/acceptance/ssh/CustomIndexIT.java
@@ -14,9 +14,29 @@
package com.google.gerrit.acceptance.ssh;
+import static com.google.common.truth.Truth.assertThat;
+
import com.google.gerrit.index.IndexType;
+import com.google.gerrit.index.Schema;
+import com.google.gerrit.index.project.ProjectIndex;
+import com.google.gerrit.index.testing.AbstractFakeIndex;
+import com.google.gerrit.index.testing.FakeIndexVersionManager;
+import com.google.gerrit.server.config.GerritServerConfig;
+import com.google.gerrit.server.config.SitePaths;
+import com.google.gerrit.server.index.AbstractIndexModule;
+import com.google.gerrit.server.index.VersionManager;
+import com.google.gerrit.server.index.account.AccountIndex;
+import com.google.gerrit.server.index.change.ChangeIndex;
+import com.google.gerrit.server.index.change.ChangeIndexCollection;
+import com.google.gerrit.server.index.group.GroupIndex;
+import com.google.gerrit.server.query.change.ChangeData;
import com.google.gerrit.testing.ConfigSuite;
+import com.google.inject.Inject;
+import com.google.inject.Module;
+import com.google.inject.assistedinject.Assisted;
+import java.util.Map;
import org.eclipse.jgit.lib.Config;
+import org.junit.Test;
/**
* Tests for a defaulted custom index configuration. This unknown type is the opposite of {@link
@@ -24,10 +44,70 @@ import org.eclipse.jgit.lib.Config;
*/
public class CustomIndexIT extends AbstractIndexTests {
+ @Override
+ public Module createModule() {
+ return CustomIndexModule.latestVersion(false);
+ }
+
@ConfigSuite.Default
public static Config customIndexType() {
Config config = new Config();
config.setString("index", null, "type", "custom");
return config;
}
+
+ @Inject private ChangeIndexCollection changeIndex;
+
+ @Test
+ public void customIndexModuleIsBound() throws Exception {
+ assertThat(changeIndex.getSearchIndex()).isInstanceOf(CustomModuleFakeIndexChange.class);
+ }
+}
+
+class CustomIndexModule extends AbstractIndexModule {
+
+ public static CustomIndexModule latestVersion(boolean secondary) {
+ return new CustomIndexModule(null, -1 /* direct executor */, secondary);
+ }
+
+ private CustomIndexModule(Map<String, Integer> singleVersions, int threads, boolean secondary) {
+ super(singleVersions, threads, secondary);
+ }
+
+ @Override
+ protected Class<? extends AccountIndex> getAccountIndex() {
+ return AbstractFakeIndex.FakeAccountIndex.class;
+ }
+
+ @Override
+ protected Class<? extends ChangeIndex> getChangeIndex() {
+ return CustomModuleFakeIndexChange.class;
+ }
+
+ @Override
+ protected Class<? extends GroupIndex> getGroupIndex() {
+ return AbstractFakeIndex.FakeGroupIndex.class;
+ }
+
+ @Override
+ protected Class<? extends ProjectIndex> getProjectIndex() {
+ return AbstractFakeIndex.FakeProjectIndex.class;
+ }
+
+ @Override
+ protected Class<? extends VersionManager> getVersionManager() {
+ return FakeIndexVersionManager.class;
+ }
+}
+
+class CustomModuleFakeIndexChange extends AbstractFakeIndex.FakeChangeIndex {
+
+ @com.google.inject.Inject
+ CustomModuleFakeIndexChange(
+ SitePaths sitePaths,
+ ChangeData.Factory changeDataFactory,
+ @Assisted Schema<ChangeData> schema,
+ @GerritServerConfig Config cfg) {
+ super(sitePaths, changeDataFactory, schema, cfg);
+ }
}