You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dp...@apache.org on 2018/11/19 14:02:33 UTC

[ignite-teamcity-bot] branch master updated: Test duration added to statistics (local)

This is an automated email from the ASF dual-hosted git repository.

dpavlov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git


The following commit(s) were added to refs/heads/master by this push:
     new 07d2423  Test duration added to statistics (local)
07d2423 is described below

commit 07d2423dd0ba5963b0ac81b4c818a1f88b5852ed
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Mon Nov 19 17:02:14 2018 +0300

    Test duration added to statistics (local)
---
 .../apache/ignite/ci/analysis/FullChainRunCtx.java    | 16 ++++++++++++----
 .../apache/ignite/ci/analysis/MultBuildRunCtx.java    | 19 ++++++++++++++++---
 .../apache/ignite/ci/analysis/SingleBuildRunCtx.java  | 14 ++++++++++++++
 .../ci/tcmodel/result/tests/TestOccurrence.java       |  4 ----
 .../ci/teamcity/ignited/fatbuild/TestCompacted.java   |  4 ++--
 .../web/model/current/ChainAtServerCurrentStatus.java | 11 ++++++++---
 .../ci/web/model/current/SuiteCurrentStatus.java      |  6 +++++-
 .../src/main/webapp/js/testfails-2.1.js               | 15 ++++-----------
 8 files changed, 61 insertions(+), 28 deletions(-)

diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/FullChainRunCtx.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/FullChainRunCtx.java
index 0d01506..741ac43 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/FullChainRunCtx.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/FullChainRunCtx.java
@@ -40,8 +40,8 @@ public class FullChainRunCtx {
         fakeStub = chainResults.isFakeStub();
     }
 
