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/28 17:19:40 UTC
[ignite-teamcity-bot] branch ignite-9542-new-run-stripe updated:
IGNITE-9542 Preparing new method for suite history
This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch ignite-9542-new-run-stripe
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
The following commit(s) were added to refs/heads/ignite-9542-new-run-stripe by this push:
new 80dfe16 IGNITE-9542 Preparing new method for suite history
80dfe16 is described below
commit 80dfe1654943afd9c3814810f79ffca2d6e84a6a
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Wed Nov 28 20:19:37 2018 +0300
IGNITE-9542 Preparing new method for suite history
---
.../org/apache/ignite/ci/analysis/RunStat.java | 20 +--------
.../ignite/ci/di/scheduler/TcBotScheduler.java | 7 +++-
.../ignite/ci/teamcity/ignited/IRunHistory.java | 19 +++++++++
.../ci/teamcity/ignited/ITeamcityIgnited.java | 5 +++
.../ci/teamcity/ignited/TeamcityIgnitedImpl.java | 10 ++++-
.../teamcity/ignited/runhist/InvocationData.java | 32 +++++++++++++--
.../teamcity/ignited/runhist/RunHistCompacted.java | 16 +++++---
.../ignited/runhist/RunHistCompactedDao.java | 47 +++++++++++++++++++---
.../ci/teamcity/ignited/runhist/RunHistKey.java | 21 +++++++---
.../ci/teamcity/ignited/runhist/RunHistSync.java | 25 +++++++-----
.../ci/web/model/current/SuiteCurrentStatus.java | 28 ++++++++-----
.../ignite/ci/web/model/current/TestFailure.java | 2 +-
12 files changed, 171 insertions(+), 61 deletions(-)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/RunStat.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/RunStat.java
index 0f116ba..72d17b6 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/RunStat.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/analysis/RunStat.java
@@ -187,17 +187,6 @@ public class RunStat implements IRunHistory {
- /**
- * @return float representing fail rate
- */
- public float getCriticalFailRate() {
- int runs = getRunsCount();
-
- if (runs == 0)
- return 1.0f;
-
- return 1.0f * getCriticalFailuresCount() / runs;
- }
@Override public int getFailuresCount() {
if (latestRuns == null)
@@ -206,7 +195,7 @@ public class RunStat implements IRunHistory {
return (int)latestRuns.values().stream().filter(res -> res.status != RES_OK).count();
}
- public int getCriticalFailuresCount() {
+ @Override public int getCriticalFailuresCount() {
if (latestRuns == null)
return 0;
@@ -217,13 +206,6 @@ public class RunStat implements IRunHistory {
return latestRuns == null ? 0 : latestRuns.size();
}
-
- public String getCriticalFailPercentPrintable() {
- return IRunHistory.getPercentPrintable(getCriticalFailRate() * 100.0f);
- }
-
-
-
public long getAverageDurationMs() {
if (runsWithDuration == 0)
return 0;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/TcBotScheduler.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/TcBotScheduler.java
index e1a56da..959c840 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/TcBotScheduler.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/scheduler/TcBotScheduler.java
@@ -49,12 +49,15 @@ class TcBotScheduler implements IScheduler {
/** Submit named task checker guard. */
private AtomicBoolean tickGuard = new AtomicBoolean();
+ /** Named tasks. */
private final ConcurrentMap<String, NamedTask> namedTasks = new ConcurrentHashMap<>();
+ /** {@inheritDoc} */
@Override public void invokeLater(Runnable cmd, long delay, TimeUnit unit) {
service().schedule(cmd, delay, unit);
}
+ /** {@inheritDoc} */
@Override public void sheduleNamed(String fullName, Runnable cmd, long queitPeriod, TimeUnit unit) {
NamedTask task = namedTasks.computeIfAbsent(fullName, NamedTask::new);
@@ -62,7 +65,7 @@ class TcBotScheduler implements IScheduler {
if (tickGuard.compareAndSet(false, true)) {
for (int threadId = 0; threadId < POOL_SIZE; threadId++) {
- String threadNme = ", runner" + Strings.padStart(Integer.toString(threadId), 2, '0');
+ String threadNme = "Runner " + Strings.padStart(Integer.toString(threadId), 2, '0');
int period = 15000 + ThreadLocalRandom.current().nextInt(10000);
service().scheduleAtFixedRate(() -> checkNamedTasks(threadNme), 0, period, TimeUnit.MILLISECONDS);
}
@@ -70,7 +73,7 @@ class TcBotScheduler implements IScheduler {
}
/**
- * @param threadNme
+ * @param threadNme Runner name to be used in display.
*/
@SuppressWarnings({"UnusedReturnValue", "WeakerAccess"})
@MonitoredTask(name = "Scheduled", nameExtArgIndex = 0)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/IRunHistory.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/IRunHistory.java
index e55b92b..5f27621 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/IRunHistory.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/IRunHistory.java
@@ -65,4 +65,23 @@ public interface IRunHistory {
List<Integer> getLatestRunResults();
String getFlakyComments();
+
+ public default String getCriticalFailPercentPrintable() {
+ return IRunHistory.getPercentPrintable(getCriticalFailRate() * 100.0f);
+ }
+
+ /**
+ * @return float representing fail rate
+ */
+ public default float getCriticalFailRate() {
+ int runs = getRunsCount();
+
+ if (runs == 0)
+ return 1.0f;
+
+ return 1.0f * getCriticalFailuresCount() / runs;
+ }
+
+
+ public int getCriticalFailuresCount();
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java
index ac1877b..dd4896d 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java
@@ -21,6 +21,8 @@ import java.util.Date;
import java.util.List;
import javax.annotation.Nullable;
+import org.apache.ignite.ci.analysis.RunStat;
+import org.apache.ignite.ci.analysis.SuiteInBranch;
import org.apache.ignite.ci.analysis.TestInBranch;
import org.apache.ignite.ci.tcmodel.result.Build;
import org.apache.ignite.ci.teamcity.ignited.buildcondition.BuildCondition;
@@ -126,4 +128,7 @@ public interface ITeamcityIgnited {
@Nullable
IRunHistory getTestRunHist(TestInBranch testInBranch);
+
+ @Nullable
+ IRunHistory getSuiteRunHist(SuiteInBranch branch);
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
index 2b61c54..f49a102 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
@@ -21,6 +21,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.ignite.ci.ITeamcity;
+import org.apache.ignite.ci.analysis.SuiteInBranch;
import org.apache.ignite.ci.analysis.TestInBranch;
import org.apache.ignite.ci.di.AutoProfiling;
import org.apache.ignite.ci.di.MonitoredTask;
@@ -318,9 +319,16 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
return chains;
}
+ /** {@inheritDoc} */
@Nullable
@Override public IRunHistory getTestRunHist(TestInBranch testInBranch) {
- return runHistCompactedDao.getTestRunHist(srvIdMaskHigh, testInBranch.name, testInBranch.branch);
+ return runHistCompactedDao.getTestRunHist(srvIdMaskHigh, testInBranch.name, testInBranch.branch);
+ }
+
+ /** {@inheritDoc} */
+ @Nullable
+ @Override public IRunHistory getSuiteRunHist(SuiteInBranch suiteInBranch) {
+ return runHistCompactedDao.getSuiteRunHist(srvIdMaskHigh, suiteInBranch.getSuiteId(), suiteInBranch.branch);
}
public List<String> branchForQuery(@Nullable String branchName) {
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/InvocationData.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/InvocationData.java
index a194c7c..ad0336c 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/InvocationData.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/InvocationData.java
@@ -38,6 +38,8 @@ public class InvocationData {
public static final int FAILURE = RunStat.RunStatus.RES_FAILURE.getCode();
/** Ok. */
public static final int OK = RunStat.RunStatus.RES_OK.getCode();
+ /** Ok. */
+ public static final int CRITICAL_FAILURE = RunStat.RunStatus.RES_CRITICAL_FAILURE.getCode();
/**
* Runs registered all the times.
@@ -93,14 +95,23 @@ public class InvocationData {
invocationMap.entrySet().removeIf(entries -> isExpired(entries.getValue().startDate));
}
+ /**
+ * @param startDate Start date.
+ */
public static boolean isExpired(long startDate) {
return (U.currentTimeMillis() - startDate) > Duration.ofDays(MAX_DAYS).toMillis();
}
+ /**
+ *
+ */
public int allHistFailures() {
return allHistFailures;
}
+ /**
+ *
+ */
public int notMutedRunsCount() {
return (int)
invocations()
@@ -108,21 +119,27 @@ public class InvocationData {
.count();
}
+ /**
+ *
+ */
@NotNull public Stream<Invocation> invocations() {
return invocationMap.values()
.stream()
.filter(this::isActual);
}
+ /**
+ * @param invocation Invocation.
+ */
private boolean isActual(Invocation invocation) {
return !isExpired(invocation.startDate);
}
+ /**
+ *
+ */
public int failuresCount() {
- return (int)
- invocations()
- .filter(invocation -> invocation.status == FAILURE)
- .count();
+ return (int)invocations().filter(inv -> inv.status == FAILURE).count();
}
/** {@inheritDoc} */
@@ -159,4 +176,11 @@ public class InvocationData {
.map(i->(int)i.status)
.collect(Collectors.toList());
}
+
+ /**
+ *
+ */
+ public int criticalFailuresCount() {
+ return (int)invocations().filter(inv -> inv.status == CRITICAL_FAILURE).count();
+ }
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompacted.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompacted.java
index 2841971..9f25030 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompacted.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompacted.java
@@ -40,7 +40,7 @@ public class RunHistCompacted implements IVersionedEntity, IRunHistory {
private short _ver = LATEST_VERSION;
@QuerySqlField(orderedGroups = {@QuerySqlField.Group(name = "tstAndSrv", order = 0)})
- private int testNameOrSuite;
+ private int testOrSuiteName;
@QuerySqlField(orderedGroups = {@QuerySqlField.Group(name = "tstAndSrv", order = 1)})
private int srvId;
@@ -50,7 +50,7 @@ public class RunHistCompacted implements IVersionedEntity, IRunHistory {
public RunHistCompacted() {}
public RunHistCompacted(RunHistKey k) {
- testNameOrSuite = k.testNameOrSuite();
+ testOrSuiteName = k.testNameOrSuite();
srvId = k.srvId();
}
@@ -94,6 +94,10 @@ public class RunHistCompacted implements IVersionedEntity, IRunHistory {
return null;
}
+ @Override public int getCriticalFailuresCount() {
+ return data.criticalFailuresCount();
+ }
+
/**
* @param build Build.
* @param inv Invocation.
@@ -106,13 +110,14 @@ public class RunHistCompacted implements IVersionedEntity, IRunHistory {
/** {@inheritDoc} */
@Override public String toString() {
return MoreObjects.toStringHelper(this)
- .add("nameId", testNameOrSuite)
+ .add("nameId", testOrSuiteName)
.add("srvId", srvId)
.add("failRate", getFailPercentPrintable())
.add("data", data)
.toString();
}
+ /** {@inheritDoc} */
@Override public boolean equals(Object o) {
if (this == o)
return true;
@@ -120,12 +125,13 @@ public class RunHistCompacted implements IVersionedEntity, IRunHistory {
return false;
RunHistCompacted compacted = (RunHistCompacted)o;
return _ver == compacted._ver &&
- testNameOrSuite == compacted.testNameOrSuite &&
+ testOrSuiteName == compacted.testOrSuiteName &&
srvId == compacted.srvId &&
Objects.equal(data, compacted.data);
}
+ /** {@inheritDoc} */
@Override public int hashCode() {
- return Objects.hashCode(_ver, testNameOrSuite, srvId, data);
+ return Objects.hashCode(_ver, testOrSuiteName, srvId, data);
}
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompactedDao.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompactedDao.java
index 8d4e333..30d29df 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompactedDao.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompactedDao.java
@@ -30,6 +30,7 @@ import org.apache.ignite.configuration.CacheConfiguration;
import javax.inject.Inject;
import javax.inject.Provider;
import java.util.Collections;
+import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.ci.teamcity.ignited.runhist.RunHistSync.normalizeBranch;
@@ -40,6 +41,10 @@ public class RunHistCompactedDao {
/** Build Start time Cache name. */
public static final String BUILD_START_TIME_CACHE_NAME = "buildStartTimeV0";
+ /** Cache name.*/
+ public static final String SUITE_HIST_CACHE_NAME = "teamcitySuiteRunHistV0";
+
+
/** Ignite provider. */
@Inject
private Provider<Ignite> igniteProvider;
@@ -47,6 +52,9 @@ public class RunHistCompactedDao {
/** Test history cache. */
private IgniteCache<RunHistKey, RunHistCompacted> testHistCache;
+ /** Suite history cache. */
+ private IgniteCache<RunHistKey, RunHistCompacted> suiteHistCacheName;
+
/** Build start time. */
private IgniteCache<Long, Long> buildStartTime;
@@ -66,20 +74,34 @@ public class RunHistCompactedDao {
testHistCache = ignite.getOrCreateCache(cfg);
buildStartTime = ignite.getOrCreateCache(TcHelperDb.getCacheV2Config(BUILD_START_TIME_CACHE_NAME));
+
+ final CacheConfiguration<RunHistKey, RunHistCompacted> cfg2 = TcHelperDb.getCacheV2Config(SUITE_HIST_CACHE_NAME);
+
+ cfg2.setQueryEntities(Collections.singletonList(new QueryEntity(RunHistKey.class, RunHistCompacted.class)));
+
+ suiteHistCacheName = ignite.getOrCreateCache(cfg2);
+
+ buildStartTime = ignite.getOrCreateCache(TcHelperDb.getCacheV2Config(BUILD_START_TIME_CACHE_NAME));
}
- public IRunHistory getTestRunHist(int srvIdMaskHigh, String name, String branch) {
- final Integer testName = compactor.getStringIdIfPresent(name);
- if (testName == null)
+ public IRunHistory getTestRunHist(int srvIdMaskHigh, String name, @Nullable String branch) {
+ RunHistKey key = getKey(srvIdMaskHigh, name, branch);
+ if (key == null)
return null;
- String normalizeBranch = normalizeBranch(branch);
+ return testHistCache.get(key);
+ }
- final Integer branchId = compactor.getStringIdIfPresent(normalizeBranch);
+ @Nullable public RunHistKey getKey(int srvIdMaskHigh, String testOrSuiteName, @Nullable String branch) {
+ final Integer testName = compactor.getStringIdIfPresent(testOrSuiteName);
+ if (testName == null)
+ return null;
+
+ final Integer branchId = compactor.getStringIdIfPresent(normalizeBranch(branch));
if (branchId == null)
return null;
- return testHistCache.get(new RunHistKey(srvIdMaskHigh, testName, branchId));
+ return new RunHistKey(srvIdMaskHigh, testName, branchId);
}
/**
@@ -134,4 +156,17 @@ public class RunHistCompactedDao {
list
);
}
+
+ /**
+ * @param srvId Server id.
+ * @param suiteId Suite id.
+ * @param branch Branch.
+ */
+ public IRunHistory getSuiteRunHist(int srvId, String suiteId, @Nullable String branch) {
+ RunHistKey key = getKey(srvId, suiteId, branch);
+ if (key == null)
+ return null;
+
+ return suiteHistCacheName.get(key);
+ }
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistKey.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistKey.java
index b4f3390..0c671ed 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistKey.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistKey.java
@@ -19,14 +19,25 @@ package org.apache.ignite.ci.teamcity.ignited.runhist;
import com.google.common.base.Objects;
+/**
+ *
+ */
public class RunHistKey {
+ /** Server id. */
private int srvId;
- private int testNameOrSuite;
+ /** Test name or suite. */
+ private int testOrSuiteName;
+ /** Branch. */
private int branch;
+ /**
+ * @param srvId Server id.
+ * @param testName Test or suite name.
+ * @param branchName Branch name.
+ */
public RunHistKey(int srvId, int testName, int branchName) {
this.srvId = srvId;
- this.testNameOrSuite = testName;
+ this.testOrSuiteName = testName;
this.branch = branchName;
}
@@ -36,17 +47,17 @@ public class RunHistKey {
if (o == null || getClass() != o.getClass()) return false;
RunHistKey histKey = (RunHistKey) o;
return srvId == histKey.srvId &&
- testNameOrSuite == histKey.testNameOrSuite &&
+ testOrSuiteName == histKey.testOrSuiteName &&
branch == histKey.branch;
}
@Override
public int hashCode() {
- return Objects.hashCode(srvId, testNameOrSuite, branch);
+ return Objects.hashCode(srvId, testOrSuiteName, branch);
}
public int testNameOrSuite() {
- return testNameOrSuite;
+ return testOrSuiteName;
}
public int srvId() {
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistSync.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistSync.java
index 49f136e..9e11c89 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistSync.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistSync.java
@@ -70,6 +70,9 @@ public class RunHistSync {
@GuardedBy("this")
private final Map<String, SyncTask> buildToSave = new HashMap<>();
+ /**
+ * @param branchName Branch name.
+ */
@NotNull public static String normalizeBranch(@Nullable String branchName) {
String branch = branchName == null ? ITeamcity.DEFAULT : branchName;
@@ -97,29 +100,29 @@ public class RunHistSync {
boolean saveNow = false;
- Map<RunHistKey, List<Invocation>> data = new HashMap<>();
- build.getAllTests().forEach(t -> {
- int branchNameNormalized = compactor.getStringId(normalizeBranch(build.branchName(compactor)));
+ int branchNameNormalized = compactor.getStringId(normalizeBranch(build.branchName(compactor)));
+ Map<RunHistKey, List<Invocation>> testInvMap = new HashMap<>();
+ build.getAllTests().forEach(t -> {
RunHistKey histKey = new RunHistKey(srvId, t.testName(), branchNameNormalized);
- List<Invocation> list = data.computeIfAbsent(histKey, k -> new ArrayList<>());
+ List<Invocation> list = testInvMap.computeIfAbsent(histKey, k -> new ArrayList<>());
Invocation inv = t.toInvocation(compactor, build);
list.add(inv);
});
- int cnt = containedTestsCnt(data);
+ int cnt = containedTestsCnt(testInvMap);
synchronized (this) {
final SyncTask syncTask = buildToSave.computeIfAbsent(srvVame, s -> new SyncTask());
if (syncTask.sheduled() + cnt <= MAX_TESTS_QUEUE)
- syncTask.tests.putAll(data);
+ syncTask.tests.putAll(testInvMap);
else
saveNow = true;
}
if(saveNow)
- saveInvocationsMap(data);
+ saveInvocationsMap(testInvMap);
else {
int ldrToActivate = ThreadLocalRandom.current().nextInt(HIST_LDR_TASKS) + 1;
@@ -247,7 +250,7 @@ public class RunHistSync {
scheduleHistLoad(srvId, buildsIdsToLoad);
}
- return "Invoked later load for " + totalAskedToLoad + " builds from " + srvId;
+ return "Invoked later load for history for " + totalAskedToLoad + " builds from " + srvId;
}
/**
@@ -271,7 +274,7 @@ public class RunHistSync {
&& !fatBuild.isFakeStub()
&& !fatBuild.isOutdatedEntityVersion()
&& !fatBuild.isCancelled(compactor)
- //todo support not finished build reloading
+ //todo support not finished build reloading usign fat build sync or similar.
&& fatBuild.isFinished(compactor);
}
@@ -287,6 +290,10 @@ public class RunHistSync {
}
}
+ /**
+ * @param tests Tests.
+ * @return count of invocations.
+ */
public static int containedTestsCnt(Map<RunHistKey, List<Invocation>> tests) {
return tests.values().stream().mapToInt(List::size).sum();
}
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 d5f85db..f0271f3 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
@@ -140,7 +140,13 @@ import static org.apache.ignite.ci.util.UrlUtil.escape;
: tcAnalytics.getTestRunStatProvider();
String suiteId = suite.suiteId();
- initSuiteStat(tcAnalytics, failRateNormalizedBranch, curBranchNormalized, suiteId);
+
+ Function<SuiteInBranch, ? extends IRunHistory> provider =
+ NEW_RUN_STAT
+ ? tcIgnited::getSuiteRunHist
+ : tcAnalytics.getBuildFailureRunStatProvider();
+
+ initSuiteStat(provider, failRateNormalizedBranch, curBranchNormalized, suiteId);
Set<String> collect = suite.lastChangeUsers().collect(Collectors.toSet());
@@ -221,13 +227,16 @@ import static org.apache.ignite.ci.util.UrlUtil.escape;
// todo implement this logic in suite possibleBlocker = suite.hasPossibleBlocker();
}
- private void initSuiteStat(@Nullable ITcAnalytics tcAnalytics, String failRateNormalizedBranch, String curBranchNormalized, String suiteId) {
- if (Strings.isNullOrEmpty(suiteId) || tcAnalytics == null)
+ private void initSuiteStat(Function<SuiteInBranch, ? extends IRunHistory> suiteFailProv,
+ String failRateNormalizedBranch,
+ String curBranchNormalized,
+ String suiteId) {
+ if (Strings.isNullOrEmpty(suiteId) )
return;
SuiteInBranch key = new SuiteInBranch(suiteId, failRateNormalizedBranch);
- final RunStat stat = tcAnalytics.getBuildFailureRunStatProvider().apply(key);
+ final IRunHistory stat = suiteFailProv.apply(key);
if (stat != null) {
failures = stat.getFailuresCount();
@@ -245,24 +254,25 @@ import static org.apache.ignite.ci.util.UrlUtil.escape;
latestRuns = stat.getLatestRunResults();
}
- RunStat latestRunsSrc = null;
+ IRunHistory latestRunsSrc = null;
if (!failRateNormalizedBranch.equals(curBranchNormalized)) {
SuiteInBranch keyForStripe = new SuiteInBranch(suiteId, curBranchNormalized);
- final RunStat statForStripe = tcAnalytics.getBuildFailureRunStatProvider().apply(keyForStripe);
+ final IRunHistory statForStripe = suiteFailProv.apply(keyForStripe);
latestRunsSrc = statForStripe;
latestRuns = statForStripe != null ? statForStripe.getLatestRunResults() : null;
} else
latestRunsSrc = stat;
- if (latestRunsSrc != null) {
- RunStat.TestId testId = latestRunsSrc.detectTemplate(EventTemplates.newFailureForFlakyTest); //extended runs required for suite
+ if (latestRunsSrc instanceof RunStat) {
+ RunStat latestRunsSrcV1 = (RunStat)latestRunsSrc;
+ RunStat.TestId testId = latestRunsSrcV1.detectTemplate(EventTemplates.newFailureForFlakyTest); //extended runs required for suite
if (testId != null)
problemRef = new ProblemRef("New Failure");
- RunStat.TestId buildIdCritical = latestRunsSrc.detectTemplate(EventTemplates.newCriticalFailure);
+ RunStat.TestId buildIdCritical = latestRunsSrcV1.detectTemplate(EventTemplates.newCriticalFailure);
if (buildIdCritical != null)
problemRef = new ProblemRef("New Critical Failure");
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/TestFailure.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/TestFailure.java
index e98e143..9b0a818 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/TestFailure.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/TestFailure.java
@@ -218,7 +218,7 @@ import static org.apache.ignite.ci.web.model.current.SuiteCurrentStatus.branchFo
} else
statForProblemsDetection = stat;
- if (statForProblemsDetection != null && statForProblemsDetection instanceof RunStat) {
+ if (statForProblemsDetection instanceof RunStat) {
final RunStat forProblemsDetection = (RunStat) statForProblemsDetection;
RunStat.TestId testId = forProblemsDetection.detectTemplate(EventTemplates.newFailure);