]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-13188 update telemetry project count query to ignore applications
authorJacek <jacek.poreda@sonarsource.com>
Tue, 7 Apr 2020 13:34:48 +0000 (15:34 +0200)
committersonartech <sonartech@sonarsource.com>
Wed, 15 Apr 2020 20:03:38 +0000 (20:03 +0000)
server/sonar-webserver-es/src/main/java/org/sonar/server/measure/index/ProjectMeasuresIndex.java
server/sonar-webserver-es/src/test/java/org/sonar/server/measure/index/ProjectMeasuresIndexTest.java

index 029b9ffbca3e08aea3ae6cd27e1f4f14206653d3..820b2c8033a781fe8eaa8b405f3f1cfa2f94c474 100644 (file)
@@ -242,7 +242,9 @@ public class ProjectMeasuresIndex {
       .setFetchSource(false)
       .setSize(0);
 
-    BoolQueryBuilder esFilter = boolQuery();
+    BoolQueryBuilder esFilter = boolQuery()
+      .filter(termQuery(FIELD_INDEX_TYPE, TYPE_PROJECT_MEASURES.getName()))
+      .filter(termQuery(FIELD_QUALIFIER, Qualifiers.PROJECT));
     request.setQuery(esFilter);
     request.addAggregation(AggregationBuilders.terms(FIELD_LANGUAGES)
       .field(FIELD_LANGUAGES)
index f8ce765abf673acd68e7820b00e45d079364f0cd..90887064a9d7fc850b626b7f7ba2ad301dc895d0 100644 (file)
@@ -497,7 +497,7 @@ public class ProjectMeasuresIndexTest {
 
   @Test
   public void filter_on_qualifier() {
-    index(newDoc(PROJECT1), newDoc(PROJECT2),  newDoc(PROJECT3),
+    index(newDoc(PROJECT1), newDoc(PROJECT2), newDoc(PROJECT3),
       newDoc(APP1), newDoc(APP2), newDoc(APP3));
 
     assertResults(new ProjectMeasuresQuery(),
@@ -1612,6 +1612,51 @@ public class ProjectMeasuresIndexTest {
       entry("java", 500L), entry("cs", 250L), entry("js", 50L), entry("python", 100L), entry("kotlin", 404L));
   }
 
+  @Test
+  public void search_statistics_should_ignore_applications() {
+    es.putDocuments(TYPE_PROJECT_MEASURES,
+      // insert projects
+      newDoc(ComponentTesting.newPrivateProjectDto(ORG), "lines", 10, "coverage", 80)
+        .setLanguages(Arrays.asList("java", "cs", "js"))
+        .setNclocLanguageDistributionFromMap(ImmutableMap.of("java", 200, "cs", 250, "js", 50)),
+      newDoc(ComponentTesting.newPrivateProjectDto(ORG), "lines", 20, "coverage", 80)
+        .setLanguages(Arrays.asList("java", "python", "kotlin"))
+        .setNclocLanguageDistributionFromMap(ImmutableMap.of("java", 300, "python", 100, "kotlin", 404)),
+
+      // insert applications
+      newDoc(ComponentTesting.newApplication(ORG), "lines", 1000, "coverage", 70)
+        .setLanguages(Arrays.asList("java", "python", "kotlin"))
+        .setNclocLanguageDistributionFromMap(ImmutableMap.of("java", 300, "python", 100, "kotlin", 404)),
+      newDoc(ComponentTesting.newApplication(ORG), "lines", 20, "coverage", 80)
+        .setLanguages(Arrays.asList("java", "python", "kotlin"))
+        .setNclocLanguageDistributionFromMap(ImmutableMap.of("java", 300, "python", 100, "kotlin", 404)));
+
+    ProjectMeasuresStatistics result = underTest.searchTelemetryStatistics();
+
+    assertThat(result.getProjectCount()).isEqualTo(2);
+    assertThat(result.getProjectCountByLanguage()).containsOnly(
+      entry("java", 2L), entry("cs", 1L), entry("js", 1L), entry("python", 1L), entry("kotlin", 1L));
+    assertThat(result.getNclocByLanguage()).containsOnly(
+      entry("java", 500L), entry("cs", 250L), entry("js", 50L), entry("python", 100L), entry("kotlin", 404L));
+  }
+
+  @Test
+  public void search_statistics_should_count_0_if_no_projects() {
+    es.putDocuments(TYPE_PROJECT_MEASURES,
+      // insert applications
+      newDoc(ComponentTesting.newApplication(ORG), "lines", 1000, "coverage", 70)
+        .setLanguages(Arrays.asList("java", "python", "kotlin"))
+        .setNclocLanguageDistributionFromMap(ImmutableMap.of("java", 300, "python", 100, "kotlin", 404)),
+      newDoc(ComponentTesting.newApplication(ORG), "lines", 20, "coverage", 80)
+        .setLanguages(Arrays.asList("java", "python", "kotlin"))
+        .setNclocLanguageDistributionFromMap(ImmutableMap.of("java", 300, "python", 100, "kotlin", 404)));
+
+    ProjectMeasuresStatistics result = underTest.searchTelemetryStatistics();
+
+    assertThat(result.getProjectCount()).isEqualTo(0);
+    assertThat(result.getProjectCountByLanguage()).isEmpty();
+  }
+
   @Test
   public void fail_if_page_size_greater_than_500() {
     expectedException.expect(IllegalArgumentException.class);