diff options
author | Jacek <jacek.poreda@sonarsource.com> | 2022-03-31 10:44:14 +0200 |
---|---|---|
committer | Jacek <jacek.poreda@sonarsource.com> | 2022-03-31 17:32:26 +0200 |
commit | db5bb420aa1732ee3ea519d9432ae5a56accd297 (patch) | |
tree | a324fdff0db2aab00ec8e71b7718f240de87e001 | |
parent | cc891bbeb8c26a4f2e75c96919d26f90419e60bf (diff) | |
download | sonarqube-jp/test-ut.tar.gz sonarqube-jp/test-ut.zip |
Testing UT failurejp/test-ut
6 files changed, 57 insertions, 5 deletions
diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/es/EsClient.java b/server/sonar-server-common/src/main/java/org/sonar/server/es/EsClient.java index 815cc343656..4ce776e79b1 100644 --- a/server/sonar-server-common/src/main/java/org/sonar/server/es/EsClient.java +++ b/server/sonar-server-common/src/main/java/org/sonar/server/es/EsClient.java @@ -261,7 +261,7 @@ public class EsClient implements Closeable { * * @return native ES client object */ - RestHighLevelClient nativeClient() { + public RestHighLevelClient nativeClient() { return restHighLevelClient; } diff --git a/server/sonar-server-common/src/testFixtures/java/org/sonar/server/es/EsTester.java b/server/sonar-server-common/src/testFixtures/java/org/sonar/server/es/EsTester.java index 5ce592554f6..0e49ac829e0 100644 --- a/server/sonar-server-common/src/testFixtures/java/org/sonar/server/es/EsTester.java +++ b/server/sonar-server-common/src/testFixtures/java/org/sonar/server/es/EsTester.java @@ -45,6 +45,7 @@ import org.apache.http.HttpHost; import org.elasticsearch.ElasticsearchStatusException; import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; +import org.elasticsearch.action.admin.indices.forcemerge.ForceMergeRequest; import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest; import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest; import org.elasticsearch.action.bulk.BulkRequest; @@ -170,6 +171,12 @@ public class EsTester extends ExternalResource { return new EsTester(true); } + public void recreateIndexes() { + deleteIndexIfExists(ALL_INDICES.getName()); + CORE_INDICES_CREATED.set(false); + create(); + } + @Override protected void after() { if (isCustom) { @@ -185,7 +192,8 @@ public class EsTester extends ExternalResource { private void deleteAllDocumentsInIndexes() { try { - ES_REST_CLIENT.nativeClient().deleteByQuery(new DeleteByQueryRequest(ALL_INDICES.getName()).setQuery(QueryBuilders.matchAllQuery()).setRefresh(true), RequestOptions.DEFAULT); + ES_REST_CLIENT.nativeClient().deleteByQuery(new DeleteByQueryRequest(ALL_INDICES.getName()).setQuery(QueryBuilders.matchAllQuery()).setRefresh(true).setWaitForActiveShards(1), RequestOptions.DEFAULT); + ES_REST_CLIENT.forcemerge(new ForceMergeRequest().onlyExpungeDeletes(true)); } catch (IOException e) { throw new IllegalStateException("Could not delete data from _all indices", e); } diff --git a/server/sonar-webserver-es/build.gradle b/server/sonar-webserver-es/build.gradle index 1e72c130fc7..38911977fea 100644 --- a/server/sonar-webserver-es/build.gradle +++ b/server/sonar-webserver-es/build.gradle @@ -26,3 +26,10 @@ dependencies { testFixturesApi testFixtures(project(':server:sonar-server-common')) } + +test { + testLogging { + outputs.upToDateWhen {false} + showStandardStreams = true + } +} diff --git a/server/sonar-webserver-es/src/main/java/org/sonar/server/component/index/ComponentIndex.java b/server/sonar-webserver-es/src/main/java/org/sonar/server/component/index/ComponentIndex.java index bfad1a0af01..56476820ec6 100644 --- a/server/sonar-webserver-es/src/main/java/org/sonar/server/component/index/ComponentIndex.java +++ b/server/sonar-webserver-es/src/main/java/org/sonar/server/component/index/ComponentIndex.java @@ -20,6 +20,7 @@ package org.sonar.server.component.index; import com.google.common.annotations.VisibleForTesting; +import java.io.IOException; import java.util.Arrays; import java.util.Collection; import java.util.List; @@ -27,8 +28,11 @@ import java.util.function.Consumer; import java.util.stream.Stream; import javax.annotation.Nullable; import org.apache.lucene.search.TotalHits; +import org.elasticsearch.action.explain.ExplainRequest; +import org.elasticsearch.action.explain.ExplainResponse; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.client.RequestOptions; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.search.SearchHit; @@ -129,10 +133,33 @@ public class ComponentIndex { SearchRequest request = EsClient.prepareSearch(TYPE_COMPONENT.getMainType()) .source(source); SearchResponse response = client.search(request); + System.err.println("--------"); + System.err.println("ES response"); + System.err.println(response.toString()); + System.err.println("ES explain"); + explainQuery(source, "UUID_quality", "auth_UUID_quality"); + explainQuery(source, "UUID_sonarqube", "auth_UUID_sonarqube"); + System.err.println("--------"); return aggregationsToQualifiers(response); } + private void explainQuery(SearchSourceBuilder source, String uuid_quality, String auth_uuid_quality) { + try { + ExplainResponse explain = client.nativeClient().explain( + new ExplainRequest(TYPE_COMPONENT.getMainType().getIndex().getName(), TYPE_COMPONENT.getMainType().getType(), + uuid_quality) + .routing(auth_uuid_quality) + .query(source.query()), RequestOptions.DEFAULT); + + if (explain.getExplanation() != null) { + System.err.println(explain.getExplanation().toString()); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + private static HighlightBuilder.Field createHighlighterField() { HighlightBuilder.Field field = new HighlightBuilder.Field(FIELD_NAME); field.highlighterType("fvh"); diff --git a/server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexScoreTest.java b/server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexScoreTest.java index 8c7a547251e..4c1c1609b79 100644 --- a/server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexScoreTest.java +++ b/server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexScoreTest.java @@ -26,6 +26,7 @@ import org.sonar.db.component.ComponentTesting; import org.sonar.server.es.textsearch.ComponentTextSearchFeatureRepertoire; import static java.util.Arrays.asList; +import static org.junit.Assert.fail; import static org.sonar.api.resources.Qualifiers.FILE; import static org.sonar.api.resources.Qualifiers.MODULE; import static org.sonar.api.resources.Qualifiers.PROJECT; @@ -48,6 +49,7 @@ public class ComponentIndexScoreTest extends ComponentIndexTest { @Test public void should_prefer_key_matching_over_name_matching() { + es.recreateIndexes(); ComponentDto project1 = indexProject("quality", "SonarQube"); ComponentDto project2 = indexProject("sonarqube", "Quality Product"); diff --git a/server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexTest.java b/server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexTest.java index c9ab8e5a55c..27d0dee7484 100644 --- a/server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexTest.java +++ b/server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexTest.java @@ -23,6 +23,7 @@ import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.Stream; import org.assertj.core.api.ListAssert; import org.junit.Rule; import org.sonar.api.utils.System2; @@ -90,9 +91,16 @@ public abstract class ComponentIndexTest { } protected ListAssert<String> assertSearch(SuggestionQuery query) { - return (ListAssert<String>) assertThat(index.searchSuggestions(query, features.get()).getQualifiers()) - .flatExtracting(ComponentHitsPerQualifier::getHits) - .extracting(ComponentHit::getUuid); + Stream<ComponentHitsPerQualifier> qualifiers = index.searchSuggestions(query, features.get()).getQualifiers(); + return (ListAssert<String>) assertThat(qualifiers) + .map(qualifier -> { + for (ComponentHit hit : qualifier.getHits()) { + System.err.println(hit.getUuid()); + } + return qualifier; + }) + .flatExtracting(ComponentHitsPerQualifier::getHits) + .extracting(ComponentHit::getUuid); } protected void assertSearchResults(String query, ComponentDto... expectedComponents) { |