*/
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;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
+import java.util.concurrent.TimeUnit;
@BatchSide
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");
}
}
*/
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;
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>() {