aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJacek <jacek.poreda@sonarsource.com>2022-03-31 10:44:14 +0200
committerJacek <jacek.poreda@sonarsource.com>2022-03-31 17:32:26 +0200
commitdb5bb420aa1732ee3ea519d9432ae5a56accd297 (patch)
treea324fdff0db2aab00ec8e71b7718f240de87e001
parentcc891bbeb8c26a4f2e75c96919d26f90419e60bf (diff)
downloadsonarqube-jp/test-ut.tar.gz
sonarqube-jp/test-ut.zip
Testing UT failurejp/test-ut
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/es/EsClient.java2
-rw-r--r--server/sonar-server-common/src/testFixtures/java/org/sonar/server/es/EsTester.java10
-rw-r--r--server/sonar-webserver-es/build.gradle7
-rw-r--r--server/sonar-webserver-es/src/main/java/org/sonar/server/component/index/ComponentIndex.java27
-rw-r--r--server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexScoreTest.java2
-rw-r--r--server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexTest.java14
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) {