This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch ignite-12010-1min
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
The following commit(s) were added to refs/heads/ignite-12010-1min by this push:
new f17d044 IGNITE-12010: Consider newly contributed test as blocker if
it runs more that 1 minute
f17d044 is described below
commit f17d044f081ede0517b896d912776eed14b72a36
Author: Dmitriy Pavlov <[email protected]>
AuthorDate: Wed Jul 24 21:03:26 2019 +0300
IGNITE-12010: Consider newly contributed test as blocker if it runs more
that 1 minute
---
.../org/apache/ignite/ci/web/model/Version.java | 2 +-
.../src/main/webapp/js/testfails-2.2.js | 11 ++++++++---
.../org/apache/ignite/tcbot/common/TcBotConst.java | 2 +-
.../ignite/tcbot/engine/chain/MultBuildRunCtx.java | 20 ++++++++++++++------
.../tcbot/engine/chain/TestCompactedMult.java | 21 +++++++++++++++------
.../apache/ignite/tcbot/engine/ui/DsSuiteUi.java | 13 ++++++++++++-
.../ignite/tcbot/engine/ui/DsTestFailureUi.java | 3 +++
.../ci/teamcity/ignited/fatbuild/TestCompacted.java | 7 +++++--
8 files changed, 59 insertions(+), 20 deletions(-)
diff --git
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
index b3e3f12..91748b4 100644
---
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
+++
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
@@ -28,7 +28,7 @@ package org.apache.ignite.ci.web.model;
public static final String GITHUB_REF =
"https://github.com/apache/ignite-teamcity-bot";
/** TC Bot Version. */
- public static final String VERSION = "20190723";
+ public static final String VERSION = "20190724";
/** Java version, where Web App is running. */
public String javaVer;
diff --git a/ignite-tc-helper-web/src/main/webapp/js/testfails-2.2.js
b/ignite-tc-helper-web/src/main/webapp/js/testfails-2.2.js
index 0947a62..bcd935c 100644
--- a/ignite-tc-helper-web/src/main/webapp/js/testfails-2.2.js
+++ b/ignite-tc-helper-web/src/main/webapp/js/testfails-2.2.js
@@ -819,9 +819,14 @@ function showTestFailData(testFail, isFailureShown,
settings) {
var haveIssue = isDefinedAndFilled(testFail.webIssueUrl) &&
isDefinedAndFilled(testFail.webIssueText);
- var color = (isFailureShown && failRateDefined)
- ? failureRateToColor(failRate)
- : "white";
+ var color;
+ if (testFail.success === true) {
+ color = "green";
+ } else {
+ color = (isFailureShown && failRateDefined)
+ ? failureRateToColor(failRate)
+ : "white";
+ }
var investigated = isDefinedAndFilled(testFail.investigated) &&
testFail.investigated;
if (investigated) {
diff --git
a/tcbot-common/src/main/java/org/apache/ignite/tcbot/common/TcBotConst.java
b/tcbot-common/src/main/java/org/apache/ignite/tcbot/common/TcBotConst.java
index 690e759..0905cce 100644
--- a/tcbot-common/src/main/java/org/apache/ignite/tcbot/common/TcBotConst.java
+++ b/tcbot-common/src/main/java/org/apache/ignite/tcbot/common/TcBotConst.java
@@ -50,5 +50,5 @@ public class TcBotConst {
public static final double
NON_FLAKY_TEST_FAIL_RATE_BLOCKER_BORDER_PERCENTS = 4.;
/** Max test duration for runall. If duration is greater, (new) test
considered as blocker. */
- public static final long MAX_NEW_TEST_DURATION_FOR_RUNALL =
TimeUnit.MINUTES.toMillis(1);
+ public static final long MAX_NEW_TEST_DURATION_FOR_RUNALL_MS =
TimeUnit.MINUTES.toMillis(1);
}
diff --git
a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/MultBuildRunCtx.java
b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/MultBuildRunCtx.java
index 122b5bc..41b4fc9 100644
---
a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/MultBuildRunCtx.java
+++
b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/MultBuildRunCtx.java
@@ -20,7 +20,6 @@ package org.apache.ignite.tcbot.engine.chain;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import com.google.common.cache.CacheBuilder;
-import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
@@ -33,6 +32,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Nonnull;
@@ -52,7 +52,6 @@ import org.apache.ignite.tcignited.history.ISuiteRunHistory;
import org.apache.ignite.tcservice.model.hist.BuildRef;
import org.apache.ignite.tcservice.model.result.problems.ProblemOccurrence;
import org.apache.ignite.tcservice.model.result.stat.Statistics;
-import org.apache.ignite.tcservice.model.result.tests.TestOccurrence;
/**
* Run configuration execution results loaded from different API URLs.
Includes tests and problem occurrences; if logs
@@ -72,7 +71,8 @@ public class MultBuildRunCtx implements ISuiteResults {
/** Builds: Single execution. */
private List<SingleBuildRunCtx> builds = new CopyOnWriteArrayList<>();
- private final com.google.common.cache.Cache<Integer,
Optional<ISuiteRunHistory>> historyCacheMap
+ /** History cache map. */
+ private final com.google.common.cache.Cache<Integer,
Optional<ISuiteRunHistory>> histCacheMap
= CacheBuilder.newBuilder().build();
/** Tests merged: test name ID -> test compacted */
@@ -323,11 +323,15 @@ public class MultBuildRunCtx implements ISuiteResults {
}
public List<TestCompactedMult> getFailedTests() {
- int statusSuccess =
compactor.getStringId(TestOccurrence.STATUS_SUCCESS);
+ Predicate<TestCompactedMult> filter =
TestCompactedMult::isFailedButNotMuted;
+ return getFilteredTests(filter);
+ }
+
+ public List<TestCompactedMult>
getFilteredTests(Predicate<TestCompactedMult> filter) {
return getTestsMerged().values()
.stream()
- .filter(tmult-> tmult.isFailedButNotMuted(statusSuccess))
+ .filter(filter)
.collect(Collectors.toList());
}
@@ -637,6 +641,10 @@ public class MultBuildRunCtx implements ISuiteResults {
singleBuildRunCtx.getAllTests().filter(t -> !t.isIgnoredTest()
&& !t.isMutedTest()));
});
+ Stream<TestCompactedMult> stream = getTestsMerged().values().stream();
+
+ stream.filter(mtest-> mtest.isFailedButNotMuted());
+
res.forEach((testNameId, compactedMult) -> {
IRunHistory stat = compactedMult.history(tcIgnited, branchName);
String testBlockerComment =
compactedMult.getPossibleBlockerComment(stat);
@@ -684,7 +692,7 @@ public class MultBuildRunCtx implements ISuiteResults {
return null;
try {
- return historyCacheMap.get(baseBranchId,
+ return histCacheMap.get(baseBranchId,
() -> {
return
Optional.ofNullable(tcIgn.getSuiteRunHist(buildTypeIdId, baseBranchId));
})
diff --git
a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/TestCompactedMult.java
b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/TestCompactedMult.java
index 9c83a14..7084c88 100644
---
a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/TestCompactedMult.java
+++
b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/TestCompactedMult.java
@@ -20,6 +20,7 @@ package org.apache.ignite.tcbot.engine.chain;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
import org.apache.ignite.ci.teamcity.ignited.fatbuild.TestCompacted;
@@ -30,6 +31,7 @@ import org.apache.ignite.tcignited.history.IRunHistSummary;
import org.apache.ignite.tcignited.history.IRunHistory;
import org.apache.ignite.tcignited.history.IRunStat;
import org.apache.ignite.tcignited.history.ISuiteRunHistory;
+import org.apache.ignite.tcservice.model.result.tests.TestOccurrence;
import org.apache.ignite.tcservice.model.result.tests.TestOccurrenceFull;
/**
@@ -41,9 +43,16 @@ public class TestCompactedMult {
private MultBuildRunCtx ctx;
private long avgDuration = -1;
+ /** Status success. */
+ private static volatile int STATUS_SUCCESS = -1;
+
public TestCompactedMult(IStringCompactor compactor, MultBuildRunCtx ctx) {
this.compactor = compactor;
this.ctx = ctx;
+
+ //Each time compactor should give same result
+ if (STATUS_SUCCESS == -1)
+ STATUS_SUCCESS =
compactor.getStringId(TestOccurrence.STATUS_SUCCESS);
}
@Nullable public Integer testName() {
@@ -62,7 +71,7 @@ public class TestCompactedMult {
private int getFailedButNotMutedCount() {
return (int)occurrences.stream()
.filter(Objects::nonNull)
- .filter(t -> t.isFailedButNotMuted(compactor)).count();
+ .filter(t -> t.isFailedButNotMuted(STATUS_SUCCESS)).count();
}
public int failuresCount() {
@@ -96,8 +105,9 @@ public class TestCompactedMult {
public String getPossibleBlockerComment(IRunHistSummary baseBranchStat) {
if (failuresCount() == 0) {
if (baseBranchStat == null) {
- if (getAvgDurationMs() >
TcBotConst.MAX_NEW_TEST_DURATION_FOR_RUNALL)
- return "Newly contributed test duration is more that 1
minute";
+ long durationMs = getAvgDurationMs();
+ if (durationMs >
TcBotConst.MAX_NEW_TEST_DURATION_FOR_RUNALL_MS)
+ return "Newly contributed test " +
TimeUnit.MILLISECONDS.toSeconds(durationMs) + "s duration is more that 1
minute";
}
return null;
@@ -140,9 +150,8 @@ public class TestCompactedMult {
}
/**
- * @param statusSuccess Status success.
*/
- public boolean isFailedButNotMuted(int statusSuccess) {
- return occurrences.stream().anyMatch(o ->
o.isFailedButNotMuted(statusSuccess));
+ public boolean isFailedButNotMuted() {
+ return occurrences.stream().anyMatch(o ->
o.isFailedButNotMuted(STATUS_SUCCESS));
}
}
diff --git
a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsSuiteUi.java
b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsSuiteUi.java
index 0d69840..4a6b09d 100644
---
a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsSuiteUi.java
+++
b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsSuiteUi.java
@@ -30,6 +30,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import org.apache.ignite.tcbot.common.TcBotConst;
import org.apache.ignite.tcbot.common.util.UrlUtil;
import org.apache.ignite.tcbot.engine.chain.MultBuildRunCtx;
import org.apache.ignite.tcbot.engine.chain.TestCompactedMult;
@@ -193,7 +194,17 @@ public class DsSuiteUi extends DsHistoryStatUi {
Integer buildTypeIdId = suite.buildTypeIdId();
if (includeTests) {
- List<TestCompactedMult> tests = suite.getFailedTests();
+ List<TestCompactedMult> tests = suite.getFilteredTests(test -> {
+ if (test.isFailedButNotMuted())
+ return true;
+
+ boolean longRun = test.getAvgDurationMs() >
TcBotConst.MAX_NEW_TEST_DURATION_FOR_RUNALL_MS;
+ if (longRun)
+ return test.history(tcIgnited, baseBranchId) == null;
+
+ return false;
+ });
+
Function<TestCompactedMult, Float> function = testCompactedMult ->
{
IRunHistory res = testCompactedMult.history(tcIgnited,
baseBranchId);
diff --git
a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsTestFailureUi.java
b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsTestFailureUi.java
index aec792a..bf61f2a 100644
---
a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsTestFailureUi.java
+++
b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsTestFailureUi.java
@@ -88,6 +88,8 @@ public class DsTestFailureUi {
/** Blocker comment: indicates test seems to be introduced failure. */
@Nullable public String blockerComment;
+ public boolean success = false;
+
/**
* @param failure test ocurrence (probably multiple)
* @param tcIgn Teamcity.
@@ -102,6 +104,7 @@ public class DsTestFailureUi {
@Nullable final String branchName,
@Nullable final String baseBranchName,
Integer baseBranchId) {
+ success = !failure.isFailedButNotMuted();
name = failure.getName();
investigated = failure.isInvestigated();
curFailures = failure.failuresCount();
diff --git
a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/TestCompacted.java
b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/TestCompacted.java
index 4049164..1eeb543 100644
---
a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/TestCompacted.java
+++
b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/TestCompacted.java
@@ -343,16 +343,19 @@ public class TestCompacted {
}
public boolean isFailedButNotMuted(IStringCompactor compactor) {
- return isFailedTest(compactor) && !(isMutedTest() || isIgnoredTest());
+ return isFailedTest(compactor) && !(isMutedOrIgnored());
}
/**
* @param successStatus Success status code.
*/
public boolean isFailedButNotMuted(int successStatus) {
- return successStatus != status() && !(isMutedTest() ||
isIgnoredTest());
+ return successStatus != status() && !isMutedOrIgnored();
}
+ public boolean isMutedOrIgnored() {
+ return isMutedTest() || isIgnoredTest();
+ }
public boolean isIgnoredTest() {
Boolean flag = getIgnoredFlag();