From 2e43ee159277eaeecd3a7b265d0f5c3badfc8954 Mon Sep 17 00:00:00 2001 From: Evgeny Mandrikov Date: Thu, 15 Dec 2011 17:04:21 +0000 Subject: [PATCH] SONARPLUGINS-1023 Display total running time at the end of analysis --- src/main/java/org/sonar/runner/Main.java | 20 ++++++++++++++++---- src/test/java/org/sonar/runner/MainTest.java | 8 ++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/sonar/runner/Main.java b/src/main/java/org/sonar/runner/Main.java index aba4a10..8ee7ccb 100644 --- a/src/main/java/org/sonar/runner/Main.java +++ b/src/main/java/org/sonar/runner/Main.java @@ -44,6 +44,7 @@ import java.util.Properties; public final class Main { public static void main(String[] args) { + long startTime = System.currentTimeMillis(); try { Properties props = loadProperties(args); Runner runner = Runner.create(props); @@ -56,15 +57,26 @@ public final class Main { } catch (IOException e) { throw new RuntimeException(e); } finally { - printMemoryUsage(); + printStats(startTime); } } - private static final long MB = 1024 * 1024; + private static void printStats(long startTime) { + long time = System.currentTimeMillis() - startTime; + log("Total time: " + formatTime(time)); - private static void printMemoryUsage() { + System.gc(); Runtime r = Runtime.getRuntime(); - log("Final Memory: " + (r.totalMemory() - r.freeMemory()) / MB + "M/" + r.totalMemory() / MB + "M"); + long mb = 1024 * 1024; + log("Final Memory: " + (r.totalMemory() - r.freeMemory()) / mb + "M/" + r.totalMemory() / mb + "M"); + } + + static String formatTime(long time) { + long h = time / (60 * 60 * 1000); + long m = (time - h * 60 * 60 * 1000) / (60 * 1000); + long s = (time - h * 60 * 60 * 1000 - m * 60 * 1000) / 1000; + long ms = time % 1000; + return String.format("%1$d:%2$02d:%3$02d.%4$03ds", h, m, s, ms); } static Properties loadProperties(String[] args) { diff --git a/src/test/java/org/sonar/runner/MainTest.java b/src/test/java/org/sonar/runner/MainTest.java index 01aab24..5a06c45 100644 --- a/src/test/java/org/sonar/runner/MainTest.java +++ b/src/test/java/org/sonar/runner/MainTest.java @@ -100,4 +100,12 @@ public class MainTest { assertThat(props.getProperty("overridden.prop"), is("project scope")); assertThat(props.getProperty("global.prop"), is("jdbc:mysql:localhost/sonar")); } + + @Test + public void shouldFormatTime() { + assertThat(Main.formatTime(1 * 60 * 60 * 1000 + 2 * 60 * 1000 + 3 * 1000 + 400), is("1:02:03.400s")); + assertThat(Main.formatTime(2 * 60 * 1000 + 3 * 1000 + 400), is("0:02:03.400s")); + assertThat(Main.formatTime(3 * 1000 + 400), is("0:00:03.400s")); + assertThat(Main.formatTime(400), is("0:00:00.400s")); + } } -- 2.39.5