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();

Reply via email to