This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch tracked-tag-for-history
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
The following commit(s) were added to refs/heads/tracked-tag-for-history by
this push:
new c982b6b Show tests with duration > 1 minute in RunAll: Filtering
history by scale factor, first implementation
c982b6b is described below
commit c982b6b2fe30c1df61ebb204e6d7870fb69d681a
Author: Dmitriy Pavlov <[email protected]>
AuthorDate: Mon Jul 29 17:31:47 2019 +0300
Show tests with duration > 1 minute in RunAll: Filtering history by scale
factor, first implementation
---
.../ignite/ci/web/rest/GetChainResultsAsHtml.java | 1 +
.../ci/web/rest/build/GetBuildTestFailures.java | 1 +
.../ci/tcbot/chain/BuildChainProcessorTest.java | 6 ++--
.../tcbot/common/conf/IParameterValueSpec.java | 5 +++-
.../tcbot/engine/chain/BuildChainProcessor.java | 29 +++++++++++++++++--
.../ignite/tcbot/engine/pr/PrChainsProcessor.java | 4 +--
.../tracked/TrackedBranchChainsProcessor.java | 33 +++++++++++++++++++---
7 files changed, 66 insertions(+), 13 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 16cad16..25623b6 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
@@ -82,6 +82,7 @@ public class GetChainResultsAsHtml {
false,
failRateBranch,
SyncMode.RELOAD_QUEUED,
+ null,
null);
DsChainUi status = new DsChainUi(srvCode, tcIgn.serverCode(),
ctx.branchName());
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 c016bf3..2b38122 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
@@ -132,6 +132,7 @@ public class GetBuildTestFailures {
false,
failRateBranch,
syncMode,
+ null,
null);
DsChainUi chainStatus = new DsChainUi(srvCode, tcIgnited.serverCode(),
ctx.branchName());
diff --git
a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessorTest.java
b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessorTest.java
index c79bcd7..e942af9 100644
---
a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessorTest.java
+++
b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessorTest.java
@@ -87,7 +87,7 @@ public class BuildChainProcessorTest {
FullChainRunCtx ctx = bcp.loadFullChainContext(tcIgnited,
entry,
- LatestRebuildMode.ALL, ProcessLogsMode.SUITE_NOT_COMPLETE, false,
ITeamcity.DEFAULT, SyncMode.NONE, null);
+ LatestRebuildMode.ALL, ProcessLogsMode.SUITE_NOT_COMPLETE, false,
ITeamcity.DEFAULT, SyncMode.NONE, null, null);
List<MultBuildRunCtx> suites =
ctx.failedChildSuites().collect(Collectors.toList());
assertTrue(!suites.isEmpty());
@@ -123,7 +123,7 @@ public class BuildChainProcessorTest {
FullChainRunCtx ctx2 = bcp.loadFullChainContext(tcIgnited,
entry,
- LatestRebuildMode.ALL, ProcessLogsMode.SUITE_NOT_COMPLETE, false,
ITeamcity.DEFAULT, SyncMode.NONE, null);
+ LatestRebuildMode.ALL, ProcessLogsMode.SUITE_NOT_COMPLETE, false,
ITeamcity.DEFAULT, SyncMode.NONE, null, null);
List<MultBuildRunCtx> suites2 =
ctx2.failedChildSuites().collect(Collectors.toList());
assertTrue(!suites2.isEmpty());
@@ -153,7 +153,7 @@ public class BuildChainProcessorTest {
FullChainRunCtx ctx = bcp.loadFullChainContext(tcIgnitedMock(builds),
entry,
- LatestRebuildMode.LATEST, ProcessLogsMode.SUITE_NOT_COMPLETE,
false, ITeamcity.DEFAULT, SyncMode.NONE, null);
+ LatestRebuildMode.LATEST, ProcessLogsMode.SUITE_NOT_COMPLETE,
false, ITeamcity.DEFAULT, SyncMode.NONE, null, null);
List<MultBuildRunCtx> suites =
ctx.failedChildSuites().collect(Collectors.toList());
assertTrue(!suites.isEmpty());
diff --git
a/tcbot-common/src/main/java/org/apache/ignite/tcbot/common/conf/IParameterValueSpec.java
b/tcbot-common/src/main/java/org/apache/ignite/tcbot/common/conf/IParameterValueSpec.java
index 187c7e5..0c8a04c 100644
---
a/tcbot-common/src/main/java/org/apache/ignite/tcbot/common/conf/IParameterValueSpec.java
+++
b/tcbot-common/src/main/java/org/apache/ignite/tcbot/common/conf/IParameterValueSpec.java
@@ -21,5 +21,8 @@ public interface IParameterValueSpec {
String value();
- String label();
+ /**
+ * @return label or tag, which should be applied to this
+ */
+ public String label();
}
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 c86f396..25ef2f8 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
@@ -139,6 +139,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
*/
@AutoProfiling
public FullChainRunCtx loadFullChainContext(
@@ -149,7 +150,8 @@ public class BuildChainProcessor {
boolean includeScheduledInfo,
@Nullable String failRateBranch,
SyncMode mode,
- @Nullable SortOption sortOption) {
+ @Nullable SortOption sortOption,
+ @Nullable Map<Integer, Integer> requireParamVal) {
if (entryPoints.isEmpty())
return new FullChainRunCtx(Build.createFakeStub());
@@ -167,7 +169,8 @@ public class BuildChainProcessor {
includeLatestRebuild,
builds,
mode,
- tcIgn);
+ tcIgn,
+ requireParamVal);
freshRebuilds.put(k, futures);
}
@@ -315,7 +318,8 @@ public class BuildChainProcessor {
LatestRebuildMode includeLatestRebuild,
Map<Integer, Future<FatBuildCompacted>> allBuildsMap,
SyncMode syncMode,
- ITeamcityIgnited tcIgn) {
+ ITeamcityIgnited tcIgn,
+ @Nullable Map<Integer, Integer> requireParamVal) {
if (includeLatestRebuild == LatestRebuildMode.NONE || builds.isEmpty())
return completed(builds);
@@ -337,6 +341,25 @@ public class BuildChainProcessor {
.filter(bref -> bref.isFinished(compactor));
if (includeLatestRebuild == LatestRebuildMode.LATEST) {
+ if (requireParamVal != null && !requireParamVal.isEmpty()) {
+ hist = hist.filter(
+ ref -> {
+ Future<FatBuildCompacted> buildFut =
getOrLoadBuild(ref.id(), syncMode, allBuildsMap, tcIgn);
+
+ Set<Map.Entry<Integer, Integer>> entries =
requireParamVal.entrySet();
+ for (Map.Entry<Integer, Integer> next : entries) {
+ Integer key = next.getKey();
+
+ FatBuildCompacted fatBuild =
FutureUtil.getResult(buildFut);
+
+ int valId =
fatBuild.parameters().findPropertyStringId(key);
+ if (Objects.equals(next.getValue(), valId))
+ return true;
+ }
+ return false;
+ });
+ }
+
BuildRefCompacted recentRef =
hist.max(Comparator.comparing(BuildRefCompacted::id))
.orElse(freshBuild);
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 740f5bc..0f084e7 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
@@ -150,7 +150,7 @@ public class PrChainsProcessor {
buildResMergeCnt == 1,
baseBranchForTc,
mode,
- null);
+ null, null);
DsChainUi chainStatus = new DsChainUi(srvCodeOrAlias,
tcIgnited.serverCode(), branchForTc);
@@ -275,7 +275,7 @@ public class PrChainsProcessor {
false,
baseBranch,
syncMode,
- null);
+ null, null);
if (ctx.isFakeStub())
return null;
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 3cdd780..56d266a 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
@@ -16,12 +16,17 @@
*/
package org.apache.ignite.tcbot.engine.tracked;
+import com.google.common.base.Strings;
+import java.util.Collection;
import java.util.Comparator;
+import java.util.HashMap;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Inject;
+import org.apache.ignite.tcbot.common.conf.IBuildParameterSpec;
+import org.apache.ignite.tcbot.common.conf.IParameterValueSpec;
import org.apache.ignite.tcbot.common.conf.ITcServerConfig;
import org.apache.ignite.tcbot.common.interceptor.AutoProfiling;
import org.apache.ignite.tcbot.engine.chain.BuildChainProcessor;
@@ -84,16 +89,35 @@ public class TrackedBranchChainsProcessor implements
IDetailedStatusForTrackedBr
tracked.chainsStream()
.filter(chainTracked ->
tcIgnitedProv.hasAccess(chainTracked.serverCode(), creds))
.map(chainTracked -> {
- final String srvCode = chainTracked.serverCode();
+ final String srvCodeOrAlias = chainTracked.serverCode();
final String branchForTc = chainTracked.tcBranch();
//branch is tracked, so fail rate should be taken from this
branch data (otherwise it is specified).
final String baseBranchTc =
chainTracked.tcBaseBranch().orElse(branchForTc);
- ITeamcityIgnited tcIgnited = tcIgnitedProv.server(srvCode,
creds);
+ ITeamcityIgnited tcIgnited =
tcIgnitedProv.server(srvCodeOrAlias, creds);
- DsChainUi chainStatus = new DsChainUi(srvCode,
+ java.util.Map<Integer, Integer> requireParamVal = new
HashMap<>();
+
+ if(!Strings.isNullOrEmpty(tagForHistSelected)) {
+ ITcServerConfig cfg =
tcBotCfg.getTeamcityConfig(srvCodeOrAlias);
+ Collection<? extends IBuildParameterSpec> specs =
cfg.filteringParameters();
+ for (IBuildParameterSpec buildParameterSpec : specs) {
+ Collection<? extends IParameterValueSpec> selection =
buildParameterSpec.selection();
+ for (IParameterValueSpec valueSpec : selection) {
+ if(tagForHistSelected.equals(valueSpec.label())
+ && !Strings.isNullOrEmpty(valueSpec.value())) {
+
+ requireParamVal.put(
+
compactor.getStringId(buildParameterSpec.name()),
+ compactor.getStringId(valueSpec.value()));
+ }
+ }
+ }
+ }
+
+ DsChainUi chainStatus = new DsChainUi(srvCodeOrAlias,
tcIgnited.serverCode(),
branchForTc);
@@ -121,7 +145,8 @@ public class TrackedBranchChainsProcessor implements
IDetailedStatusForTrackedBr
includeScheduled,
baseBranchTc,
syncMode,
- sortOption
+ sortOption,
+ requireParamVal
);
int cnt = (int)ctx.getRunningUpdates().count();