From 9b223226afa927f0b32aeee1d4820518aaa8ec36 Mon Sep 17 00:00:00 2001 From: Daniel Schwarz Date: Fri, 24 Feb 2017 13:27:54 +0100 Subject: [PATCH] SONAR-8092 only index empty types (not all types of an empty index) Old behaviour: If one of the types of an Indexer is empty, reindex all of its types. New behaviour: Reindex all empty types. --- .../component/index/ComponentIndexer.java | 2 +- .../sonar/server/es/IndexerStartupTask.java | 26 ++++-- .../org/sonar/server/es/StartupIndexer.java | 4 +- .../server/issue/index/IssueIndexer.java | 2 +- .../measure/index/ProjectMeasuresIndexer.java | 2 +- .../permission/index/PermissionIndexer.java | 82 ++++++++++--------- .../sonar/server/test/index/TestIndexer.java | 2 +- .../sonar/server/user/index/UserIndexer.java | 2 +- .../component/index/ComponentIndexerTest.java | 6 +- .../component/ws/SuggestionsActionTest.java | 2 +- .../server/es/IndexerStartupTaskTest.java | 3 +- .../server/issue/index/IssueIndexerTest.java | 10 +-- .../index/ProjectMeasuresIndexerTest.java | 16 ++-- .../index/PermissionIndexerTest.java | 22 +++-- .../server/test/index/TestIndexerTest.java | 8 +- .../sonar/server/test/ws/ListActionTest.java | 2 +- .../server/user/index/UserIndexerTest.java | 6 +- .../server/user/ws/SearchActionTest.java | 6 +- .../server/view/index/ViewIndexerTest.java | 4 +- 19 files changed, 116 insertions(+), 91 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/index/ComponentIndexer.java b/server/sonar-server/src/main/java/org/sonar/server/component/index/ComponentIndexer.java index 08078f17362..d5108be1cfd 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/index/ComponentIndexer.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/index/ComponentIndexer.java @@ -68,7 +68,7 @@ public class ComponentIndexer implements ProjectIndexer, NeedAuthorizationIndexe } @Override - public void indexOnStartup() { + public void indexOnStartup(Set emptyIndexTypes) { doIndexByProjectUuid(null); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/es/IndexerStartupTask.java b/server/sonar-server/src/main/java/org/sonar/server/es/IndexerStartupTask.java index 1dd9ef3d467..baae54c2d26 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/es/IndexerStartupTask.java +++ b/server/sonar-server/src/main/java/org/sonar/server/es/IndexerStartupTask.java @@ -19,11 +19,14 @@ */ package org.sonar.server.es; +import java.util.Set; +import java.util.stream.Collectors; import org.sonar.api.config.Settings; import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers; import static java.util.Arrays.stream; +import static java.util.stream.Collectors.toSet; public class IndexerStartupTask { @@ -42,9 +45,7 @@ public class IndexerStartupTask { public void execute() { if (indexesAreEnabled()) { stream(indexers) - .filter(this::doesIndexContainAtLeastOneEmptyType) - .peek(indexer -> LOG.info("Full reindexing using " + indexer.getClass().getSimpleName())) - .forEach(StartupIndexer::indexOnStartup); + .forEach(this::indexEmptyTypes); } } @@ -52,7 +53,22 @@ public class IndexerStartupTask { return !settings.getBoolean("sonar.internal.es.disableIndexes"); } - private boolean doesIndexContainAtLeastOneEmptyType(StartupIndexer indexer) { - return indexer.getIndexTypes().stream().filter(esClient::isEmpty).findAny().isPresent(); + private void indexEmptyTypes(StartupIndexer indexer) { + Set emptyTypes = getEmptyTypes(indexer); + if (!emptyTypes.isEmpty()) { + log(indexer, emptyTypes); + indexer.indexOnStartup(emptyTypes); + } + } + + private Set getEmptyTypes(StartupIndexer indexer) { + return indexer.getIndexTypes().stream().filter(esClient::isEmpty).collect(toSet()); + } + + private void log(StartupIndexer indexer, Set emptyTypes) { + String s = emptyTypes.size() == 1 ? "" : "s"; + String typeList = emptyTypes.stream().map(Object::toString).collect(Collectors.joining(",")); + String indexerName = indexer.getClass().getSimpleName(); + LOG.info("Full indexing of type{} {} using {}", s, typeList, indexerName); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/es/StartupIndexer.java b/server/sonar-server/src/main/java/org/sonar/server/es/StartupIndexer.java index efe2d98a1f5..d007e402713 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/es/StartupIndexer.java +++ b/server/sonar-server/src/main/java/org/sonar/server/es/StartupIndexer.java @@ -28,9 +28,9 @@ public interface StartupIndexer { /** * This reindexing method will only be called on startup, and only, - * if at least one of the types returned by {@link #getIndexTypes()} is empty. + * if there is at least one empty types. */ - void indexOnStartup(); + void indexOnStartup(Set emptyIndexTypes); Set getIndexTypes(); diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndexer.java b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndexer.java index 06d81746d2d..79d23bec070 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndexer.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueIndexer.java @@ -68,7 +68,7 @@ public class IssueIndexer implements ProjectIndexer, NeedAuthorizationIndexer, S } @Override - public void indexOnStartup() { + public void indexOnStartup(Set emptyIndexTypes) { doIndex(createBulkIndexer(true), (String) null); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndexer.java b/server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndexer.java index 69d226f370c..90d758916af 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndexer.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndexer.java @@ -58,7 +58,7 @@ public class ProjectMeasuresIndexer implements ProjectIndexer, NeedAuthorization } @Override - public void indexOnStartup() { + public void indexOnStartup(Set emptyIndexTypes) { doIndex(createBulkIndexer(false), (String) null); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/index/PermissionIndexer.java b/server/sonar-server/src/main/java/org/sonar/server/permission/index/PermissionIndexer.java index 31993121c1a..570ca2d6e07 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/index/PermissionIndexer.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/index/PermissionIndexer.java @@ -33,7 +33,7 @@ import java.util.concurrent.Future; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import org.elasticsearch.action.bulk.BulkRequestBuilder; +import java.util.stream.Stream; import org.elasticsearch.action.index.IndexRequest; import org.picocontainer.Startable; import org.sonar.api.utils.DateUtils; @@ -42,13 +42,12 @@ import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.server.es.BulkIndexer; import org.sonar.server.es.EsClient; -import org.sonar.server.es.EsUtils; import org.sonar.server.es.IndexType; import org.sonar.server.es.ProjectIndexer; import org.sonar.server.es.StartupIndexer; +import org.sonar.server.permission.index.PermissionIndexerDao.Dto; import static com.google.common.base.Preconditions.checkArgument; -import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery; import static org.sonar.core.util.stream.Collectors.toSet; /** @@ -63,8 +62,6 @@ public class PermissionIndexer implements ProjectIndexer, Startable, StartupInde @VisibleForTesting static final int MAX_BATCH_SIZE = 1000; - private static final String BULK_ERROR_MESSAGE = "Fail to index authorization"; - private final ThreadPoolExecutor executor; private final DbClient dbClient; private final EsClient esClient; @@ -92,15 +89,11 @@ public class PermissionIndexer implements ProjectIndexer, Startable, StartupInde } @Override - public void indexOnStartup() { + public void indexOnStartup(Set emptyIndexTypes) { Future submit = executor.submit(() -> { - authorizationScopes.stream() - .map(AuthorizationScope::getIndexType) - .forEach(this::truncateAuthorizationType); - - try (DbSession dbSession = dbClient.openSession(false)) { - index(new PermissionIndexerDao().selectAll(dbClient, dbSession)); - } + List authorizations = getAllAuthorizations(); + Stream scopes = getScopes(emptyIndexTypes); + index(authorizations, scopes); }); try { Uninterruptibles.getUninterruptibly(submit); @@ -109,10 +102,22 @@ public class PermissionIndexer implements ProjectIndexer, Startable, StartupInde } } + private List getAllAuthorizations() { + try (DbSession dbSession = dbClient.openSession(false)) { + return new PermissionIndexerDao().selectAll(dbClient, dbSession); + } + } + public void indexProjectsByUuids(DbSession dbSession, List viewOrProjectUuids) { checkArgument(!viewOrProjectUuids.isEmpty(), "viewOrProjectUuids cannot be empty"); PermissionIndexerDao dao = new PermissionIndexerDao(); - index(dao.selectByUuids(dbClient, dbSession, viewOrProjectUuids)); + List authorizations = dao.selectByUuids(dbClient, dbSession, viewOrProjectUuids); + index(authorizations); + } + + @VisibleForTesting + void index(List authorizations) { + index(authorizations, authorizationScopes.stream()); } @Override @@ -141,37 +146,36 @@ public class PermissionIndexer implements ProjectIndexer, Startable, StartupInde .get()); } - private void truncateAuthorizationType(IndexType indexType) { - BulkIndexer.delete(esClient, indexType.getIndex(), esClient.prepareSearch(indexType).setQuery(matchAllQuery())); + private Stream getScopes(Set indexTypes) { + return authorizationScopes.stream() + .filter(scope -> indexTypes.contains(scope.getIndexType())); } - @VisibleForTesting - void index(Collection authorizations) { + private void index(Collection authorizations, Stream scopes) { if (authorizations.isEmpty()) { return; } - int count = 0; - BulkRequestBuilder bulkRequest = esClient.prepareBulk().setRefresh(false); - for (PermissionIndexerDao.Dto dto : authorizations) { - for (AuthorizationScope scope : authorizationScopes) { - if (scope.getProjectPredicate().test(dto)) { - bulkRequest.add(newIndexRequest(dto, scope.getIndexType())); - count++; - } - } - if (count >= MAX_BATCH_SIZE) { - EsUtils.executeBulkRequest(bulkRequest, BULK_ERROR_MESSAGE); - bulkRequest = esClient.prepareBulk().setRefresh(false); - count = 0; - } - } - if (count > 0) { - EsUtils.executeBulkRequest(bulkRequest, BULK_ERROR_MESSAGE); - } - authorizationScopes.forEach(type -> esClient.prepareRefresh(type.getIndexType().getIndex()).get()); + + // index each authorization in each scope + scopes.forEach(scope -> index(authorizations, scope)); + } + + private void index(Collection authorizations, AuthorizationScope scope) { + IndexType indexType = scope.getIndexType(); + + BulkIndexer bulkIndexer = new BulkIndexer(esClient, indexType.getIndex()); + bulkIndexer.setLarge(/* TODO */false); + bulkIndexer.start(); + + authorizations.stream() + .filter(scope.getProjectPredicate()) + .map(dto -> newIndexRequest(dto, indexType)) + .forEach(bulkIndexer::add); + + bulkIndexer.stop(); } - private static IndexRequest newIndexRequest(PermissionIndexerDao.Dto dto, IndexType indexTypeId) { + private static IndexRequest newIndexRequest(PermissionIndexerDao.Dto dto, IndexType indexType) { Map doc = new HashMap<>(); doc.put(AuthorizationTypeSupport.FIELD_UPDATED_AT, DateUtils.longToDate(dto.getUpdatedAt())); if (dto.isAllowAnyone()) { @@ -182,7 +186,7 @@ public class PermissionIndexer implements ProjectIndexer, Startable, StartupInde doc.put(AuthorizationTypeSupport.FIELD_GROUP_IDS, dto.getGroupIds()); doc.put(AuthorizationTypeSupport.FIELD_USER_IDS, dto.getUserIds()); } - return new IndexRequest(indexTypeId.getIndex(), indexTypeId.getType(), dto.getProjectUuid()) + return new IndexRequest(indexType.getIndex(), indexType.getType(), dto.getProjectUuid()) .routing(dto.getProjectUuid()) .source(doc); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/test/index/TestIndexer.java b/server/sonar-server/src/main/java/org/sonar/server/test/index/TestIndexer.java index af3a4f7a120..f73b15f03c1 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/test/index/TestIndexer.java +++ b/server/sonar-server/src/main/java/org/sonar/server/test/index/TestIndexer.java @@ -75,7 +75,7 @@ public class TestIndexer implements ProjectIndexer, StartupIndexer { } @Override - public void indexOnStartup() { + public void indexOnStartup(Set emptyIndexTypes) { doIndex(null, Cause.NEW_ANALYSIS); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/index/UserIndexer.java b/server/sonar-server/src/main/java/org/sonar/server/user/index/UserIndexer.java index a2f7f720d1f..0589b99a149 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/user/index/UserIndexer.java +++ b/server/sonar-server/src/main/java/org/sonar/server/user/index/UserIndexer.java @@ -50,7 +50,7 @@ public class UserIndexer implements StartupIndexer { } @Override - public void indexOnStartup() { + public void indexOnStartup(Set emptyIndexTypes) { doIndex(null); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/index/ComponentIndexerTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/index/ComponentIndexerTest.java index 39581cc2e02..db53112cdb0 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/index/ComponentIndexerTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/index/ComponentIndexerTest.java @@ -66,8 +66,8 @@ public class ComponentIndexerTest { public void index_on_startup() { ComponentIndexer indexer = spy(createIndexer()); doNothing().when(indexer).index(); - indexer.indexOnStartup(); - verify(indexer).indexOnStartup(); + indexer.indexOnStartup(null); + verify(indexer).indexOnStartup(null); } @Test @@ -178,7 +178,7 @@ public class ComponentIndexerTest { } private void index() { - createIndexer().indexOnStartup(); + createIndexer().indexOnStartup(null); } private void index(ComponentDto component) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/SuggestionsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/SuggestionsActionTest.java index 7eb714bd879..0831417824a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/SuggestionsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/SuggestionsActionTest.java @@ -67,7 +67,7 @@ public class SuggestionsActionTest { public void exact_match_in_one_qualifier() { ComponentDto project = db.components().insertComponent(newProjectDto(organization)); - componentIndexer.indexOnStartup(); + componentIndexer.indexOnStartup(null); authorizationIndexerTester.allowOnlyAnyone(project); SuggestionsWsResponse response = action.doHandle(project.getKey()); diff --git a/server/sonar-server/src/test/java/org/sonar/server/es/IndexerStartupTaskTest.java b/server/sonar-server/src/test/java/org/sonar/server/es/IndexerStartupTaskTest.java index 1fc4ca64a29..1730f9933c7 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/es/IndexerStartupTaskTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/es/IndexerStartupTaskTest.java @@ -22,6 +22,7 @@ package org.sonar.server.es; import com.google.common.collect.ImmutableSet; import org.junit.Rule; import org.junit.Test; +import org.mockito.Mockito; import org.sonar.api.config.MapSettings; import org.sonar.api.utils.System2; import org.sonar.db.DbTester; @@ -60,7 +61,7 @@ public class IndexerStartupTaskTest { emulateStartup(indexer); verify(indexer).getIndexTypes(); - verify(indexer).indexOnStartup(); + verify(indexer).indexOnStartup(Mockito.eq(ImmutableSet.of(INDEX_TYPE_FAKE))); } private void insertDocumentIntoIndex() { diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexerTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexerTest.java index fde781689c5..f6fec3fb5f9 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexerTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexerTest.java @@ -57,9 +57,9 @@ public class IssueIndexerTest { @Test public void index_on_startup() { IssueIndexer indexer = spy(underTest); - doNothing().when(indexer).indexOnStartup(); - indexer.indexOnStartup(); - verify(indexer).indexOnStartup(); + doNothing().when(indexer).indexOnStartup(null); + indexer.indexOnStartup(null); + verify(indexer).indexOnStartup(null); } @Test @@ -73,7 +73,7 @@ public class IssueIndexerTest { public void index_all_issues() { dbTester.prepareDbUnit(getClass(), "index.xml"); - underTest.indexOnStartup(); + underTest.indexOnStartup(null); List docs = esTester.getDocuments(IssueIndexDefinition.INDEX_TYPE_ISSUE, IssueDoc.class); assertThat(docs).hasSize(1); @@ -125,7 +125,7 @@ public class IssueIndexerTest { public void deleteProject_deletes_issues_of_a_specific_project() { dbTester.prepareDbUnit(getClass(), "index.xml"); - underTest.indexOnStartup(); + underTest.indexOnStartup(null); assertThat(esTester.countDocuments("issues", "issue")).isEqualTo(1); diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexerTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexerTest.java index b157ef3e265..b2f8d88f76b 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexerTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexerTest.java @@ -59,14 +59,14 @@ public class ProjectMeasuresIndexerTest { @Test public void index_on_startup() { ProjectMeasuresIndexer indexer = spy(underTest); - doNothing().when(indexer).indexOnStartup(); - indexer.indexOnStartup(); - verify(indexer).indexOnStartup(); + doNothing().when(indexer).indexOnStartup(null); + indexer.indexOnStartup(null); + verify(indexer).indexOnStartup(null); } @Test public void index_nothing() { - underTest.indexOnStartup(); + underTest.indexOnStartup(null); assertThat(esTester.countDocuments(INDEX_TYPE_PROJECT_MEASURES)).isZero(); } @@ -78,7 +78,7 @@ public class ProjectMeasuresIndexerTest { componentDbTester.insertProjectAndSnapshot(newProjectDto(organizationDto)); componentDbTester.insertProjectAndSnapshot(newProjectDto(organizationDto)); - underTest.indexOnStartup(); + underTest.indexOnStartup(null); assertThat(esTester.countDocuments(INDEX_TYPE_PROJECT_MEASURES)).isEqualTo(3); } @@ -90,7 +90,7 @@ public class ProjectMeasuresIndexerTest { public void index_provisioned_projects() { ComponentDto project = componentDbTester.insertProject(); - underTest.indexOnStartup(); + underTest.indexOnStartup(null); assertThat(esTester.getIds(INDEX_TYPE_PROJECT_MEASURES)).containsOnly(project.uuid()); } @@ -159,7 +159,7 @@ public class ProjectMeasuresIndexerTest { componentDbTester.insertProjectAndSnapshot(project2); ComponentDto project3 = newProjectDto(organizationDto); componentDbTester.insertProjectAndSnapshot(project3); - underTest.indexOnStartup(); + underTest.indexOnStartup(null); underTest.deleteProject(project1.uuid()); @@ -170,7 +170,7 @@ public class ProjectMeasuresIndexerTest { public void does_nothing_when_deleting_unknown_project() throws Exception { ComponentDto project = newProjectDto(dbTester.organizations().insert()); componentDbTester.insertProjectAndSnapshot(project); - underTest.indexOnStartup(); + underTest.indexOnStartup(null); underTest.deleteProject("UNKNOWN"); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/index/PermissionIndexerTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/index/PermissionIndexerTest.java index 9a6c0a78618..530654c754d 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/index/PermissionIndexerTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/index/PermissionIndexerTest.java @@ -82,7 +82,7 @@ public class PermissionIndexerTest { userDbTester.insertProjectPermissionOnUser(user1, USER, project); userDbTester.insertProjectPermissionOnUser(user2, ADMIN, project); - underTest.indexOnStartup(); + indexOnStartup(); // anonymous verifyAnyoneNotAuthorized(project); @@ -105,7 +105,7 @@ public class PermissionIndexerTest { userDbTester.insertProjectPermissionOnGroup(group1, USER, project); userDbTester.insertProjectPermissionOnGroup(group2, ADMIN, project); - underTest.indexOnStartup(); + indexOnStartup(); // anonymous verifyAnyoneNotAuthorized(project); @@ -130,7 +130,7 @@ public class PermissionIndexerTest { userDbTester.insertProjectPermissionOnUser(user1, USER, project); userDbTester.insertProjectPermissionOnGroup(group, USER, project); - underTest.indexOnStartup(); + indexOnStartup(); // anonymous verifyAnyoneNotAuthorized(project); @@ -151,7 +151,7 @@ public class PermissionIndexerTest { UserDto user = userDbTester.insertUser(); GroupDto group = userDbTester.insertGroup(); - underTest.indexOnStartup(); + indexOnStartup(); verifyAnyoneNotAuthorized(project); verifyNotAuthorized(project, user); @@ -165,7 +165,7 @@ public class PermissionIndexerTest { GroupDto group = userDbTester.insertGroup(); userDbTester.insertProjectPermissionOnAnyone(USER, project); - underTest.indexOnStartup(); + indexOnStartup(); verifyAnyoneAuthorized(project); verifyAuthorized(project, user); @@ -182,7 +182,7 @@ public class PermissionIndexerTest { userDbTester.insertProjectPermissionOnUser(user1, USER, project); } - underTest.indexOnStartup(); + indexOnStartup(); verifyAnyoneNotAuthorized(project); verifyAuthorized(project, user1); @@ -195,7 +195,7 @@ public class PermissionIndexerTest { ComponentDto project2 = createAndIndexProject(); userDbTester.insertProjectPermissionOnAnyone(USER, project1); userDbTester.insertProjectPermissionOnAnyone(USER, project2); - underTest.indexOnStartup(); + indexOnStartup(); assertThat(esTester.countDocuments(INDEX_TYPE_FOO_AUTH)).isEqualTo(2); underTest.deleteProject(project1.uuid()); @@ -219,7 +219,7 @@ public class PermissionIndexerTest { ComponentDto project = createAndIndexProject(); UserDto user1 = userDbTester.insertUser(); - underTest.indexOnStartup(); + indexOnStartup(); verifyAnyoneNotAuthorized(project); verifyNotAuthorized(project, user1); @@ -233,7 +233,7 @@ public class PermissionIndexerTest { userDbTester.insertProjectPermissionOnAnyone(USER, projectOnOrg1); userDbTester.insertProjectPermissionOnUser(user, USER, projectOnOrg2); - underTest.indexOnStartup(); + indexOnStartup(); verifyAnyoneAuthorized(projectOnOrg1); verifyAnyoneNotAuthorized(projectOnOrg2); @@ -241,6 +241,10 @@ public class PermissionIndexerTest { verifyAuthorized(projectOnOrg2, user); } + private void indexOnStartup() { + underTest.indexOnStartup(underTest.getIndexTypes()); + } + private void verifyAuthorized(ComponentDto project, UserDto user) { log_in(user); verifyAuthorized(project, true); diff --git a/server/sonar-server/src/test/java/org/sonar/server/test/index/TestIndexerTest.java b/server/sonar-server/src/test/java/org/sonar/server/test/index/TestIndexerTest.java index 6494036f53b..341bb2e0125 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/test/index/TestIndexerTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/test/index/TestIndexerTest.java @@ -72,9 +72,9 @@ public class TestIndexerTest { @Test public void index_on_startup() { TestIndexer indexer = spy(underTest); - doNothing().when(indexer).indexOnStartup(); - indexer.indexOnStartup(); - verify(indexer).indexOnStartup(); + doNothing().when(indexer).indexOnStartup(null); + indexer.indexOnStartup(null); + verify(indexer).indexOnStartup(null); } @Test @@ -82,7 +82,7 @@ public class TestIndexerTest { db.prepareDbUnit(getClass(), "db.xml"); TestTesting.updateDataColumn(db.getSession(), "FILE_UUID", TestTesting.newRandomTests(3)); - underTest.indexOnStartup(); + underTest.indexOnStartup(null); assertThat(countDocuments()).isEqualTo(3); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/test/ws/ListActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/test/ws/ListActionTest.java index f4a10f64476..4d2b0cdfa35 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/test/ws/ListActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/test/ws/ListActionTest.java @@ -285,7 +285,7 @@ public class ListActionTest { .setFileUuid(testFile.uuid()) .setTestData(asList(tests))); db.commit(); - testIndexer.indexOnStartup(); + testIndexer.indexOnStartup(null); } private static ListResponse call(TestRequest request) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/user/index/UserIndexerTest.java b/server/sonar-server/src/test/java/org/sonar/server/user/index/UserIndexerTest.java index 2def2c6e9cf..a293caee01d 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/user/index/UserIndexerTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/user/index/UserIndexerTest.java @@ -43,7 +43,7 @@ public class UserIndexerTest { @Test public void index_nothing() { UserIndexer indexer = createIndexer(); - indexer.indexOnStartup(); + indexer.indexOnStartup(null); assertThat(esTester.countDocuments(UserIndexDefinition.INDEX_TYPE_USER)).isEqualTo(0L); } @@ -52,7 +52,7 @@ public class UserIndexerTest { dbTester.prepareDbUnit(getClass(), "index.xml"); UserIndexer indexer = createIndexer(); - indexer.indexOnStartup(); + indexer.indexOnStartup(null); List docs = esTester.getDocuments(UserIndexDefinition.INDEX_TYPE_USER, UserDoc.class); assertThat(docs).hasSize(1); @@ -71,7 +71,7 @@ public class UserIndexerTest { UserDto user = dbTester.users().insertUser(); UserIndexer indexer = createIndexer(); - indexer.indexOnStartup(); + indexer.indexOnStartup(null); List docs = esTester.getDocuments(UserIndexDefinition.INDEX_TYPE_USER, UserDoc.class); assertThat(docs).hasSize(1); diff --git a/server/sonar-server/src/test/java/org/sonar/server/user/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/user/ws/SearchActionTest.java index ba5c5755547..cf5dc37bec4 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/user/ws/SearchActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/user/ws/SearchActionTest.java @@ -92,7 +92,7 @@ public class SearchActionTest { } dbClient.userTokenDao().insert(dbSession, newUserToken().setLogin(fmallet.getLogin())); db.commit(); - userIndexer.indexOnStartup(); + userIndexer.indexOnStartup(null); loginAsSystemAdministrator(); String response = ws.newGetRequest("api/users", "search").execute().outputAsString(); @@ -213,7 +213,7 @@ public class SearchActionTest { dbClient.userDao().insert(dbSession, UserTesting.newUserDto("john", "John", "john@email.com")); dbSession.commit(); - userIndexer.indexOnStartup(); + userIndexer.indexOnStartup(null); ws.newGetRequest("api/users", "search").execute().assertJson( "{" + @@ -255,7 +255,7 @@ public class SearchActionTest { } } dbSession.commit(); - userIndexer.indexOnStartup(); + userIndexer.indexOnStartup(null); return userDtos; } diff --git a/server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java b/server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java index 1760758594d..5af146d43c0 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java @@ -75,7 +75,7 @@ public class ViewIndexerTest { @Test public void index_nothing() { - underTest.indexOnStartup(); + underTest.indexOnStartup(null); assertThat(esTester.countDocuments(ViewIndexDefinition.INDEX_TYPE_VIEW)).isEqualTo(0L); } @@ -83,7 +83,7 @@ public class ViewIndexerTest { public void index() { dbTester.prepareDbUnit(getClass(), "index.xml"); - underTest.indexOnStartup(); + underTest.indexOnStartup(null); List docs = esTester.getDocuments(ViewIndexDefinition.INDEX_TYPE_VIEW, ViewDoc.class); assertThat(docs).hasSize(4); -- 2.39.5