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:48 UTC
[ignite-teamcity-bot] 01/01: IGNITE-10243 Chain analysis entry
points are get now from preloaded builds supporting cancelled
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);