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:45:14 UTC
[ignite-teamcity-bot] branch filter-hist-by-tag updated: Filtering
history by build tag selected at tracked page: filtering whole suite by
parameters
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
The following commit(s) were added to refs/heads/filter-hist-by-tag by this push:
new 8f6baa7 Filtering history by build tag selected at tracked page: filtering whole suite by parameters
8f6baa7 is described below
commit 8f6baa761e5f058e580d80483fec0c3589dee788
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Sun Aug 4 01:44:43 2019 +0300
Filtering history by build tag selected at tracked page: filtering whole suite by parameters
---
.../ci/teamcity/ignited/TeamcityIgnitedMock.java | 2 +-
.../tcbot/engine/chain/BuildChainProcessor.java | 4 +-
.../ignite/tcbot/engine/chain/MultBuildRunCtx.java | 51 +++++++++++-----------
.../tcbot/engine/chain/TestCompactedMult.java | 9 +---
.../ignite/tcbot/engine/pr/PrChainsProcessor.java | 2 +-
.../apache/ignite/tcbot/engine/ui/DsSuiteUi.java | 39 ++++++++---------
.../ignited/buildtype/ParametersCompacted.java | 25 ++++++++---
.../ignited/fatbuild/FatBuildCompacted.java | 20 +++++----
.../ci/teamcity/ignited/runhist/Invocation.java | 7 ++-
.../teamcity/ignited/runhist/InvocationData.java | 4 ++
.../teamcity/ignited/runhist/RunHistCompacted.java | 38 +++++++++++-----
.../ignite/tcignited/build/SuiteHistory.java | 19 ++++++++
.../ignite/tcignited/build/TestCompactedV2.java | 28 +++---------
.../ignite/tcignited/history/HistoryCollector.java | 8 ++--
.../ignite/tcignited/history/IRunHistory.java | 3 +-
.../ignite/tcignited/history/ISuiteRunHistory.java | 4 ++
16 files changed, 147 insertions(+), 116 deletions(-)
diff --git a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedMock.java b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedMock.java
index 2de7fee..b4484dd 100644
--- a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedMock.java
+++ b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedMock.java
@@ -183,7 +183,7 @@ public class TeamcityIgnitedMock {
final RunHistCompacted hist = histCache.computeIfAbsent(histKey, RunHistCompacted::new);
- Invocation inv = TestCompactedV2.toInvocation(testCompacted, build, (k, v) -> false, successStatusStrId);
+ Invocation inv = TestCompactedV2.toInvocation(testCompacted, build, successStatusStrId);
hist.addInvocation(inv);
});
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 d4d82ae..cf0dc94 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
@@ -193,7 +193,7 @@ public class BuildChainProcessor {
//ask for history for the suite in parallel
tcUpdatePool.getService().submit(() -> {
- ctx.history(tcIgn, failRateBranchId);
+ ctx.history(tcIgn, failRateBranchId, null);
});
analyzeTests(ctx, tcIgn, procLog);
@@ -212,7 +212,7 @@ public class BuildChainProcessor {
if (sortOption == null || sortOption == SortOption.FailureRate) {
function = ctx -> {
- IRunHistory runStat = ctx.history(tcIgn, failRateBranchId);
+ IRunHistory runStat = ctx.history(tcIgn, failRateBranchId, null);
if (runStat == null)
return 0d;
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 7e2b48a..86146f3 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,23 +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.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.OptionalDouble;
-import java.util.Set;
-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;
-import javax.annotation.Nullable;
import org.apache.ignite.ci.teamcity.ignited.change.ChangeCompacted;
import org.apache.ignite.ci.teamcity.ignited.fatbuild.ProblemCompacted;
import org.apache.ignite.tcbot.common.TcBotConst;
@@ -54,6 +37,17 @@ 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 javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.util.*;
+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;
+
/**
* Run configuration execution results loaded from different API URLs. Includes tests and problem occurrences; if logs
* processing is done also contains last started test
@@ -672,11 +666,13 @@ public class MultBuildRunCtx implements ISuiteResults {
* @param tcIgn Tc ign.
* @param baseBranchId Base branch id.
*/
- public IRunHistory history(ITeamcityIgnited tcIgn, Integer baseBranchId) {
+ public IRunHistory history(ITeamcityIgnited tcIgn,
+ @Nullable Integer baseBranchId,
+ @Nullable Map<Integer, Integer> requireParameters) {
if (baseBranchId == null)
return null;
- ISuiteRunHistory suiteHist = suiteHist(tcIgn, baseBranchId);
+ ISuiteRunHistory suiteHist = suiteHist(tcIgn, baseBranchId, requireParameters);
if (suiteHist == null)
return null;
@@ -684,7 +680,9 @@ public class MultBuildRunCtx implements ISuiteResults {
}
@Nullable
- ISuiteRunHistory suiteHist(ITeamcityIgnited tcIgn, @Nullable Integer baseBranchId) {
+ ISuiteRunHistory suiteHist(ITeamcityIgnited tcIgn,
+ @Nullable Integer baseBranchId,
+ @Nullable Map<Integer, Integer> requireParameters) {
Integer buildTypeIdId = buildTypeIdId();
Preconditions.checkNotNull(buildTypeIdId, "Build type ID should be filled");
@@ -693,11 +691,14 @@ public class MultBuildRunCtx implements ISuiteResults {
return null;
try {
- return histCacheMap.get(baseBranchId,
- () -> {
- return Optional.ofNullable(tcIgn.getSuiteRunHist(buildTypeIdId, baseBranchId));
- })
- .orElse(null);
+ ISuiteRunHistory suiteRunHistory = histCacheMap.get(baseBranchId,
+ () -> Optional.ofNullable(tcIgn.getSuiteRunHist(buildTypeIdId, baseBranchId)))
+ .orElse(null);
+
+ if (suiteRunHistory != null && requireParameters != null && !requireParameters.isEmpty())
+ return suiteRunHistory.filter(requireParameters);
+
+ return suiteRunHistory;
}
catch (ExecutionException e) {
throw ExceptionUtil.propagateException(e);
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 b6cfc09..8462bb8 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
@@ -150,17 +150,12 @@ public class TestCompactedMult {
if (name == null || baseBranchId == null)
return null;
- ISuiteRunHistory suiteRunHist = ctx.suiteHist(ignited, baseBranchId);
+ ISuiteRunHistory suiteRunHist = ctx.suiteHist(ignited, baseBranchId, requireParameters);
if (suiteRunHist == null)
return null;
- IRunHistory testRunHist = suiteRunHist.getTestRunHist(name);
-
- if (requireParameters == null || requireParameters.isEmpty())
- return testRunHist;
-
- return testRunHist.filter(requireParameters);
+ return suiteRunHist.getTestRunHist(name);
}
/**
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 96ca393..a31a2a4 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
@@ -303,7 +303,7 @@ public class PrChainsProcessor {
return fullChainRunCtx
.filteredChildSuites(filter)
.map((ctx) -> {
- IRunHistory statInBaseBranch = ctx.history(tcIgnited, baseBranchId);
+ IRunHistory statInBaseBranch = ctx.history(tcIgnited, baseBranchId, null);
String suiteComment = ctx.getPossibleBlockerComment(compactor, statInBaseBranch, tcIgnited.config());
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 e9fa992..c4551af 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
@@ -146,13 +146,13 @@ public class DsSuiteUi extends ShortSuiteUi {
@Nullable Map<Integer, Integer> requireParamVal) {
String failRateNormalizedBranch = normalizeBranch(baseBranch);
Integer baseBranchId = compactor.getStringIdIfPresent(failRateNormalizedBranch);
- IRunHistory baseBranchHist = suite.history(tcIgnited, baseBranchId);
+ IRunHistory baseBranchHist = suite.history(tcIgnited, baseBranchId, requireParamVal);
initFrom(suite, tcIgnited, compactor, baseBranchHist);
String curBranchNormalized = normalizeBranch(suite.branchName());
Integer curBranchId = compactor.getStringIdIfPresent(curBranchNormalized);
- initSuiteStat(tcIgnited, baseBranchId, curBranchId, suite, baseBranchHist);
+ initSuiteStat(tcIgnited, baseBranchId, curBranchId, suite, baseBranchHist, requireParamVal);
Set<String> collect = suite.lastChangeUsers().collect(Collectors.toSet());
@@ -170,7 +170,6 @@ public class DsSuiteUi extends ShortSuiteUi {
webToHist = buildWebLinkToHist(tcIgnited, suite);
webToHistBaseBranch = buildWebLinkToHist(tcIgnited, suite, baseBranch);
- Integer buildTypeIdId = suite.buildTypeIdId();
if (includeTests) {
List<TestCompactedMult> tests = suite.getFilteredTests(test ->
test.hasLongRunningTest(maxDurationSec)
@@ -184,19 +183,17 @@ public class DsSuiteUi extends ShortSuiteUi {
tests.sort(Comparator.comparing(function).reversed());
- tests.forEach(occurrence -> {
- DsTestFailureUi failure = new DsTestFailureUi()
- .initFromOccurrence(occurrence,
- tcIgnited,
- suite.projectId(),
- suite.branchName(),
- baseBranch,
- baseBranchId,
- curBranchId,
- requireParamVal);
-
- testFailures.add(failure);
- });
+ tests.stream()
+ .map(occurrence -> new DsTestFailureUi()
+ .initFromOccurrence(occurrence,
+ tcIgnited,
+ suite.projectId(),
+ suite.branchName(),
+ baseBranch,
+ baseBranchId,
+ curBranchId,
+ requireParamVal))
+ .forEach(testFailureUi -> testFailures.add(testFailureUi));
suite.getTopLongRunning().forEach(occurrence -> {
if (occurrence.getAvgDurationMs() > TimeUnit.SECONDS.toMillis(15)) {
@@ -257,9 +254,11 @@ public class DsSuiteUi extends ShortSuiteUi {
private IRunHistory initSuiteStat(ITeamcityIgnited tcIgnited,
- Integer failRateNormalizedBranch,
- Integer curBranchNormalized,
- MultBuildRunCtx suite, IRunHistory referenceStat) {
+ Integer failRateNormalizedBranch,
+ Integer curBranchNormalized,
+ MultBuildRunCtx suite,
+ IRunHistory referenceStat,
+ @Nullable Map<Integer, Integer> requireParamVal) {
IRunHistory statInBaseBranch = referenceStat;
if (statInBaseBranch != null) {
@@ -276,7 +275,7 @@ public class DsSuiteUi extends ShortSuiteUi {
IRunHistory latestRunsSrc = null;
if (!Objects.equals(failRateNormalizedBranch, curBranchNormalized)) {
- IRunHistory statForStripe = suite.history(tcIgnited, curBranchNormalized);
+ IRunHistory statForStripe = suite.history(tcIgnited, curBranchNormalized, requireParamVal);
latestRunsSrc = statForStripe;
latestRuns = statForStripe != null ? statForStripe.getLatestRunResults() : null;
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/buildtype/ParametersCompacted.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/buildtype/ParametersCompacted.java
index 2308ddb..b889c48 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/buildtype/ParametersCompacted.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/buildtype/ParametersCompacted.java
@@ -19,17 +19,18 @@ package org.apache.ignite.ci.teamcity.ignited.buildtype;
import com.google.common.base.MoreObjects;
import com.google.common.base.Strings;
+import org.apache.ignite.internal.util.GridIntList;
+import org.apache.ignite.tcbot.persistence.IStringCompactor;
+import org.apache.ignite.tcbot.persistence.Persisted;
+import org.apache.ignite.tcservice.model.conf.bt.Parameters;
+import org.apache.ignite.tcservice.model.conf.bt.Property;
+
+import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
import java.util.function.BiConsumer;
-import javax.annotation.Nullable;
-
-import org.apache.ignite.tcbot.persistence.Persisted;
-import org.apache.ignite.tcservice.model.conf.bt.Parameters;
-import org.apache.ignite.tcservice.model.conf.bt.Property;
-import org.apache.ignite.tcbot.persistence.IStringCompactor;
-import org.apache.ignite.internal.util.GridIntList;
/**
* Properties (Build/Build Type parameters) compacted value for storing in TC Bot DB
@@ -74,6 +75,16 @@ public class ParametersCompacted {
}
}
+ public ParametersCompacted(Map<Integer, Integer> parms) {
+ keys = new GridIntList(parms.size());
+ values = new GridIntList(parms.size());
+
+ parms.forEach((strId, val) -> {
+ keys.add(strId);
+ values.add(val);
+ });
+ }
+
public Parameters toParameters(IStringCompactor compactor) {
List<Property> props = null;
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/FatBuildCompacted.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/FatBuildCompacted.java
index 51eb4aa..5d71fdc 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/FatBuildCompacted.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/FatBuildCompacted.java
@@ -18,14 +18,6 @@ package org.apache.ignite.ci.teamcity.ignited.fatbuild;
import com.google.common.base.MoreObjects;
import com.google.common.base.Strings;
-
-import java.util.*;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.function.BiPredicate;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
import org.apache.ignite.ci.teamcity.ignited.BuildRefCompacted;
import org.apache.ignite.ci.teamcity.ignited.buildtype.ParametersCompacted;
import org.apache.ignite.ci.teamcity.ignited.change.RevisionCompacted;
@@ -54,6 +46,14 @@ import org.apache.ignite.tcservice.model.vcs.Revision;
import org.apache.ignite.tcservice.model.vcs.Revisions;
import org.apache.ignite.tcservice.model.vcs.VcsRootInstance;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.BiPredicate;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
/**
* Composed data from {@link Build} and other classes, compressed for storage.
*/
@@ -667,7 +667,9 @@ public class FatBuildCompacted extends BuildRefCompacted implements IVersionedEn
if (paramsFilter.test(k, v))
importantParms.put(k, v);
});
- //todo save parameters
+
+ if (!importantParms.isEmpty())
+ invocation.withParameters(importantParms);
}
return invocation;
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 6515806..6b11d2b 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
@@ -52,9 +52,7 @@ public class Invocation {
private byte changePresent;
/** Additional (important) build Parameters, which can be used for filtering. */
- @Nullable private Map<Integer, Integer> parms;
-
- private ParametersCompacted parameters = new ParametersCompacted();
+ @Nullable private ParametersCompacted parameters;
/**
* Creates invocation.
@@ -131,12 +129,13 @@ public class Invocation {
if (parms == null || parms.isEmpty())
return this;
- this.parms = parms;
+ this.parameters = new ParametersCompacted(parms);
return this;
}
public boolean containsParameters(Map<Integer, Integer> requireParameters) {
+ //todo implement contains parameters (compacted).
return false;
}
}
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/InvocationData.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/InvocationData.java
index 090c39c..f973c07 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/InvocationData.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/InvocationData.java
@@ -114,4 +114,8 @@ public class InvocationData {
public void sort() {
invocationList.sort(Comparator.comparing(Invocation::buildId));
}
+
+ public Set<Integer> buildIds() {
+ return invocationList.stream().map(Invocation::buildId).collect(Collectors.toSet());
+ }
}
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 c93398b..244129e 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
@@ -28,6 +28,7 @@ import javax.annotation.Nullable;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -102,18 +103,8 @@ public class RunHistCompacted implements IRunHistory {
}
@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;
+ public Set<Integer> buildIds() {
+ return data.buildIds();
}
private static int[] concatArr(int[] arr1, int[] arr2) {
@@ -215,4 +206,27 @@ public class RunHistCompacted implements IRunHistory {
public void sort() {
data.sort();
}
+
+
+ public RunHistCompacted filterSuiteInvByParms(Map<Integer, Integer> requireParameters) {
+ RunHistCompacted copy = new RunHistCompacted();
+
+ Stream<Invocation> invocationStream = data.invocations().filter(
+ invocation -> invocation.containsParameters(requireParameters)
+ );
+
+ invocationStream.forEach(invocation -> copy.data.add(invocation));
+
+ return copy;
+ }
+
+ public RunHistCompacted filterByBuilds(Set<Integer> builds) {
+ RunHistCompacted copy = new RunHistCompacted();
+
+ data.invocations()
+ .filter(invocation -> builds.contains(invocation.buildId()))
+ .forEach(invocation -> copy.data.add(invocation));
+
+ return copy;
+ }
}
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/SuiteHistory.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/SuiteHistory.java
index 9d5f0e8..c00e243 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/SuiteHistory.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/SuiteHistory.java
@@ -19,6 +19,7 @@ package org.apache.ignite.tcignited.build;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import org.apache.ignite.Ignite;
import org.apache.ignite.ci.teamcity.ignited.runhist.Invocation;
@@ -42,6 +43,8 @@ public class SuiteHistory implements ISuiteRunHistory {
finalizeInvocations();
}
+ private SuiteHistory() {}
+
private void finalizeInvocations() {
//todo add missing status to tests
// testsHistory.values().registerMissing(suiteHist.buildIds());
@@ -59,6 +62,22 @@ public class SuiteHistory implements ISuiteRunHistory {
return testsHistory.get(testName);
}
+ @Override
+ public ISuiteRunHistory filter(Map<Integer, Integer> requireParameters) {
+ RunHistCompacted suitesFiltered = this.suiteHist.filterSuiteInvByParms(requireParameters);
+ Set<Integer> builds = suitesFiltered.buildIds();
+
+ SuiteHistory res = new SuiteHistory();
+ res.suiteHist = suitesFiltered;
+
+ this.testsHistory.forEach((tName,invList)->{
+ RunHistCompacted filteredByBuild = invList.filterByBuilds(builds);
+ res.testsHistory.put(tName, filteredByBuild);
+ });
+
+ return res;
+ }
+
private RunHistCompacted getOrAddTestsHistory(Integer tName) {
return testsHistory.computeIfAbsent(tName, k_ -> new RunHistCompacted());
}
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/TestCompactedV2.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/TestCompactedV2.java
index 39b2d04..8241b3f 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/TestCompactedV2.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/build/TestCompactedV2.java
@@ -20,11 +20,8 @@ package org.apache.ignite.tcignited.build;
import com.google.common.base.MoreObjects;
import com.google.common.base.Strings;
import java.util.Objects;
-import java.util.TreeMap;
-import java.util.function.BiPredicate;
import javax.annotation.Nullable;
import org.apache.ignite.ci.tcbot.common.StringFieldCompacted;
-import org.apache.ignite.ci.teamcity.ignited.buildtype.ParametersCompacted;
import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
import org.apache.ignite.ci.teamcity.ignited.runhist.Invocation;
import org.apache.ignite.ci.teamcity.ignited.runhist.InvocationData;
@@ -380,40 +377,25 @@ public class TestCompactedV2 implements ITest {
/**
* @param build
- * @param paramsFilter parameters filter to find out parameters to be saved in RunHistory (for future filtering).
* @param successStatusStrId
* @return
*/
public static Invocation toInvocation(
- ITest test,
- FatBuildCompacted build,
- BiPredicate<Integer, Integer> paramsFilter, int successStatusStrId) {
+ ITest test,
+ FatBuildCompacted build,
+ int successStatusStrId) {
final boolean failedTest = successStatusStrId != test.status();
+ //todo implement IGNORED, MUTED_FAILURE, MUTED_SUCCESS
final int failCode = failedTest
? (test.isIgnoredTest() || test.isMutedTest())
? InvocationData.MUTED
: InvocationData.FAILURE
: InvocationData.OK;
- Invocation invocation = new Invocation(build.getId())
+ return new Invocation(build.getId())
.withStatus(failCode)
.withChanges(build.changes());
-
- java.util.Map<Integer, Integer> importantParms = new TreeMap<>();
-
- ParametersCompacted parameters = build.parameters();
- if (parameters == null)
- return invocation;
-
- parameters.forEach((k, v) -> {
- if (paramsFilter.test(k, v))
- importantParms.put(k, v);
- });
-
- //todo implement parameter filter and save to parms compacted
- // return invocation.withParameters(importantParms);
- return invocation;
}
/**
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/HistoryCollector.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/HistoryCollector.java
index bfb7bea..681aa5a 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/HistoryCollector.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/HistoryCollector.java
@@ -26,11 +26,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.BiPredicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -275,6 +272,9 @@ public class HistoryCollector {
if (!applicableForHistory(fatBuildCompacted))
return;
+
+ //todo implement parameter filter based on TC Bot conf
+
BiPredicate<Integer, Integer> paramsFilter = (k, v) -> false;
SuiteInvocation sinv = new SuiteInvocation(srvId, normalizedBaseBranch, fatBuildCompacted, compactor, paramsFilter);
@@ -283,7 +283,7 @@ public class HistoryCollector {
tests.forEach(
testCompacted -> {
Invocation invocation = TestCompactedV2.toInvocation(testCompacted,
- fatBuildCompacted, paramsFilter, successStatusStrId);
+ fatBuildCompacted, successStatusStrId);
sinv.addTest(testCompacted.testName(), invocation);
}
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 a477a17..779b516 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
@@ -19,6 +19,7 @@ package org.apache.ignite.tcignited.history;
import javax.annotation.Nullable;
import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
* Test or Build run statistics.
@@ -60,5 +61,5 @@ public interface IRunHistory extends IRunStat, IRunHistSummary {
return 1.0f * getFailuresCount() / runs;
}
- IRunHistory filter(Map<Integer, Integer> requireParameters);
+ Set<Integer> buildIds();
}
diff --git a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/ISuiteRunHistory.java b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/ISuiteRunHistory.java
index 38dff1c..a3223b9 100644
--- a/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/ISuiteRunHistory.java
+++ b/tcbot-teamcity-ignited/src/main/java/org/apache/ignite/tcignited/history/ISuiteRunHistory.java
@@ -16,7 +16,11 @@
*/
package org.apache.ignite.tcignited.history;
+import java.util.Map;
+
public interface ISuiteRunHistory {
IRunHistory self();
IRunHistory getTestRunHist(int testName);
+
+ ISuiteRunHistory filter(Map<Integer, Integer> requireParameters);
}