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/13 22:45:47 UTC

[ignite-teamcity-bot] branch ignite-10243 created (now 06a61f7)

This is an automated email from the ASF dual-hosted git repository.

dpavlov pushed a change to branch ignite-10243
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git.


      at 06a61f7  IGNITE-10243 Chain analysis entry points are get now from preloaded builds supporting cancelled

This branch includes the following new commits:

     new 06a61f7  IGNITE-10243 Chain analysis entry points are get now from preloaded builds supporting cancelled

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[ignite-teamcity-bot] 01/01: IGNITE-10243 Chain analysis entry points are get now from preloaded builds supporting cancelled

Posted by dp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dpavlov pushed a commit to branch ignite-10243
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git

commit 06a61f7941535755755c8b64b2763a48fbc8b547
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Wed Nov 14 01:45:15 2018 +0300

    IGNITE-10243 Chain analysis entry points are get now from preloaded builds supporting cancelled
---
 .../ignite/ci/tcbot/chain/BuildChainProcessor.java | 10 ++++----
 .../ignite/ci/tcbot/chain/PrChainsProcessor.java   | 19 +++-----------
 .../tcbot/chain/TrackedBranchChainsProcessor.java  | 14 ++++-------
 .../ignite/ci/teamcity/ignited/BuildRefDao.java    | 14 -----------
 .../ci/teamcity/ignited/ITeamcityIgnited.java      | 12 ++++++++-
 .../ci/teamcity/ignited/TeamcityIgnitedImpl.java   | 29 +++++++++++++++++++++-
 .../ignite/ci/web/rest/GetChainResultsAsHtml.java  |  6 +----
 .../ci/web/rest/build/GetBuildTestFailures.java    |  7 +-----
 8 files changed, 55 insertions(+), 56 deletions(-)

diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessor.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessor.java
index 06d181d..4835690 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessor.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/BuildChainProcessor.java
@@ -153,7 +153,7 @@ public class BuildChainProcessor {
     /**
      * @param teamcity Teamcity.
      * @param teamcityIgnited
-     * @param entryPoints Entry points.
+     * @param entryPoints Entry point(s): Build(s) to start scan from.
      * @param includeLatestRebuild Include latest rebuild.
      * @param procLog Process logger.
      * @param includeScheduledInfo Include scheduled info.
@@ -163,7 +163,7 @@ public class BuildChainProcessor {
     public FullChainRunCtx loadFullChainContext(
         IAnalyticsEnabledTeamcity teamcity,
         ITeamcityIgnited teamcityIgnited,
-        Collection<BuildRef> entryPoints,
+        Collection<Integer> entryPoints,
         LatestRebuildMode includeLatestRebuild,
         ProcessLogsMode procLog,
         boolean includeScheduledInfo,
@@ -174,7 +174,7 @@ public class BuildChainProcessor {
 
         Map<Integer, FatBuildCompacted> builds = new ConcurrentHashMap<>();
 
-        final Stream<FatBuildCompacted> entryPointsFatBuilds = entryPoints.stream().map(BuildRef::getId)
+        final Stream<FatBuildCompacted> entryPointsFatBuilds = entryPoints.stream()
                 .filter(Objects::nonNull)
                 .filter(id -> !builds.containsKey(id)) //load and propagate only new entry points
                 .map(id -> builds.computeIfAbsent(id, teamcityIgnited::getFatBuild));
@@ -226,8 +226,8 @@ public class BuildChainProcessor {
             return runStat.getCriticalFailRate() * 3.14f + runStat.getFailRate();
         };
 
-        BuildRef someEntryPoint = entryPoints.iterator().next();
-        FatBuildCompacted build = builds.computeIfAbsent(someEntryPoint.getId(), teamcityIgnited::getFatBuild);
+        Integer someEntryPnt = entryPoints.iterator().next();
+        FatBuildCompacted build = builds.computeIfAbsent(someEntryPnt, teamcityIgnited::getFatBuild);
         FullChainRunCtx fullChainRunCtx = new FullChainRunCtx(build.toBuild(compactor));
 
         contexts.sort(Comparator.comparing(function).reversed());
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
index 1828345..3165a26 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
@@ -28,7 +28,6 @@ import org.apache.ignite.ci.analysis.mode.ProcessLogsMode;
 import org.apache.ignite.ci.di.AutoProfiling;
 import org.apache.ignite.ci.github.pure.IGitHubConnection;
 import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
-import org.apache.ignite.ci.tcmodel.hist.BuildRef;
 import org.apache.ignite.ci.user.ICredentialsProv;
 import org.apache.ignite.ci.web.model.current.ChainAtServerCurrentStatus;
 import org.apache.ignite.ci.web.model.current.TestFailuresSummary;
@@ -36,11 +35,9 @@ import org.apache.ignite.ci.web.rest.parms.FullQueryParams;
 import org.jetbrains.annotations.Nullable;
 
 import javax.inject.Inject;
-import java.util.Comparator;
 import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Collectors;
 
 /**
  * Process pull request/untracked branch chain at particular server.
@@ -98,11 +95,7 @@ public class PrChainsProcessor {
         else
             rebuild = LatestRebuildMode.LATEST;
 
-        List<BuildRef> finishedBuilds = teamcity.getFinishedBuildsIncludeSnDepFailed(
-            suiteId,
-            branchForTc);
-
-        long buildResMergeCnt;
+        int buildResMergeCnt;
         if (rebuild == LatestRebuildMode.ALL)
             buildResMergeCnt = cnt == null ? 10 : cnt;
         else
@@ -114,16 +107,12 @@ public class PrChainsProcessor {
         else
             logs = (checkAllLogs != null && checkAllLogs) ? ProcessLogsMode.ALL : ProcessLogsMode.SUITE_NOT_COMPLETE;
 
-        final List<BuildRef> chains = finishedBuilds.stream()
-            .filter(ref -> !ref.isFakeStub())
-            .sorted(Comparator.comparing(BuildRef::getId).reversed())
-            .filter(b -> b.getId() != null)
-            .limit(buildResMergeCnt)
-            .collect(Collectors.toList());
+        List<Integer> hist = tcIgnited.getLastNBuildsFromHistory(suiteId,
+            branchForTc, buildResMergeCnt);
 
         String baseBranch = Strings.isNullOrEmpty(baseBranchForTc) ? ITeamcity.DEFAULT : baseBranchForTc;
 
-        final FullChainRunCtx val = buildChainProcessor.loadFullChainContext(teamcity, tcIgnited, chains,
+        final FullChainRunCtx val = buildChainProcessor.loadFullChainContext(teamcity, tcIgnited, hist,
             rebuild,
             logs, buildResMergeCnt == 1,
             baseBranch);
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
index 5385273..386d227 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
@@ -29,6 +29,7 @@ import org.apache.ignite.ci.analysis.mode.ProcessLogsMode;
 import org.apache.ignite.ci.conf.BranchTracked;
 import org.apache.ignite.ci.di.AutoProfiling;
 import org.apache.ignite.ci.tcmodel.hist.BuildRef;
+import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
 import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
@@ -81,15 +82,9 @@ public class TrackedBranchChainsProcessor {
 
                 ITeamcityIgnited tcIgnited = tcIgnitedProv.server(srvId, creds);
 
-                final List<BuildRef> builds = teamcity.getFinishedBuildsIncludeSnDepFailed(
-                    chainTracked.getSuiteIdMandatory(),
-                    branchForTc);
+                String suiteIdMandatory = chainTracked.getSuiteIdMandatory();
 
-                List<BuildRef> chains = builds.stream()
-                    .filter(ref -> !ref.isFakeStub())
-                    .sorted(Comparator.comparing(BuildRef::getId).reversed())
-                    .limit(buildResMergeCnt)
-                    .filter(b -> b.getId() != null).collect(Collectors.toList());
+                List<Integer> chains = tcIgnited.getLastNBuildsFromHistory(suiteIdMandatory, branchForTc, buildResMergeCnt);
 
                 ProcessLogsMode logs;
                 if (buildResMergeCnt > 1)
@@ -102,7 +97,8 @@ public class TrackedBranchChainsProcessor {
                 boolean includeScheduled = buildResMergeCnt == 1;
 
                 final FullChainRunCtx ctx = chainProc.loadFullChainContext(teamcity,
-                    tcIgnited, chains,
+                    tcIgnited,
+                    chains,
                     rebuild,
                     logs,
                     includeScheduled,
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/BuildRefDao.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/BuildRefDao.java
index 8a9a264..7986799 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/BuildRefDao.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/BuildRefDao.java
@@ -149,20 +149,6 @@ public class BuildRefDao {
     }
 
     /**
-     * @param srvId Server id mask high.
-     * @param buildTypeId Build type id.
-     * @param bracnhNameQry Bracnh name query.
-     */
-    @AutoProfiling
-    @NotNull public List<BuildRef> findBuildsInHistory(int srvId,
-        @Nullable String buildTypeId,
-        String bracnhNameQry) {
-        return findBuildsInHistoryCompacted(srvId, buildTypeId, bracnhNameQry).stream()
-            .map(compacted -> compacted.toBuildRef(compactor))
-            .collect(Collectors.toList());
-    }
-
-    /**
      * @param srvId Server id.
      */
     @AutoProfiling
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 3e69094..7a4faf4 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
@@ -20,11 +20,12 @@ import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 import javax.annotation.Nullable;
-import org.apache.ignite.ci.teamcity.ignited.buildcondition.BuildCondition;
 import org.apache.ignite.ci.tcmodel.hist.BuildRef;
 import org.apache.ignite.ci.tcmodel.result.Build;
+import org.apache.ignite.ci.teamcity.ignited.buildcondition.BuildCondition;
 import org.apache.ignite.ci.teamcity.ignited.change.ChangeCompacted;
 import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
+import org.jetbrains.annotations.NotNull;
 
 /**
  *
@@ -124,4 +125,13 @@ public interface ITeamcityIgnited {
     public FatBuildCompacted getFatBuild(int id, boolean acceptQueued);
 
     public Collection<ChangeCompacted> getAllChanges(int[] changeIds);
+
+    /**
+     * Returns IDs of N. most recent builds in build history.
+     *
+     * @param btId Bt id.
+     * @param branchForTc Branch for tc.
+     * @param cnt Count.
+     */
+    @NotNull public List<Integer> getLastNBuildsFromHistory(String btId, String branchForTc, int cnt);
 }
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 b6b0f04..0f95218 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
@@ -275,7 +275,9 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
 
         String bracnhNameQry = branchForQuery(branchName);
 
