]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6844 Add a progress report on issue tracking phase
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Thu, 19 Nov 2015 16:04:01 +0000 (17:04 +0100)
committerDuarte Meneses <duarte.meneses@sonarsource.com>
Fri, 20 Nov 2015 13:27:54 +0000 (14:27 +0100)
sonar-batch/src/main/java/org/sonar/batch/issue/tracking/IssueTransition.java
sonar-batch/src/test/java/org/sonar/batch/mediumtest/issuesmode/IssueModeAndReportsMediumTest.java

index aca6103c480348a67aee077c98149c02fb10981c..4cdb21783a34a4d6283c1ac7cbe847458cd4b3cc 100644 (file)
@@ -19,8 +19,8 @@
  */
 package org.sonar.batch.issue.tracking;
 
+import org.sonar.batch.util.ProgressReport;
 import org.sonar.batch.issue.IssueTransformer;
-
 import org.sonar.api.batch.BatchSide;
 import org.sonar.api.resources.Project;
 import org.sonar.batch.index.BatchComponent;
@@ -37,6 +37,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 @BatchSide
 public class IssueTransition {
@@ -66,9 +67,24 @@ public class IssueTransition {
     }
 
     BatchReportReader reader = new BatchReportReader(reportPublisher.getReportDir());
+    int nbComponents = componentCache.all().size();
+
+    if (nbComponents == 0) {
+      return;
+    }
 
-    for (BatchComponent component : componentCache.all()) {
-      trackIssues(reader, component);
+    ProgressReport progressReport = new ProgressReport("issue-tracking-report", TimeUnit.SECONDS.toMillis(10));
+    progressReport.start("Performing issue tracking");
+    int count = 0;
+
+    try {
+      for (BatchComponent component : componentCache.all()) {
+        trackIssues(reader, component);
+        count++;
+        progressReport.message(count + "/" + nbComponents + " components tracked");
+      }
+    } finally {
+      progressReport.stop(count + "/" + nbComponents + " components tracked");
     }
   }
 
index 28dc6f7e947b075718884502fbdad1202ce9a8a5..8e7d053ee13f7161614e3704abcb1799cb58ecf7 100644 (file)
  */
 package org.sonar.batch.mediumtest.issuesmode;
 
-import org.assertj.core.api.Condition;
+import org.apache.commons.lang.StringUtils;
 
+import org.sonar.api.utils.log.LoggerLevel;
+import org.assertj.core.api.Condition;
 import org.sonar.batch.issue.tracking.TrackedIssue;
 import com.google.common.collect.ImmutableMap;
 
@@ -172,6 +174,12 @@ public class IssueModeAndReportsMediumTest {
     assertThat(newIssues).isEqualTo(16);
     assertThat(openIssues).isEqualTo(3);
     assertThat(resolvedIssue).isEqualTo(1);
+    
+    // progress report
+    String logs = StringUtils.join(logTester.logs(LoggerLevel.INFO), "\n");
+    
+    assertThat(logs).contains("Performing issue tracking");
+    assertThat(logs).contains("6/6 components tracked");
 
     // assert that original fields of a matched issue are kept
     assertThat(result.trackedIssues()).haveExactly(1, new Condition<TrackedIssue>() {