-    public List<MultBuildRunCtx> suites() {
-        return buildCfgsResults;
+    public Stream<MultBuildRunCtx> suites() {
+        return buildCfgsResults.stream();
     }
 
     public Integer getSuiteBuildId() {
@@ -61,7 +61,7 @@ public class FullChainRunCtx {
     }
 
     public Stream<MultBuildRunCtx> failedChildSuites() {
-        return suites().stream().filter(MultBuildRunCtx::isFailed);
+        return suites().filter(MultBuildRunCtx::isFailed);
     }
 
     /**
@@ -79,7 +79,7 @@ public class FullChainRunCtx {
      * @return returns durations of all suites (last builds)
      */
     private Stream<Long> getDurations() {
-        return suites().stream().filter(ctx -> !ctx.isComposite()).map(MultBuildRunCtx::getBuildDuration);
+        return suites().filter(ctx -> !ctx.isComposite()).map(MultBuildRunCtx::getBuildDuration);
     }
 
     /**
@@ -105,4 +105,12 @@ public class FullChainRunCtx {
     public boolean isFakeStub() {
         return fakeStub;
     }
+
+    public String getTestsDurationPrintable() {
+        long tests = suites().filter(ctx -> !ctx.isComposite())
+            .map(MultBuildRunCtx::getAvgTestsDuration)
+            .filter(Objects::nonNull).mapToLong(t -> t).sum();
+
+        return (TimeUtil.millisToDurationPrintable(tests));
+    }
 }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/MultBuildRunCtx.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/MultBuildRunCtx.java
index 10b20fc..fe13d81 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/MultBuildRunCtx.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/MultBuildRunCtx.java
@@ -281,10 +281,9 @@ public class MultBuildRunCtx implements ISuiteResults {
     }
 
     /**
-     * @return last build duration.
+     * @return average build duration.
      */
-    @Nullable
-    public Long getBuildDuration() {
+    @Nullable public Long getBuildDuration() {
         final OptionalDouble average = buildsStream()
                 .map(SingleBuildRunCtx::getBuildDuration)
                 .filter(Objects::nonNull)
@@ -297,6 +296,20 @@ public class MultBuildRunCtx implements ISuiteResults {
         return null;
     }
 
+    /**
+     * @return sum of all tests execution duration (for several builds average).
+     */
+    @Nullable public Long getAvgTestsDuration() {
+        final OptionalDouble average = buildsStream()
+            .mapToLong(SingleBuildRunCtx::testsDuration)
+            .average();
+
+        if (average.isPresent())
+            return (long)average.getAsDouble();
+
+        return null;
+    }
+
     @Nullable public String suiteName() {
         return buildsStream().findFirst().map(SingleBuildRunCtx::suiteName).orElse(null);
     }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/SingleBuildRunCtx.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/SingleBuildRunCtx.java
index 942d890..2e5b104 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/SingleBuildRunCtx.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/SingleBuildRunCtx.java
@@ -205,4 +205,18 @@ public class SingleBuildRunCtx implements ISuiteResults {
     public boolean isCancelled() {
         return buildCompacted.isCancelled(compactor);
     }
+
+    /**
+     * @return Full run time required to run tests.
+     */
+    public long testsDuration() {
+        return getAllTests()
+            .mapToLong(t -> {
+                Integer duration = t.getDuration();
+                if (duration == null)
+                    return 0;
+
+                return duration;
+            }).sum();
+    }
 }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcmodel/result/tests/TestOccurrence.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcmodel/result/tests/TestOccurrence.java
index ad5f5e1..4a6ae2e 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcmodel/result/tests/TestOccurrence.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcmodel/result/tests/TestOccurrence.java
@@ -84,10 +84,6 @@ public class TestOccurrence {
         return id;
     }
 
-    public long getDuration() {
-        return duration != null ? duration : 0;
-    }
-
     public TestOccurrence setId(String id) {
         this.id = id;
 
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/TestCompacted.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/TestCompacted.java
index 2433849..902dbee 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/TestCompacted.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/TestCompacted.java
@@ -349,11 +349,11 @@ public class TestCompacted {
         return status;
     }
 
-    @Nullable
-    public Integer getDuration() {
+    @Nullable public Integer getDuration() {
         return duration < 0 ? null : duration;
     }
 
+    /** {@inheritDoc} */
     @Override public String toString() {
         return MoreObjects.toStringHelper(this)
             .add("idInBuild", idInBuild)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/ChainAtServerCurrentStatus.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/ChainAtServerCurrentStatus.java
index cae9d95..8d6711f 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/ChainAtServerCurrentStatus.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/ChainAtServerCurrentStatus.java
@@ -69,6 +69,9 @@ public class ChainAtServerCurrentStatus {
     /** Duration printable. */
     public String durationPrintable;
 
+    /** Tests duration printable. */
+    public String testsDurationPrintable;
+
     /** top long running suites */
     public List<TestFailure> topLongRunning = new ArrayList<>();
 
@@ -108,10 +111,11 @@ public class ChainAtServerCurrentStatus {
             }
         );
         durationPrintable = ctx.getDurationPrintable();
+        testsDurationPrintable = ctx.getTestsDurationPrintable();
         webToHist = buildWebLink(teamcity, ctx);
         webToBuild = buildWebLinkToBuild(teamcity, ctx);
 
-        Stream<T2<MultBuildRunCtx, ITestFailures>> allLongRunning = ctx.suites().stream().flatMap(
+        Stream<T2<MultBuildRunCtx, ITestFailures>> allLongRunning = ctx.suites().flatMap(
             suite -> suite.getTopLongRunning().map(t -> new T2<>(suite, t))
         );
         Comparator<T2<MultBuildRunCtx, ITestFailures>> durationComp
@@ -130,7 +134,7 @@ public class ChainAtServerCurrentStatus {
             }
         );
 
-        Stream<T2<MultBuildRunCtx, Map.Entry<String, Long>>> allLogConsumers = ctx.suites().stream().flatMap(
+        Stream<T2<MultBuildRunCtx, Map.Entry<String, Long>>> allLogConsumers = ctx.suites().flatMap(
             suite -> suite.getTopLogConsumers().map(t -> new T2<>(suite, t))
         );
         Comparator<T2<MultBuildRunCtx, Map.Entry<String, Long>>> longConsumingComp
@@ -184,6 +188,7 @@ public class ChainAtServerCurrentStatus {
             Objects.equal(failedTests, status.failedTests) &&
             Objects.equal(failedToFinish, status.failedToFinish) &&
             Objects.equal(durationPrintable, status.durationPrintable) &&
+            Objects.equal(testsDurationPrintable, status.testsDurationPrintable) &&
             Objects.equal(logConsumers, status.logConsumers) &&
             Objects.equal(topLongRunning, status.topLongRunning) &&
             Objects.equal(buildNotFound, status.buildNotFound);
@@ -192,7 +197,7 @@ public class ChainAtServerCurrentStatus {
     /** {@inheritDoc} */
     @Override public int hashCode() {
         return Objects.hashCode(chainName, serverId, branchName, webToHist, webToBuild, suites,
-            failedTests, failedToFinish, durationPrintable,
+            failedTests, failedToFinish, durationPrintable, testsDurationPrintable,
             logConsumers, topLongRunning, buildNotFound);
     }
 
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/SuiteCurrentStatus.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/SuiteCurrentStatus.java
index 9e64711..ac33847 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/SuiteCurrentStatus.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/SuiteCurrentStatus.java
@@ -105,6 +105,8 @@ import static org.apache.ignite.ci.util.UrlUtil.escape;
 
     public String durationPrintable;
 
+    public String testsDurationPrintable;
+
     /**
      * Advisory mark there is problem in this suite.
      */
@@ -135,6 +137,7 @@ import static org.apache.ignite.ci.util.UrlUtil.escape;
         hasCriticalProblem = suite.hasCriticalProblem();
         failedTests = suite.failedTests();
         durationPrintable = millisToDurationPrintable(suite.getBuildDuration());
+        testsDurationPrintable  = millisToDurationPrintable(suite.getAvgTestsDuration());
         webToHist = buildWebLink(teamcity, suite);
         webToHistBaseBranch = buildWebLink(teamcity, suite, baseBranch);
         webToBuild = buildWebLinkToBuild(teamcity, suite);
@@ -342,6 +345,7 @@ import static org.apache.ignite.ci.util.UrlUtil.escape;
             Objects.equal(userCommits, status.userCommits) &&
             Objects.equal(failedTests, status.failedTests) &&
             Objects.equal(durationPrintable, status.durationPrintable)&&
+            Objects.equal(testsDurationPrintable, status.testsDurationPrintable)&&
             Objects.equal(warnOnly, status.warnOnly);
     }
 
@@ -350,7 +354,7 @@ import static org.apache.ignite.ci.util.UrlUtil.escape;
         return Objects.hashCode(name, result, hasCriticalProblem, webToHist, webToHistBaseBranch, webToBuild, testFailures,
             topLongRunning, webUrlThreadDump, runningBuildCount, queuedBuildCount, serverId,
             suiteId, branchName, failures, runs, failureRate,
-            failsAllHist, criticalFails, userCommits, failedTests, durationPrintable,
+            failsAllHist, criticalFails, userCommits, failedTests, durationPrintable, testsDurationPrintable,
             warnOnly);
     }
 
diff --git a/ignite-tc-helper-web/src/main/webapp/js/testfails-2.1.js b/ignite-tc-helper-web/src/main/webapp/js/testfails-2.1.js
index e31fa3d..ca50ee8 100644
--- a/ignite-tc-helper-web/src/main/webapp/js/testfails-2.1.js
+++ b/ignite-tc-helper-web/src/main/webapp/js/testfails-2.1.js
@@ -81,10 +81,6 @@ function showChainCurrentStatusData(server, settings) {
     }
 
     var res = "";
-    var altTxt = "";
-
-    if (isDefinedAndFilled(server.durationPrintable))
-        altTxt += "duration: " + server.durationPrintable;
 
     res += "<table border='0px'>";
     res += "<tr bgcolor='#F5F5FF'><td colspan='3'><b><a href='" + server.webToHist + "'>";
@@ -96,7 +92,7 @@ function showChainCurrentStatusData(server, settings) {
 
     res += "</a> ";
     res += "[";
-    res += " <a href='" + server.webToBuild + "' title='" + altTxt + "'>";
+    res += " <a href='" + server.webToBuild + "' title=''>";
     res += "tests " + server.failedTests + " suites " + server.failedToFinish + "";
     res += " </a>";
     res += "] ";
@@ -139,7 +135,7 @@ function showChainCurrentStatusData(server, settings) {
         mInfo += " title='trigger builds'>on top</a><br>";
     }
 
-    mInfo += altTxt + "<br>";
+    mInfo += "Duration: " + server.durationPrintable + " (Tests: " + server.testsDurationPrintable + ")<br>";
 
     if (isDefinedAndFilled(server.topLongRunning) && server.topLongRunning.length > 0) {
         mInfo += "Top long running:<br>";
@@ -550,10 +546,7 @@ function showSuiteData(suite, settings) {
         moreInfoTxt += "Last commits from: " + suite.userCommits + " <br>";
     }
 
-    moreInfoTxt += "Duration: " + suite.durationPrintable + " <br>";
-
-    var altTxt = "";
-    altTxt += "Duration: " + suite.durationPrintable + "; ";
+    moreInfoTxt += "Duration: " + suite.durationPrintable + " (Tests: " + suite.testsDurationPrintable + ")<br>";
 
     var res = "";
     res += "<tr bgcolor='#FAFAFF'><td align='right' valign='top'>";
@@ -587,7 +580,7 @@ function showSuiteData(suite, settings) {
     res += "<span style='border-color: " + color + "; width:6px; height:6px; display: inline-block; border-width: 4px; color: black; border-style: solid;' title='" + failRateText + "'></span> ";
 
     res += "<a href='" + suite.webToHist + "'>" + suite.name + "</a> " +
-        "[ " + "<a href='" + suite.webToBuild + "' title='" + altTxt + "'> " +
+        "[ " + "<a href='" + suite.webToBuild + "' title=''> " +
         "tests " + suite.failedTests + " " + suite.result;
 
     if (isDefinedAndFilled(suite.warnOnly) && suite.warnOnly.length > 0) {