diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/pgm/ReindexIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/pgm/ReindexIT.java index 8a4aff26af..145a5b9259 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/pgm/ReindexIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/pgm/ReindexIT.java @@ -42,8 +42,6 @@ public class ReindexIT extends StandaloneSiteTest { elasticNodeInfo = ElasticTestUtils.startElasticsearchNode(); } String indicesPrefix = UUID.randomUUID().toString(); - ElasticTestUtils.createAllIndexes(elasticNodeInfo, indicesPrefix); - Config cfg = new Config(); ElasticTestUtils.configure(cfg, elasticNodeInfo.port, indicesPrefix); return cfg; @@ -56,6 +54,9 @@ public class ReindexIT extends StandaloneSiteTest { Project.NameKey project = new Project.NameKey("project"); String changeId; try (ServerContext ctx = startServer()) { + if (elasticNodeInfo != null) { + ElasticTestUtils.createAllIndexes(ctx.getInjector()); + } GerritApi gApi = ctx.getInjector().getInstance(GerritApi.class); gApi.projects().create("project"); diff --git a/gerrit-elasticsearch/BUILD b/gerrit-elasticsearch/BUILD index 3b7570d778..719fffb972 100644 --- a/gerrit-elasticsearch/BUILD +++ b/gerrit-elasticsearch/BUILD @@ -39,6 +39,7 @@ java_library( "//lib:gson", "//lib:truth", "//lib/elasticsearch", + "//lib/guice", "//lib/jgit/org.eclipse.jgit:jgit", ], ) @@ -54,6 +55,7 @@ junit_tests( ":elasticsearch", ":elasticsearch_test_utils", "//gerrit-server:query_tests_code", + "//gerrit-server:server", "//gerrit-server:testutil", "//lib/guice", "//lib/jgit/org.eclipse.jgit:jgit", diff --git a/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/testing/ElasticTestUtils.java b/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/testing/ElasticTestUtils.java index 9ac582a46a..51abf0a225 100644 --- a/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/testing/ElasticTestUtils.java +++ b/gerrit-elasticsearch/src/main/java/com/google/gerrit/elasticsearch/testing/ElasticTestUtils.java @@ -15,32 +15,21 @@ package com.google.gerrit.elasticsearch.testing; import static com.google.common.truth.Truth.assertThat; -import static com.google.gerrit.elasticsearch.ElasticAccountIndex.ACCOUNTS; -import static com.google.gerrit.elasticsearch.ElasticChangeIndex.CHANGES; -import static com.google.gerrit.elasticsearch.ElasticChangeIndex.CLOSED_CHANGES; -import static com.google.gerrit.elasticsearch.ElasticChangeIndex.OPEN_CHANGES; -import static com.google.gerrit.elasticsearch.ElasticGroupIndex.GROUPS; import com.google.common.base.Strings; import com.google.common.io.Files; -import com.google.gerrit.elasticsearch.ElasticAccountIndex; -import com.google.gerrit.elasticsearch.ElasticAccountIndex.AccountMapping; -import com.google.gerrit.elasticsearch.ElasticChangeIndex.ChangeMapping; -import com.google.gerrit.elasticsearch.ElasticGroupIndex; -import com.google.gerrit.elasticsearch.ElasticGroupIndex.GroupMapping; -import com.google.gerrit.reviewdb.client.AccountGroup; -import com.google.gerrit.server.account.AccountState; +import com.google.gerrit.server.index.IndexDefinition; import com.google.gerrit.server.index.IndexModule.IndexType; -import com.google.gerrit.server.index.Schema; -import com.google.gerrit.server.index.account.AccountSchemaDefinitions; -import com.google.gerrit.server.index.change.ChangeSchemaDefinitions; -import com.google.gerrit.server.index.group.GroupSchemaDefinitions; -import com.google.gerrit.server.query.change.ChangeData; import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.inject.Injector; +import com.google.inject.Key; +import com.google.inject.TypeLiteral; import java.io.File; +import java.io.IOException; import java.nio.file.Path; +import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.concurrent.ExecutionException; @@ -51,11 +40,6 @@ import org.elasticsearch.node.Node; import org.elasticsearch.node.NodeBuilder; public final class ElasticTestUtils { - static final Gson gson = - new GsonBuilder() - .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) - .create(); - public static class ElasticNodeInfo { public final Node node; public final String port; @@ -109,38 +93,6 @@ public final class ElasticTestUtils { return new ElasticNodeInfo(node, elasticDir, getHttpPort(node)); } - public static void deleteAllIndexes(ElasticNodeInfo nodeInfo, String prefix) { - Schema changeSchema = ChangeSchemaDefinitions.INSTANCE.getLatest(); - nodeInfo - .node - .client() - .admin() - .indices() - .prepareDelete(String.format("%s%s_%04d", prefix, CHANGES, changeSchema.getVersion())) - .execute() - .actionGet(); - - Schema accountSchema = AccountSchemaDefinitions.INSTANCE.getLatest(); - nodeInfo - .node - .client() - .admin() - .indices() - .prepareDelete(String.format("%s%s_%04d", prefix, ACCOUNTS, accountSchema.getVersion())) - .execute() - .actionGet(); - - Schema groupSchema = GroupSchemaDefinitions.INSTANCE.getLatest(); - nodeInfo - .node - .client() - .admin() - .indices() - .prepareDelete(String.format("%s%s_%04d", prefix, GROUPS, groupSchema.getVersion())) - .execute() - .actionGet(); - } - public static class NodeInfo { String httpAddress; } @@ -149,46 +101,12 @@ public final class ElasticTestUtils { Map nodes; } - public static void createAllIndexes(ElasticNodeInfo nodeInfo, String prefix) { - Schema changeSchema = ChangeSchemaDefinitions.INSTANCE.getLatest(); - ChangeMapping openChangesMapping = new ChangeMapping(changeSchema); - ChangeMapping closedChangesMapping = new ChangeMapping(changeSchema); - openChangesMapping.closedChanges = null; - closedChangesMapping.openChanges = null; - nodeInfo - .node - .client() - .admin() - .indices() - .prepareCreate(String.format("%s%s_%04d", prefix, CHANGES, changeSchema.getVersion())) - .addMapping(OPEN_CHANGES, gson.toJson(openChangesMapping)) - .addMapping(CLOSED_CHANGES, gson.toJson(closedChangesMapping)) - .execute() - .actionGet(); - - Schema accountSchema = AccountSchemaDefinitions.INSTANCE.getLatest(); - AccountMapping accountMapping = new AccountMapping(accountSchema); - nodeInfo - .node - .client() - .admin() - .indices() - .prepareCreate(String.format("%s%s_%04d", prefix, ACCOUNTS, accountSchema.getVersion())) - .addMapping(ElasticAccountIndex.ACCOUNTS, gson.toJson(accountMapping)) - .execute() - .actionGet(); - - Schema groupSchema = GroupSchemaDefinitions.INSTANCE.getLatest(); - GroupMapping groupMapping = new GroupMapping(groupSchema); - nodeInfo - .node - .client() - .admin() - .indices() - .prepareCreate(String.format("%s%s_%04d", prefix, GROUPS, groupSchema.getVersion())) - .addMapping(ElasticGroupIndex.GROUPS, gson.toJson(groupMapping)) - .execute() - .actionGet(); + public static void createAllIndexes(Injector injector) throws IOException { + Collection> indexDefs = + injector.getInstance(Key.get(new TypeLiteral>>() {})); + for (IndexDefinition indexDef : indexDefs) { + indexDef.getIndexCollection().getSearchIndex().deleteAll(); + } } private static String getHttpPort(Node node) throws InterruptedException, ExecutionException { diff --git a/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryAccountsTest.java b/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryAccountsTest.java index 57654360c9..17ff61cdfc 100644 --- a/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryAccountsTest.java +++ b/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryAccountsTest.java @@ -22,7 +22,6 @@ import com.google.inject.Guice; import com.google.inject.Injector; import java.util.concurrent.ExecutionException; import org.eclipse.jgit.lib.Config; -import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -51,11 +50,10 @@ public class ElasticQueryAccountsTest extends AbstractQueryAccountsTest { return testName.getMethodName().toLowerCase() + "_"; } - @After - public void cleanupIndex() { - if (nodeInfo != null) { - ElasticTestUtils.deleteAllIndexes(nodeInfo, testName()); - } + @Override + protected void initAfterLifecycleStart() throws Exception { + super.initAfterLifecycleStart(); + ElasticTestUtils.createAllIndexes(injector); } @Override @@ -64,7 +62,6 @@ public class ElasticQueryAccountsTest extends AbstractQueryAccountsTest { InMemoryModule.setDefaults(elasticsearchConfig); String indicesPrefix = testName(); ElasticTestUtils.configure(elasticsearchConfig, nodeInfo.port, indicesPrefix); - ElasticTestUtils.createAllIndexes(nodeInfo, indicesPrefix); return Guice.createInjector(new InMemoryModule(elasticsearchConfig, notesMigration)); } } diff --git a/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryChangesTest.java b/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryChangesTest.java index ee90449f10..3c7ccceaa6 100644 --- a/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryChangesTest.java +++ b/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryChangesTest.java @@ -24,7 +24,6 @@ import com.google.inject.Injector; import java.util.concurrent.ExecutionException; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.lib.Config; -import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Rule; @@ -58,11 +57,10 @@ public class ElasticQueryChangesTest extends AbstractQueryChangesTest { return testName.getMethodName().toLowerCase() + "_"; } - @After - public void cleanupIndex() { - if (nodeInfo != null) { - ElasticTestUtils.deleteAllIndexes(nodeInfo, testName()); - } + @Override + protected void initAfterLifecycleStart() throws Exception { + super.initAfterLifecycleStart(); + ElasticTestUtils.createAllIndexes(injector); } @Override @@ -71,7 +69,6 @@ public class ElasticQueryChangesTest extends AbstractQueryChangesTest { InMemoryModule.setDefaults(elasticsearchConfig); String indicesPrefix = testName(); ElasticTestUtils.configure(elasticsearchConfig, nodeInfo.port, indicesPrefix); - ElasticTestUtils.createAllIndexes(nodeInfo, indicesPrefix); return Guice.createInjector(new InMemoryModule(elasticsearchConfig, notesMigration)); } diff --git a/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryGroupsTest.java b/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryGroupsTest.java index b9912d3a9a..ed25a9a227 100644 --- a/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryGroupsTest.java +++ b/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticQueryGroupsTest.java @@ -22,7 +22,6 @@ import com.google.inject.Guice; import com.google.inject.Injector; import java.util.concurrent.ExecutionException; import org.eclipse.jgit.lib.Config; -import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -51,11 +50,10 @@ public class ElasticQueryGroupsTest extends AbstractQueryGroupsTest { return testName.getMethodName().toLowerCase() + "_"; } - @After - public void cleanupIndex() { - if (nodeInfo != null) { - ElasticTestUtils.deleteAllIndexes(nodeInfo, testName()); - } + @Override + protected void initAfterLifecycleStart() throws Exception { + super.initAfterLifecycleStart(); + ElasticTestUtils.createAllIndexes(injector); } @Override @@ -64,7 +62,6 @@ public class ElasticQueryGroupsTest extends AbstractQueryGroupsTest { InMemoryModule.setDefaults(elasticsearchConfig); String indicesPrefix = testName(); ElasticTestUtils.configure(elasticsearchConfig, nodeInfo.port, indicesPrefix); - ElasticTestUtils.createAllIndexes(nodeInfo, indicesPrefix); return Guice.createInjector(new InMemoryModule(elasticsearchConfig, notesMigration)); } } diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/account/AbstractQueryAccountsTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/account/AbstractQueryAccountsTest.java index 85bd69e566..1cf3728a26 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/query/account/AbstractQueryAccountsTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/account/AbstractQueryAccountsTest.java @@ -109,6 +109,7 @@ public abstract class AbstractQueryAccountsTest extends GerritServerTests { @Inject protected AllProjectsName allProjects; + protected Injector injector; protected LifecycleManager lifecycle; protected ReviewDb db; protected AccountInfo currentUserInfo; @@ -119,11 +120,11 @@ public abstract class AbstractQueryAccountsTest extends GerritServerTests { @Before public void setUpInjector() throws Exception { lifecycle = new LifecycleManager(); - Injector injector = createInjector(); + injector = createInjector(); lifecycle.add(injector); injector.injectMembers(this); lifecycle.start(); - + initAfterLifecycleStart(); db = schemaFactory.open(); schemaCreator.create(db); @@ -139,6 +140,8 @@ public abstract class AbstractQueryAccountsTest extends GerritServerTests { db.close(); } + protected void initAfterLifecycleStart() throws Exception {} + protected RequestContext newRequestContext(Account.Id requestUserId) { final CurrentUser requestUser = userFactory.create(requestUserId); return new RequestContext() { diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java index 38637e3501..e48119b7bd 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java @@ -181,7 +181,7 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests { private String systemTimeZone; - protected abstract Injector createInjector(); + protected abstract Injector createInjector() throws Exception; @Before public void setUpInjector() throws Exception { @@ -190,6 +190,7 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests { lifecycle.add(injector); injector.injectMembers(this); lifecycle.start(); + initAfterLifecycleStart(); setUpDatabase(); } @@ -199,6 +200,8 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests { db.close(); } + protected void initAfterLifecycleStart() throws Exception {} + protected void setUpDatabase() throws Exception { db = schemaFactory.open(); schemaCreator.create(db); diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/group/AbstractQueryGroupsTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/group/AbstractQueryGroupsTest.java index 81f455dd45..52b75eb972 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/query/group/AbstractQueryGroupsTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/group/AbstractQueryGroupsTest.java @@ -97,6 +97,7 @@ public abstract class AbstractQueryGroupsTest extends GerritServerTests { @Inject protected GroupCache groupCache; + protected Injector injector; protected LifecycleManager lifecycle; protected ReviewDb db; protected AccountInfo currentUserInfo; @@ -107,11 +108,11 @@ public abstract class AbstractQueryGroupsTest extends GerritServerTests { @Before public void setUpInjector() throws Exception { lifecycle = new LifecycleManager(); - Injector injector = createInjector(); + injector = createInjector(); lifecycle.add(injector); injector.injectMembers(this); lifecycle.start(); - + initAfterLifecycleStart(); db = schemaFactory.open(); schemaCreator.create(db); @@ -127,6 +128,8 @@ public abstract class AbstractQueryGroupsTest extends GerritServerTests { db.close(); } + protected void initAfterLifecycleStart() throws Exception {} + protected RequestContext newRequestContext(Account.Id requestUserId) { final CurrentUser requestUser = userFactory.create(requestUserId); return new RequestContext() {