aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-batch/src
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2013-04-17 16:50:20 +0200
committerJulien HENRY <julien.henry@sonarsource.com>2013-04-17 16:51:12 +0200
commitc06ac5eaa744c05dbc7c779d0de84baea325776a (patch)
treeb7b41f3683e95fb5cd00b4237c27617bb980355a /sonar-batch/src
parentc946ab5883685a67cf5476042905e8b5d66c3bbc (diff)
downloadsonarqube-c06ac5eaa744c05dbc7c779d0de84baea325776a.tar.gz
sonarqube-c06ac5eaa744c05dbc7c779d0de84baea325776a.zip
SONAR-4147 Implemented profiling of purge
+ minor changes like display of percents
Diffstat (limited to 'sonar-batch/src')
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java5
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/profiling/AbstractTimeProfiling.java23
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/profiling/ModuleProfiling.java13
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/profiling/PhaseProfiling.java6
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/profiling/PhasesSumUpTimeProfiler.java11
5 files changed, 29 insertions, 29 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java
index a1c5d3be58d..ac1bed2549a 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapContainer.java
@@ -19,6 +19,8 @@
*/
package org.sonar.batch.bootstrap;
+import org.sonar.core.purge.PurgeProfiler;
+
import org.apache.commons.configuration.PropertiesConfiguration;
import org.sonar.api.Plugin;
import org.sonar.api.config.EmailSettings;
@@ -105,7 +107,8 @@ public class BootstrapContainer extends ComponentContainer {
DefaultDatabaseConnector.class,
JpaDatabaseSession.class,
BatchDatabaseSessionFactory.class,
- DaoUtils.getDaoClasses()
+ DaoUtils.getDaoClasses(),
+ PurgeProfiler.class
);
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/profiling/AbstractTimeProfiling.java b/sonar-batch/src/main/java/org/sonar/batch/profiling/AbstractTimeProfiling.java
index 7edabab1ee2..51a5d263702 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/profiling/AbstractTimeProfiling.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/profiling/AbstractTimeProfiling.java
@@ -19,6 +19,8 @@
*/
package org.sonar.batch.profiling;
+import org.sonar.api.utils.TimeUtils;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -51,26 +53,7 @@ public abstract class AbstractTimeProfiling {
}
public String totalTimeAsString() {
- if (totalTime < 1000) {
- return String.format("%sms", totalTime);
- }
- else {
- long sec = totalTime / 1000;
- // long remainingMs = totalTime - (sec * 1000);
- if (sec < 60) {
- return String.format("%ss", sec);
- }
- else {
- long min = sec / 60;
- long remainingSec = sec - (min * 60);
- if (remainingSec > 0) {
- return String.format("%smin %ss", min, remainingSec);
- }
- else {
- return String.format("%smin", min);
- }
- }
- }
+ return TimeUtils.formatDuration(totalTime);
}
public void setTotalTime(long totalTime) {
diff --git a/sonar-batch/src/main/java/org/sonar/batch/profiling/ModuleProfiling.java b/sonar-batch/src/main/java/org/sonar/batch/profiling/ModuleProfiling.java
index 895c98ef0f0..895624b9db5 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/profiling/ModuleProfiling.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/profiling/ModuleProfiling.java
@@ -19,6 +19,7 @@
*/
package org.sonar.batch.profiling;
+import org.sonar.api.utils.TimeUtils;
import org.sonar.batch.phases.Phases;
import org.sonar.batch.phases.Phases.Phase;
@@ -45,13 +46,19 @@ public class ModuleProfiling extends AbstractTimeProfiling {
}
public void dump() {
+ double percent = this.totalTime() / 100.0;
for (PhaseProfiling phaseProfiling : sortByDescendingTotalTime(profilingPerPhase.values())) {
- System.out.println(" * " + phaseProfiling.phase() + " execution time: " + phaseProfiling.totalTimeAsString());
+ StringBuilder sb = new StringBuilder();
+ sb.append(" * ").append(phaseProfiling.phase()).append(" execution time: ").append(phaseProfiling.totalTimeAsString())
+ .append(" (").append((int) (phaseProfiling.totalTime() / percent)).append("%)");
+ System.out.println(sb.toString());
}
for (Phase phase : Phases.Phase.values()) {
if (profilingPerPhase.containsKey(phase)) {
- System.out.println("");
- System.out.println(" * " + phase + " execution time breakdown");
+ StringBuilder sb = new StringBuilder();
+ sb.append("\n * ").append(phase).append(" execution time breakdown: ")
+ .append(TimeUtils.formatDuration(getProfilingPerPhase(phase).totalTime()));
+ System.out.println(sb.toString());
getProfilingPerPhase(phase).dump();
}
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/profiling/PhaseProfiling.java b/sonar-batch/src/main/java/org/sonar/batch/profiling/PhaseProfiling.java
index bb83a8c7eb0..46566b70991 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/profiling/PhaseProfiling.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/profiling/PhaseProfiling.java
@@ -74,8 +74,12 @@ public class PhaseProfiling extends AbstractTimeProfiling {
}
public void dump() {
+ double percent = this.totalTime() / 100.0;
for (ItemProfiling itemProfiling : truncateList(sortByDescendingTotalTime(profilingPerItem.values()))) {
- System.out.println(" o " + itemProfiling.itemName() + ": " + itemProfiling.totalTimeAsString());
+ StringBuilder sb = new StringBuilder();
+ sb.append(" o ").append(itemProfiling.itemName()).append(": ").append(itemProfiling.totalTimeAsString())
+ .append(" (").append((int) (itemProfiling.totalTime() / percent)).append("%)");
+ System.out.println(sb.toString());
}
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/profiling/PhasesSumUpTimeProfiler.java b/sonar-batch/src/main/java/org/sonar/batch/profiling/PhasesSumUpTimeProfiler.java
index a78e608c3f5..2690aff2cd0 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/profiling/PhasesSumUpTimeProfiler.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/profiling/PhasesSumUpTimeProfiler.java
@@ -30,6 +30,7 @@ import org.sonar.api.batch.events.ProjectAnalysisHandler;
import org.sonar.api.batch.events.SensorExecutionHandler;
import org.sonar.api.batch.events.SensorsPhaseHandler;
import org.sonar.api.resources.Project;
+import org.sonar.api.utils.TimeUtils;
import org.sonar.batch.phases.Phases;
import java.util.IdentityHashMap;
@@ -66,15 +67,17 @@ public class PhasesSumUpTimeProfiler implements ProjectAnalysisHandler, SensorEx
}
else {
currentModuleProfiling.stop();
- System.out.println("\n -------- Profiling for module " + module.getName() + " --------\n");
+ long moduleTotalTime = currentModuleProfiling.totalTime();
+ System.out.println("\n -------- Profiling of module " + module.getName() + ": " + TimeUtils.formatDuration(moduleTotalTime) + " --------\n");
currentModuleProfiling.dump();
- System.out.println("\n -------- End of profiling for module " + module.getName() + " --------\n");
+ System.out.println("\n -------- End of profiling of module " + module.getName() + " --------\n");
totalProfiling.merge(currentModuleProfiling);
if (module.isRoot() && !module.getModules().isEmpty()) {
totalProfiling.stop();
- System.out.println("\n ======== Profiling for total execution ========\n");
+ long totalTime = totalProfiling.totalTime();
+ System.out.println("\n ======== Profiling of total execution: " + TimeUtils.formatDuration(totalTime) + " ========\n");
totalProfiling.dump();
- System.out.println("\n ======== End of profiling for total execution ========\n");
+ System.out.println("\n ======== End of profiling of total execution ========\n");
}
}
}