-        return buildRefDao.findBuildsInHistory(srvIdMaskHigh, buildTypeId, bracnhNameQry);
+        return buildRefDao.findBuildsInHistoryCompacted(srvIdMaskHigh, buildTypeId, bracnhNameQry)
+            .stream().map(compacted -> compacted.toBuildRef(compactor))
+            .collect(Collectors.toList());
     }
 
     /** {@inheritDoc} */
@@ -290,6 +292,31 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
         return buildRefDao.findBuildsInHistoryCompacted(srvIdMaskHigh, buildTypeId, bracnhNameQry);
     }
 
+    /** {@inheritDoc} */
+    @AutoProfiling
+    @Override @NotNull public List<Integer> getLastNBuildsFromHistory(String btId, String branchForTc, int cnt) {
+        List<BuildRefCompacted> hist = getBuildHistoryCompacted(btId, branchForTc);
+
+        List<Integer> chains = hist.stream()
+            .filter(ref -> !ref.isFakeStub())
+            .filter(t -> t.isNotCancelled(compactor))
+            .sorted(Comparator.comparing(BuildRefCompacted::id).reversed())
+            .limit(cnt)
+            .map(BuildRefCompacted::id)
+            .collect(Collectors.toList());
+
+        if (chains.isEmpty()) {
+            // probably there are no not-cacelled builds at all
+            chains = hist.stream()
+                .filter(ref -> !ref.isFakeStub())
+                .sorted(Comparator.comparing(BuildRefCompacted::id).reversed())
+                .map(BuildRefCompacted::id)
+                .limit(cnt)
+                .collect(Collectors.toList());
+        }
+        return chains;
+    }
+
     public String branchForQuery(@Nullable String branchName) {
         String bracnhNameQry;
         if (ITeamcity.DEFAULT.equals(branchName))
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 a8ab2a5..0117742 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
@@ -71,10 +71,6 @@ public class GetChainResultsAsHtml {
         final Injector injector = CtxListener.getInjector(ctx);
         final BuildChainProcessor buildChainProcessor = injector.getInstance(BuildChainProcessor.class);
 
-        String hrefById = ITeamcity.buildHref(buildId);
-        BuildRef build = new BuildRef();
-        build.setId(buildId);
-        build.href = hrefById;
         String failRateBranch = ITeamcity.DEFAULT;
 
         ITcServerProvider tcHelper = injector.getInstance(ITcServerProvider.class);
@@ -82,7 +78,7 @@ public class GetChainResultsAsHtml {
         IAnalyticsEnabledTeamcity teamcity = tcHelper.server(srvId, creds);
         ITeamcityIgnited teamcityIgnited = injector.getInstance(ITeamcityIgnitedProvider.class).server(srvId, creds);
 
-        final FullChainRunCtx ctx = buildChainProcessor.loadFullChainContext(teamcity, teamcityIgnited, Collections.singletonList(build),
+        final FullChainRunCtx ctx = buildChainProcessor.loadFullChainContext(teamcity, teamcityIgnited, Collections.singletonList(buildId),
             LatestRebuildMode.NONE,
             ProcessLogsMode.SUITE_NOT_COMPLETE, false,
             failRateBranch);
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 40aba93..5cc9c5f 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
@@ -134,16 +134,11 @@ public class GetBuildTestFailures {
         IAnalyticsEnabledTeamcity teamcity = tcSrvProvider.server(srvId, prov);
         ITeamcityIgnited teamcityIgnited = tcIgnitedProv.server(srvId, prov);
 
-        //processChainByRef(teamcity, includeLatestRebuild, build, true, true)
-        String hrefById = teamcity.getBuildHrefById(buildId);
-        BuildRef build = new BuildRef();
-        build.setId(buildId);
-        build.href = hrefById;
         String failRateBranch = ITeamcity.DEFAULT;
 
         ProcessLogsMode procLogs = (checkAllLogs != null && checkAllLogs) ? ProcessLogsMode.ALL : ProcessLogsMode.SUITE_NOT_COMPLETE;
 
-        final FullChainRunCtx ctx = buildChainProcessor.loadFullChainContext(teamcity, teamcityIgnited, Collections.singletonList(build),
+        final FullChainRunCtx ctx = buildChainProcessor.loadFullChainContext(teamcity, teamcityIgnited, Collections.singletonList(buildId),
                 LatestRebuildMode.NONE,
                 procLogs, false,
             failRateBranch);