]> source.dussan.org Git - sonarqube.git/commitdiff
Fix Elasticsearch UT failing do incorrect order
authorJacek <jacek.poreda@sonarsource.com>
Thu, 31 Mar 2022 15:10:01 +0000 (17:10 +0200)
committersonartech <sonartech@sonarsource.com>
Thu, 31 Mar 2022 20:02:59 +0000 (20:02 +0000)
whne pruning data for each test case ES is performing soft deletes, which can affect query score results, recreating indexes fixes that problem

server/sonar-server-common/src/testFixtures/java/org/sonar/server/es/EsTester.java
server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexScoreTest.java

index 5ce592554f695df9874399efd3f40ff28e3d4268..9496da0b3283e4f3f91491b69508a87fea696902 100644 (file)
@@ -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,9 @@ 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());
     } catch (IOException e) {
       throw new IllegalStateException("Could not delete data from _all indices", e);
     }
index 8c7a547251eb15c5a78291cef669e9cb98396b74..3fbf4f34622748a00a6c7886fe568f74e088990a 100644 (file)
@@ -48,6 +48,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");