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 2019/08/03 22:06:15 UTC
[ignite-teamcity-bot] 01/01: Filtering history by build tag
selected in tracked.html
This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch filter-hist-by-tag
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
commit f5b9f5d596cc43e9f3d02a8ce5adb2714195971b
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Sun Aug 4 01:06:04 2019 +0300
Filtering history by build tag selected in tracked.html
---
.../ignite/ci/web/rest/GetChainResultsAsHtml.java | 2 +-
.../ci/web/rest/build/GetBuildTestFailures.java | 2 +-
.../tcbot/engine/chain/BuildChainProcessor.java | 2 +-
.../tcbot/engine/chain/TestCompactedMult.java | 27 +++++---
.../ignite/tcbot/engine/pr/PrChainsProcessor.java | 3 +-
.../tracked/TrackedBranchChainsProcessor.java | 3 +-
.../apache/ignite/tcbot/engine/ui/DsChainUi.java | 34 +++++-----
.../apache/ignite/tcbot/engine/ui/DsSuiteUi.java | 73 +++++++++++-----------
.../ignite/tcbot/engine/ui/DsTestFailureUi.java | 44 ++++++++-----
.../ci/teamcity/ignited/runhist/Invocation.java | 7 +++
.../teamcity/ignited/runhist/RunHistCompacted.java | 28 +++++++--
.../ignite/tcignited/history/IRunHistory.java | 3 +
12 files changed, 145 insertions(+), 83 deletions(-)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java
index 55dd5ad..04c493d 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java
@@ -92,7 +92,7 @@ public class GetChainResultsAsHtml {
status.chainName = ctx.suiteName();
IStringCompactor c = injector.getInstance(IStringCompactor.class);
- status.initFromContext(tcIgn, ctx, failRateBranch, c, false, null, null, -1);
+ status.initFromContext(tcIgn, ctx, failRateBranch, c, false, null, null, -1, null);
res.append(showChainAtServerData(status));
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/build/GetBuildTestFailures.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/build/GetBuildTestFailures.java
index 2b38122..6de270d 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/build/GetBuildTestFailures.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/build/GetBuildTestFailures.java
@@ -141,7 +141,7 @@ public class GetBuildTestFailures {
if (cnt > 0)
runningUpdates.addAndGet(cnt);
- chainStatus.initFromContext(tcIgnited, ctx, failRateBranch, injector.getInstance(IStringCompactor.class), false, null, null, -1);
+ chainStatus.initFromContext(tcIgnited, ctx, failRateBranch, injector.getInstance(IStringCompactor.class), false, null, null, -1, null);
res.addChainOnServer(chainStatus);
diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/BuildChainProcessor.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/BuildChainProcessor.java
index e1f68b8..d4d82ae 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/BuildChainProcessor.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/chain/BuildChainProcessor.java
@@ -138,7 +138,7 @@ public class BuildChainProcessor {
* @param failRateBranch Fail rate branch.
* @param mode background data update mode.
* @param sortOption how to sort suites in context, default is by failure rate (most often - first).
- * @param requireParamVal Require exact parameters value presence in the build.
+ * @param requireParamVal Require exact parameters value presence in the build. Null means no filtering.
*/
@AutoProfiling
public FullChainRunCtx loadFullChainContext(
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 a37faaf..b6cfc09 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
@@ -17,12 +17,6 @@
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.Stream;
-import javax.annotation.Nullable;
import org.apache.ignite.tcbot.common.TcBotConst;
import org.apache.ignite.tcbot.persistence.IStringCompactor;
import org.apache.ignite.tcignited.ITeamcityIgnited;
@@ -33,6 +27,14 @@ import org.apache.ignite.tcignited.history.IRunStat;
import org.apache.ignite.tcignited.history.ISuiteRunHistory;
import org.apache.ignite.tcservice.model.result.tests.TestOccurrence;
+import javax.annotation.Nullable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Stream;
+
/**
* Test occurrence merged from several runs.
*/
@@ -138,6 +140,12 @@ public class TestCompactedMult {
}
public IRunHistory history(ITeamcityIgnited ignited, @Nullable Integer baseBranchId) {
+ return history(ignited, baseBranchId, null);
+ }
+
+ public IRunHistory history(ITeamcityIgnited ignited,
+ @Nullable Integer baseBranchId,
+ @Nullable Map<Integer, Integer> requireParameters) {
Integer name = testName();
if (name == null || baseBranchId == null)
return null;
@@ -147,7 +155,12 @@ public class TestCompactedMult {
if (suiteRunHist == null)
return null;
- return suiteRunHist.getTestRunHist(name);
+ IRunHistory testRunHist = suiteRunHist.getTestRunHist(name);
+
+ if (requireParameters == null || requireParameters.isEmpty())
+ return testRunHist;
+
+ return testRunHist.filter(requireParameters);
}
/**
diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/PrChainsProcessor.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/PrChainsProcessor.java
index a307f2a..96ca393 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/PrChainsProcessor.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/PrChainsProcessor.java
@@ -165,7 +165,8 @@ public class PrChainsProcessor {
runningUpdates.addAndGet(cnt0);
//fail rate reference is always default (master)
- chainStatus.initFromContext(tcIgnited, ctx, baseBranchForTc, compactor, false, null, null, -1); // don't need for PR
+ chainStatus.initFromContext(tcIgnited, ctx, baseBranchForTc, compactor, false,
+ null, null, -1, null); // don't need for PR
initJiraAndGitInfo(chainStatus, jiraIntegration, gitHubConnIgnited);
}
diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/tracked/TrackedBranchChainsProcessor.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/tracked/TrackedBranchChainsProcessor.java
index 0cbab4e..d74daf0 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/tracked/TrackedBranchChainsProcessor.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/tracked/TrackedBranchChainsProcessor.java
@@ -158,7 +158,8 @@ public class TrackedBranchChainsProcessor implements IDetailedStatusForTrackedBr
if (cnt > 0)
runningUpdates.addAndGet(cnt);
- chainStatus.initFromContext(tcIgnited, ctx, baseBranchTc, compactor, calcTrustedTests, tagSelected, displayMode, maxDurationSec);
+ chainStatus.initFromContext(tcIgnited, ctx, baseBranchTc, compactor, calcTrustedTests, tagSelected,
+ displayMode, maxDurationSec, requireParamVal);
return chainStatus;
})
diff --git a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsChainUi.java b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsChainUi.java
index 47b7d0b..3eabb2c 100644
--- a/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsChainUi.java
+++ b/tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/ui/DsChainUi.java
@@ -159,13 +159,14 @@ public class DsChainUi {
}
public void initFromContext(ITeamcityIgnited tcIgnited,
- FullChainRunCtx ctx,
- @Nullable String baseBranchTc,
- IStringCompactor compactor,
- boolean calcTrustedTests,
- @Nullable String tagSelected,
- @Nullable DisplayMode displayMode,
- int maxDurationSec) {
+ FullChainRunCtx ctx,
+ @Nullable String baseBranchTc,
+ IStringCompactor compactor,
+ boolean calcTrustedTests,
+ @Nullable String tagSelected,
+ @Nullable DisplayMode displayMode,
+ int maxDurationSec,
+ @Nullable Map<Integer, Integer> requireParamVal) {
failedTests = 0;
failedToFinish = 0;
totalTests = 0;
@@ -188,8 +189,8 @@ public class DsChainUi {
.filter(suite -> !suite.isComposite())
.filter(suiteFilter)
.peek(suite -> {
- Integer totalTests = suite.totalTests();
- this.totalTests += totalTests != null ? totalTests : 0;
+ int totalTests = suite.totalTests();
+ this.totalTests += totalTests;
if (calcTrustedTests)
trustedTests += suite.trustedTests(tcIgnited, baseBranchId);
@@ -202,10 +203,15 @@ public class DsChainUi {
|| dModeToUse == DisplayMode.ShowAllSuites
|| suite.hasTestToReport(tcIgnited, baseBranchId)
|| suite.hasLongRunningTest(maxDurationSec)) {
- final DsSuiteUi suiteCurStatus = new DsSuiteUi();
-
- suiteCurStatus.initFromContext(tcIgnited, suite, baseBranchTc, compactor, true, calcTrustedTests,
- maxDurationSec);
+ final DsSuiteUi suiteCurStatus = new DsSuiteUi()
+ .initFromContext(tcIgnited,
+ suite,
+ baseBranchTc,
+ compactor,
+ true,
+ calcTrustedTests,
+ maxDurationSec,
+ requireParamVal);
failedTests += suiteCurStatus.failedTests != null ? suiteCurStatus.failedTests : 0;
@@ -241,7 +247,7 @@ public class DsChainUi {
MultBuildRunCtx suite = pairCtxAndOccur.get1();
TestCompactedMult longRunningOccur = pairCtxAndOccur.get2();
- DsTestFailureUi failure = createOrrucForLongRun(tcIgnited, compactor, suite, longRunningOccur, baseBranchTc);
+ DsTestFailureUi failure = createOrrucForLongRun(tcIgnited, compactor, suite, longRunningOccur, baseBranchTc, requireParamVal);
failure.testName = "[" + suite.suiteName() + "] " + failure.testName; //may be separate field
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 64d4a66..e9fa992 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
@@ -17,19 +17,6 @@
package org.apache.ignite.tcbot.engine.ui;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
import org.apache.ignite.tcbot.common.util.UrlUtil;
import org.apache.ignite.tcbot.engine.chain.MultBuildRunCtx;
import org.apache.ignite.tcbot.engine.chain.TestCompactedMult;
@@ -40,6 +27,13 @@ import org.apache.ignite.tcignited.ITeamcityIgnited;
import org.apache.ignite.tcignited.buildlog.ITestLogCheckResult;
import org.apache.ignite.tcignited.history.IRunHistory;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
import static org.apache.ignite.tcbot.common.util.TimeUtil.millisToDurationPrintable;
import static org.apache.ignite.tcignited.history.RunHistSync.normalizeBranch;
@@ -140,14 +134,16 @@ public class DsSuiteUi extends ShortSuiteUi {
* @param includeTests Include tests - usually {@code true}, but it may be disabled for speeding up VISA collection.
* @param calcTrustedTests
* @param maxDurationSec 0 or negative means don't indclude. has no effect if tests not included
+ * @param requireParamVal filtering for runs history based on parameter value selected.
*/
public DsSuiteUi initFromContext(ITeamcityIgnited tcIgnited,
- @Nonnull final MultBuildRunCtx suite,
- @Nullable final String baseBranch,
- @Nonnull IStringCompactor compactor,
- boolean includeTests,
- boolean calcTrustedTests,
- int maxDurationSec) {
+ @Nonnull final MultBuildRunCtx suite,
+ @Nullable final String baseBranch,
+ @Nonnull IStringCompactor compactor,
+ boolean includeTests,
+ boolean calcTrustedTests,
+ int maxDurationSec,
+ @Nullable Map<Integer, Integer> requireParamVal) {
String failRateNormalizedBranch = normalizeBranch(baseBranch);
Integer baseBranchId = compactor.getStringIdIfPresent(failRateNormalizedBranch);
IRunHistory baseBranchHist = suite.history(tcIgnited, baseBranchId);
@@ -189,18 +185,22 @@ public class DsSuiteUi extends ShortSuiteUi {
tests.sort(Comparator.comparing(function).reversed());
tests.forEach(occurrence -> {
- final DsTestFailureUi failure = new DsTestFailureUi();
-
- failure.initFromOccurrence(occurrence, tcIgnited, suite.projectId(),
- suite.branchName(), baseBranch, baseBranchId);
- failure.initStat(occurrence, buildTypeIdId, tcIgnited, baseBranchId, curBranchId);
+ DsTestFailureUi failure = new DsTestFailureUi()
+ .initFromOccurrence(occurrence,
+ tcIgnited,
+ suite.projectId(),
+ suite.branchName(),
+ baseBranch,
+ baseBranchId,
+ curBranchId,
+ requireParamVal);
testFailures.add(failure);
});
suite.getTopLongRunning().forEach(occurrence -> {
if (occurrence.getAvgDurationMs() > TimeUnit.SECONDS.toMillis(15)) {
- final DsTestFailureUi failure = createOrrucForLongRun(tcIgnited, compactor, suite, occurrence, baseBranch);
+ final DsTestFailureUi failure = createOrrucForLongRun(tcIgnited, compactor, suite, occurrence, baseBranch, requireParamVal);
topLongRunning.add(failure);
}
@@ -303,21 +303,18 @@ public class DsSuiteUi extends ShortSuiteUi {
return failure;
}
- @Nonnull public static DsTestFailureUi createOrrucForLongRun(ITeamcityIgnited tcIgnited,
- IStringCompactor compactor, @Nonnull MultBuildRunCtx suite,
- final TestCompactedMult occurrence,
- @Nullable final String failRateBranch) {
- final DsTestFailureUi failure = new DsTestFailureUi();
-
+ @Nonnull
+ public static DsTestFailureUi createOrrucForLongRun(ITeamcityIgnited tcIgnited,
+ IStringCompactor compactor,
+ @Nonnull MultBuildRunCtx suite,
+ TestCompactedMult occurrence,
+ @Nullable String failRateBranch,
+ @Nullable Map<Integer, Integer> requireParamVal) {
Integer baseBranchId = compactor.getStringIdIfPresent(normalizeBranch(failRateBranch));
- Integer buildTypeIdId = suite.buildTypeIdId();
- failure.initFromOccurrence(occurrence, tcIgnited, suite.projectId(), suite.branchName(),
- failRateBranch, baseBranchId);
+ Integer curBranchId = compactor.getStringIdIfPresent(normalizeBranch(suite.branchName()));
- failure.initStat(occurrence, buildTypeIdId, tcIgnited, baseBranchId,
- compactor.getStringIdIfPresent(normalizeBranch(suite.branchName())));
-
- return failure;
+ return new DsTestFailureUi().initFromOccurrence(occurrence, tcIgnited, suite.projectId(), suite.branchName(),
+ failRateBranch, baseBranchId, curBranchId, requireParamVal);
}
public void findFailureAndAddWarning(String testName, ITestLogCheckResult logCheckRes) {
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 a4e0458..333db5b 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
@@ -19,6 +19,7 @@ package org.apache.ignite.tcbot.engine.ui;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -85,13 +86,17 @@ public class DsTestFailureUi extends ShortTestFailureUi {
* @param branchName current branch name.
* @param baseBranchName base branch name (e.g. master), without normalization.
* @param baseBranchId Normalized base branch ID (from compactor).
+ * @param curBranchId
+ * @param requireParameters
*/
- public void initFromOccurrence(@Nonnull final TestCompactedMult failure,
- @Nonnull final ITeamcityIgnited tcIgn,
- @Nullable final String projectId,
- @Nullable final String branchName,
- @Nullable final String baseBranchName,
- Integer baseBranchId) {
+ public DsTestFailureUi initFromOccurrence(@Nonnull final TestCompactedMult failure,
+ @Nonnull final ITeamcityIgnited tcIgn,
+ @Nullable final String projectId,
+ @Nullable final String branchName,
+ @Nullable final String baseBranchName,
+ Integer baseBranchId,
+ @Nullable Integer curBranchId,
+ @Nullable Map<Integer, Integer> requireParameters) {
success = !failure.isFailedButNotMuted();
investigated = failure.isInvestigated();
@@ -121,12 +126,17 @@ public class DsTestFailureUi extends ShortTestFailureUi {
.map(ITest::getTestId)
.filter(Objects::nonNull)
.forEach(testNameId -> {
- if (webUrl == null && testNameId != null)
+ if (webUrl == null)
webUrl = buildWebLink(tcIgn, testNameId, projectId, branchName);
- if (webUrlBaseBranch == null && testNameId != null)
+ if (webUrlBaseBranch == null)
webUrlBaseBranch = buildWebLink(tcIgn, testNameId, projectId, baseBranchName);
});
+
+
+ initStat(failure, tcIgn, baseBranchId, curBranchId, requireParameters);
+
+ return this;
}
@@ -174,21 +184,23 @@ public class DsTestFailureUi extends ShortTestFailureUi {
/**
* @param occurrence
- * @param buildTypeIdId
* @param tcIgnited TC service as Run stat supplier.
* @param baseBranchId Base branch: Fail rate and flakyness detection normalized branch.
* @param curBranchNormalized Cur branch normalized.
+ * @param requireParameters
*/
- public void initStat(TestCompactedMult occurrence, Integer buildTypeIdId, ITeamcityIgnited tcIgnited,
- @Nullable Integer baseBranchId,
- @Nullable Integer curBranchNormalized) {
- final IRunHistory stat = occurrence.history(tcIgnited, baseBranchId);
+ public void initStat(TestCompactedMult occurrence,
+ ITeamcityIgnited tcIgnited,
+ @Nullable Integer baseBranchId,
+ @Nullable Integer curBranchNormalized,
+ @Nullable Map<Integer, Integer> requireParameters) {
+ final IRunHistory stat = occurrence.history(tcIgnited, baseBranchId, requireParameters);
histBaseBranch.init(stat);
IRunHistory statForProblemsDetection;
if (!Objects.equals(curBranchNormalized, baseBranchId)) {
- statForProblemsDetection = occurrence.history(tcIgnited, curBranchNormalized);
+ statForProblemsDetection = occurrence.history(tcIgnited, curBranchNormalized, requireParameters);
if (statForProblemsDetection != null) {
histCurBranch = new DsTestHistoryUi();
@@ -205,6 +217,10 @@ public class DsTestFailureUi extends ShortTestFailureUi {
if (statForProblemsDetection.detectTemplate(EventTemplates.newContributedTestFailure) != null)
problemRef = new DsProblemRef("Recently contributed test failure");
+
+ if (stat.isFlaky()
+ && statForProblemsDetection.detectTemplate(EventTemplates.newFailureForFlakyTest) != null)
+ problemRef = new DsProblemRef("New failure of flaky test");
}
}
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/Invocation.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/Invocation.java
index 68e80cb..6515806 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/Invocation.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/Invocation.java
@@ -20,6 +20,7 @@ package org.apache.ignite.ci.teamcity.ignited.runhist;
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
+import org.apache.ignite.ci.teamcity.ignited.buildtype.ParametersCompacted;
import org.apache.ignite.tcbot.persistence.Persisted;
import org.apache.ignite.tcignited.history.ChangesState;
@@ -53,6 +54,8 @@ public class Invocation {
/** Additional (important) build Parameters, which can be used for filtering. */
@Nullable private Map<Integer, Integer> parms;
+ private ParametersCompacted parameters = new ParametersCompacted();
+
/**
* Creates invocation.
* @param buildId Build id.
@@ -132,4 +135,8 @@ public class Invocation {
return this;
}
+
+ public boolean containsParameters(Map<Integer, Integer> requireParameters) {
+ return false;
+ }
}
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompacted.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompacted.java
index 3b86767..c93398b 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompacted.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistCompacted.java
@@ -18,20 +18,23 @@
package org.apache.ignite.ci.teamcity.ignited.runhist;
import com.google.common.base.MoreObjects;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-import javax.annotation.Nullable;
import org.apache.ignite.tcbot.common.TcBotConst;
import org.apache.ignite.tcignited.history.ChangesState;
import org.apache.ignite.tcignited.history.IEventTemplate;
import org.apache.ignite.tcignited.history.IRunHistory;
import org.apache.ignite.tcignited.history.RunStatus;
+import javax.annotation.Nullable;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
/**
*
*/
-public class RunHistCompacted implements IRunHistory {
+public class RunHistCompacted implements IRunHistory {
/** Data. */
private InvocationData data = new InvocationData();
@@ -98,6 +101,21 @@ public class RunHistCompacted implements IRunHistory {
return data.criticalFailuresCount();
}
+ @Override
+ public IRunHistory filter(Map<Integer, Integer> requireParameters) {
+ RunHistCompacted runHistCompacted = new RunHistCompacted();
+
+ Stream<Invocation> invocationStream = data.invocations().filter(
+ invocation -> invocation.containsParameters(requireParameters)
+ );
+
+ invocationStream.forEach(i -> {
+ runHistCompacted.data.add(i);
+ });
+
+ return runHistCompacted;
+ }
+
private static int[] concatArr(int[] arr1, int[] arr2) {
int[] arr1and2 = new int[arr1.length + arr2.length];
System.arraycopy(arr1, 0, arr1and2, 0, arr1.length);
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/IRunHistory.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/IRunHistory.java
index cfd3ce4..a477a17 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/IRunHistory.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/IRunHistory.java
@@ -18,6 +18,7 @@ package org.apache.ignite.tcignited.history;
import javax.annotation.Nullable;
import java.util.List;
+import java.util.Map;
/**
* Test or Build run statistics.
@@ -58,4 +59,6 @@ public interface IRunHistory extends IRunStat, IRunHistSummary {
return 1.0f * getFailuresCount() / runs;
}
+
+ IRunHistory filter(Map<Integer, Integer> requireParameters);
}