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/16 16:25:22 UTC
[ignite-teamcity-bot] branch partial-pr-data-display updated:
Partial PR data display implemented,
special mode to display at least part of data
This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch partial-pr-data-display
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
The following commit(s) were added to refs/heads/partial-pr-data-display by this push:
new 73bc9b1 Partial PR data display implemented, special mode to display at least part of data
73bc9b1 is described below
commit 73bc9b19569903d1dccb6b7aa8763410d5268594
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Fri Nov 16 19:25:22 2018 +0300
Partial PR data display implemented, special mode to display at least part of data
---
.../main/java/org/apache/ignite/ci/TcHelper.java | 3 +-
.../ignite/ci/tcbot/chain/BuildChainProcessor.java | 56 ++++++++++++++--------
.../ignite/ci/tcbot/chain/PrChainsProcessor.java | 10 +++-
.../tcbot/chain/TrackedBranchChainsProcessor.java | 4 +-
.../ci/teamcity/ignited/ITeamcityIgnited.java | 5 +-
.../ignite/ci/teamcity/ignited/SyncMode.java | 28 +++++++++++
.../ci/teamcity/ignited/TeamcityIgnitedImpl.java | 11 ++++-
.../ignited/fatbuild/ProactiveFatBuildSync.java | 8 ++--
.../org/apache/ignite/ci/web/model/Version.java | 2 +-
.../ignite/ci/web/rest/GetChainResultsAsHtml.java | 5 +-
.../ci/web/rest/build/GetBuildTestFailures.java | 5 +-
.../ignite/ci/web/rest/pr/GetPrTestFailures.java | 44 +++++++++--------
ignite-tc-helper-web/src/main/webapp/pr.html | 20 ++++++++
13 files changed, 143 insertions(+), 58 deletions(-)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
index cd9db2b..9a0c891 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
@@ -37,6 +37,7 @@ import org.apache.ignite.ci.tcmodel.result.problems.ProblemOccurrence;
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.ignited.SyncMode;
import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
import org.apache.ignite.ci.user.ICredentialsProv;
@@ -216,7 +217,7 @@ public class TcHelper implements ITcHelper, IJiraIntegration {
TestFailuresSummary summary = prChainsProcessor.getTestFailuresSummary(
prov, srvId, buildTypeId, branchForTc,
- FullQueryParams.LATEST, null, null, false);
+ FullQueryParams.LATEST, null, null, false, SyncMode.RELOAD_QUEUED);
if (summary != null) {
for (ChainAtServerCurrentStatus server : summary.servers) {
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 b1616bd..61390e4 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
@@ -49,6 +49,7 @@ import org.apache.ignite.ci.tcmodel.result.Build;
import org.apache.ignite.ci.teamcity.ignited.BuildRefCompacted;
import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
+import org.apache.ignite.ci.teamcity.ignited.SyncMode;
import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
import org.apache.ignite.ci.util.FutureUtil;
import org.apache.ignite.ci.web.TcUpdatePool;
@@ -86,6 +87,8 @@ public class BuildChainProcessor {
) {
final List<SuiteLRTestsSummary> res = new ArrayList<>();
+ SyncMode mode = SyncMode.RELOAD_QUEUED;
+
if (entryPoints.isEmpty())
return res;
@@ -99,7 +102,7 @@ public class BuildChainProcessor {
final ExecutorService svc = tcUpdatePool.getService();
final Stream<FatBuildCompacted> depsFirstLevel = entryPointsFatBuilds
- .map(ref -> svc.submit(() -> dependencies(teamcityIgnited, builds, ref)))
+ .map(ref -> svc.submit(() -> dependencies(teamcityIgnited, builds, mode, ref)))
.collect(Collectors.toList())
.stream()
.flatMap(fut -> FutureUtil.getResult(fut));
@@ -159,6 +162,7 @@ public class BuildChainProcessor {
* @param procLog Process logger.
* @param includeScheduledInfo Include scheduled info.
* @param failRateBranch Fail rate branch.
+ * @param mode
*/
@AutoProfiling
public FullChainRunCtx loadFullChainContext(
@@ -168,7 +172,8 @@ public class BuildChainProcessor {
LatestRebuildMode includeLatestRebuild,
ProcessLogsMode procLog,
boolean includeScheduledInfo,
- @Nullable String failRateBranch) {
+ @Nullable String failRateBranch,
+ SyncMode mode) {
if (entryPoints.isEmpty())
return new FullChainRunCtx(Build.createFakeStub());
@@ -178,20 +183,22 @@ public class BuildChainProcessor {
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));
+ .map(id -> builds.computeIfAbsent(id, id1 -> {
+ return teamcityIgnited.getFatBuild(id1, mode);
+ }));
final ExecutorService svc = tcUpdatePool.getService();
final Stream<FatBuildCompacted> depsFirstLevel = entryPointsFatBuilds
- .flatMap(ref -> dependencies(teamcityIgnited, builds, ref));
+ .flatMap(ref -> dependencies(teamcityIgnited, builds, mode, ref));
Stream<FatBuildCompacted> secondLevelDeps = depsFirstLevel
- .flatMap(ref -> dependencies(teamcityIgnited, builds, ref));
+ .flatMap(ref -> dependencies(teamcityIgnited, builds, mode, ref));
// builds may became non unique because of race in filtering and acquiring deps
final List<Future<Stream<FatBuildCompacted>>> phase3Submitted = secondLevelDeps
.map((fatBuild) -> svc.submit(
- () -> replaceWithRecent(teamcityIgnited, includeLatestRebuild, builds, fatBuild, entryPoints.size())))
+ () -> replaceWithRecent(teamcityIgnited, includeLatestRebuild, mode, builds, fatBuild, entryPoints.size())))
.collect(Collectors.toList());
Map<String, MultBuildRunCtx> buildsCtxMap = new ConcurrentHashMap<>();
@@ -222,7 +229,8 @@ public class BuildChainProcessor {
};
Integer someEntryPnt = entryPoints.iterator().next();
- FatBuildCompacted build = builds.computeIfAbsent(someEntryPnt, teamcityIgnited::getFatBuild);
+ FatBuildCompacted build = builds.computeIfAbsent(someEntryPnt,
+ id -> teamcityIgnited.getFatBuild(id, mode));
FullChainRunCtx fullChainRunCtx = new FullChainRunCtx(build.toBuild(compactor));
contexts.sort(Comparator.comparing(function).reversed());
@@ -270,10 +278,10 @@ public class BuildChainProcessor {
@NotNull
@AutoProfiling
protected Stream<FatBuildCompacted> replaceWithRecent(ITeamcityIgnited teamcityIgnited,
- LatestRebuildMode includeLatestRebuild,
- Map<Integer, FatBuildCompacted> builds,
- FatBuildCompacted buildCompacted,
- int cntLimit) {
+ LatestRebuildMode includeLatestRebuild,
+ SyncMode syncMode, Map<Integer, FatBuildCompacted> builds,
+ FatBuildCompacted buildCompacted,
+ int cntLimit) {
if (includeLatestRebuild == LatestRebuildMode.NONE)
return Stream.of(buildCompacted);
@@ -290,7 +298,7 @@ public class BuildChainProcessor {
.orElse(buildCompacted);
return Stream.of(recentRef)
- .map(b -> builds.computeIfAbsent(b.id(), teamcityIgnited::getFatBuild));
+ .map(b -> builds.computeIfAbsent(b.id(), id -> teamcityIgnited.getFatBuild(id, syncMode)));
}
if (includeLatestRebuild == LatestRebuildMode.ALL) {
@@ -360,8 +368,9 @@ public class BuildChainProcessor {
@NotNull
private Stream<FatBuildCompacted> dependencies(
- ITeamcityIgnited teamcityIgnited,
- Map<Integer, FatBuildCompacted> builds,
+ ITeamcityIgnited teamcityIgnited,
+ Map<Integer, FatBuildCompacted> builds,
+ SyncMode mode,
FatBuildCompacted build) {
Stream<FatBuildCompacted> stream = IntStream.of(build.snapshotDependencies())
@@ -369,15 +378,14 @@ public class BuildChainProcessor {
if (builds.containsKey(id))
return Futures.<FatBuildCompacted>immediateFuture(null); //load and propagate only new dependencies
+ if (mode == SyncMode.NONE)
+ return Futures.immediateFuture(loadBuild(teamcityIgnited, builds, mode, id));
+
return tcUpdatePool.getService().submit(() -> {
if (builds.containsKey(id))
return null;
- FatBuildCompacted buildLoaded = teamcityIgnited.getFatBuild(id);
-
- FatBuildCompacted prevVal = builds.putIfAbsent(id, buildLoaded);
-
- return prevVal == null ? buildLoaded : null;
+ return loadBuild(teamcityIgnited, builds, mode, id);
});
})
.collect(Collectors.toList())
@@ -389,4 +397,14 @@ public class BuildChainProcessor {
Stream.of(build),
stream);
}
+
+ @Nullable
+ private FatBuildCompacted loadBuild(ITeamcityIgnited teamcityIgnited, Map<Integer, FatBuildCompacted> builds,
+ SyncMode mode, int id) {
+ FatBuildCompacted buildLoaded = teamcityIgnited.getFatBuild(id, mode);
+
+ FatBuildCompacted prevVal = builds.putIfAbsent(id, buildLoaded);
+
+ return prevVal == null ? buildLoaded : null;
+ }
}
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 3165a26..e87029c 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
@@ -20,6 +20,7 @@ import com.google.common.base.Strings;
import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
+import org.apache.ignite.ci.teamcity.ignited.SyncMode;
import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
import org.apache.ignite.ci.ITeamcity;
import org.apache.ignite.ci.analysis.FullChainRunCtx;
@@ -51,6 +52,8 @@ public class PrChainsProcessor {
/** Tc server provider. */
@Inject ITeamcityIgnitedProvider tcIgnitedProvider;
+
+ /** Git hub connection provider. */
@Inject IGitHubConnectionProvider gitHubConnProvider;
/**
@@ -62,6 +65,7 @@ public class PrChainsProcessor {
* @param cnt Count.
* @param baseBranchForTc Base branch name in TC identification.
* @param checkAllLogs Check all logs
+ * @param mode TC Server Sync Mode
* @return Test failures summary.
*/
@AutoProfiling
@@ -73,7 +77,8 @@ public class PrChainsProcessor {
String act,
Integer cnt,
@Nullable String baseBranchForTc,
- @Nullable Boolean checkAllLogs) {
+ @Nullable Boolean checkAllLogs,
+ SyncMode mode) {
final TestFailuresSummary res = new TestFailuresSummary();
final AtomicInteger runningUpdates = new AtomicInteger();
@@ -115,7 +120,8 @@ public class PrChainsProcessor {
final FullChainRunCtx val = buildChainProcessor.loadFullChainContext(teamcity, tcIgnited, hist,
rebuild,
logs, buildResMergeCnt == 1,
- baseBranch);
+ baseBranch,
+ mode);
Optional<FullChainRunCtx> pubCtx = Optional.of(val);
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 fe67693..be329aa 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.conf.BranchTracked;
import org.apache.ignite.ci.di.AutoProfiling;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
+import org.apache.ignite.ci.teamcity.ignited.SyncMode;
import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.web.model.current.ChainAtServerCurrentStatus;
@@ -99,7 +100,8 @@ public class TrackedBranchChainsProcessor {
rebuild,
logs,
includeScheduled,
- baseBranchTc
+ baseBranchTc,
+ SyncMode.RELOAD_QUEUED
);
int cnt = (int)ctx.getRunningUpdates().count();
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 ee8b0bf..5bf5b66 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
@@ -102,15 +102,16 @@ public interface ITeamcityIgnited {
* @param id Id.
*/
public default FatBuildCompacted getFatBuild(int id) {
- return getFatBuild(id, false);
+ return getFatBuild(id, SyncMode.RELOAD_QUEUED);
}
/**
* @param id Id.
+ * @param mode Refresh mode.
*/
- public FatBuildCompacted getFatBuild(int id, boolean acceptQueued);
+ public FatBuildCompacted getFatBuild(int id, SyncMode mode);
public Collection<ChangeCompacted> getAllChanges(int[] changeIds);
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/SyncMode.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/SyncMode.java
new file mode 100644
index 0000000..f88a11c
--- /dev/null
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/SyncMode.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.ci.teamcity.ignited;
+
+public enum SyncMode {
+ /** All: Entity version updated, queued builds re-check, absent entry. */
+ RELOAD_QUEUED,
+
+ /** Load only builds absent in DB, queued and running builds returned as is. */
+ LOAD_NEW,
+
+ /** None: Return only DB version, in case entity is absent fake is returned. */
+ NONE
+}
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 0207bfc..63d9727 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
@@ -342,10 +342,17 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
}
/** {@inheritDoc} */
- @Override public FatBuildCompacted getFatBuild(int buildId, boolean acceptQueued) {
+ @Override public FatBuildCompacted getFatBuild(int buildId, SyncMode mode) {
FatBuildCompacted existingBuild = getFatBuildFromIgnite(buildId);
- FatBuildCompacted savedVer = buildSync.loadBuild(conn, buildId, existingBuild, acceptQueued);
+ if (mode == SyncMode.NONE) {
+ if (existingBuild != null)
+ return existingBuild;
+ else
+ return new FatBuildCompacted(); // providing fake builds
+ }
+
+ FatBuildCompacted savedVer = buildSync.loadBuild(conn, buildId, existingBuild, mode);
//build was modified, probably we need also to update reference accordindly
if (savedVer != null)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/ProactiveFatBuildSync.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/ProactiveFatBuildSync.java
index 3eab437..f8cf42f 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/ProactiveFatBuildSync.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/fatbuild/ProactiveFatBuildSync.java
@@ -29,6 +29,7 @@ import org.apache.ignite.ci.tcmodel.result.tests.TestOccurrencesFull;
import org.apache.ignite.ci.teamcity.ignited.BuildRefDao;
import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
+import org.apache.ignite.ci.teamcity.ignited.SyncMode;
import org.apache.ignite.ci.teamcity.ignited.change.ChangeSync;
import org.apache.ignite.ci.teamcity.pure.ITeamcityConn;
import org.apache.ignite.ci.util.ExceptionUtil;
@@ -200,7 +201,7 @@ public class ProactiveFatBuildSync {
try {
FatBuildCompacted existingBuild = builds.get(FatBuildDao.buildIdToCacheKey(srvIdMaskHigh, buildId));
- FatBuildCompacted savedVer = loadBuild(conn, buildId, existingBuild, false);
+ FatBuildCompacted savedVer = loadBuild(conn, buildId, existingBuild, SyncMode.RELOAD_QUEUED);
if (savedVer != null)
ld.incrementAndGet();
@@ -233,17 +234,16 @@ public class ProactiveFatBuildSync {
* @param conn
* @param buildId
* @param existingBuild
- * @param acceptQueued
* @return null if nothing was saved, use existing build
*/
@Nullable
public FatBuildCompacted loadBuild(ITeamcityConn conn, int buildId,
@Nullable FatBuildCompacted existingBuild,
- boolean acceptQueued) {
+ SyncMode mode) {
if (existingBuild != null && !existingBuild.isOutdatedEntityVersion()) {
boolean finished = !existingBuild.isRunning(compactor) && !existingBuild.isQueued(compactor);
- if(finished || acceptQueued)
+ if (finished || mode != SyncMode.RELOAD_QUEUED)
return null;
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
index 8deea67..466151c 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
@@ -23,7 +23,7 @@ package org.apache.ignite.ci.web.model;
public static final String GITHUB_REF = "https://github.com/apache/ignite-teamcity-bot";
/** TC Bot Version. */
- public static final String VERSION = "20181115";
+ public static final String VERSION = "20181116";
/** TC Bot Version. */
public String version = VERSION;
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 0117742..415daa9 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
@@ -29,16 +29,15 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import com.google.inject.Injector;
-import org.apache.ignite.ci.ITcHelper;
import org.apache.ignite.ci.tcbot.chain.BuildChainProcessor;
import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
import org.apache.ignite.ci.ITeamcity;
import org.apache.ignite.ci.analysis.FullChainRunCtx;
import org.apache.ignite.ci.analysis.mode.LatestRebuildMode;
import org.apache.ignite.ci.analysis.mode.ProcessLogsMode;
-import org.apache.ignite.ci.tcmodel.hist.BuildRef;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
+import org.apache.ignite.ci.teamcity.ignited.SyncMode;
import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.util.FutureUtil;
@@ -81,7 +80,7 @@ public class GetChainResultsAsHtml {
final FullChainRunCtx ctx = buildChainProcessor.loadFullChainContext(teamcity, teamcityIgnited, Collections.singletonList(buildId),
LatestRebuildMode.NONE,
ProcessLogsMode.SUITE_NOT_COMPLETE, false,
- failRateBranch);
+ failRateBranch, SyncMode.RELOAD_QUEUED);
ChainAtServerCurrentStatus status = new ChainAtServerCurrentStatus(teamcity.serverId(), 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 5cc9c5f..5e6f9d2 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
@@ -19,10 +19,10 @@ package org.apache.ignite.ci.web.rest.build;
import com.google.common.collect.BiMap;
import java.text.ParseException;
-import java.util.Date;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import com.google.inject.Injector;
+import org.apache.ignite.ci.teamcity.ignited.SyncMode;
import org.apache.ignite.ci.teamcity.ignited.buildcondition.BuildCondition;
import org.apache.ignite.ci.tcbot.chain.BuildChainProcessor;
import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
@@ -31,7 +31,6 @@ import org.apache.ignite.ci.ITeamcity;
import org.apache.ignite.ci.analysis.FullChainRunCtx;
import org.apache.ignite.ci.analysis.mode.LatestRebuildMode;
import org.apache.ignite.ci.analysis.mode.ProcessLogsMode;
-import org.apache.ignite.ci.tcmodel.hist.BuildRef;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
import org.apache.ignite.ci.tcmodel.result.tests.TestRef;
@@ -141,7 +140,7 @@ public class GetBuildTestFailures {
final FullChainRunCtx ctx = buildChainProcessor.loadFullChainContext(teamcity, teamcityIgnited, Collections.singletonList(buildId),
LatestRebuildMode.NONE,
procLogs, false,
- failRateBranch);
+ failRateBranch, SyncMode.RELOAD_QUEUED);
final ChainAtServerCurrentStatus chainStatus = new ChainAtServerCurrentStatus(srvId, ctx.branchName());
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/pr/GetPrTestFailures.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/pr/GetPrTestFailures.java
index ca93dc5..2cb5bcb 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/pr/GetPrTestFailures.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/pr/GetPrTestFailures.java
@@ -25,12 +25,11 @@ import org.apache.ignite.ci.tcbot.chain.PrChainsProcessor;
import org.apache.ignite.ci.github.pure.IGitHubConnection;
import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
import org.apache.ignite.ci.github.PullRequest;
+import org.apache.ignite.ci.teamcity.ignited.SyncMode;
import org.apache.ignite.ci.user.ICredentialsProv;
-import org.apache.ignite.ci.web.BackgroundUpdater;
import org.apache.ignite.ci.web.CtxListener;
import org.apache.ignite.ci.web.model.current.TestFailuresSummary;
import org.apache.ignite.ci.web.model.current.UpdateInfo;
-import org.apache.ignite.ci.web.rest.parms.FullQueryParams;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -69,12 +68,12 @@ public class GetPrTestFailures {
@Nullable @QueryParam("baseBranchForTc") String baseBranchForTc,
@Nullable @QueryParam("checkAllLogs") Boolean checkAllLogs) {
- return new UpdateInfo().copyFrom(getPrFailures(srvId, suiteId, branchForTc, act, cnt, baseBranchForTc, checkAllLogs));
+ return new UpdateInfo().copyFrom(getPrFailuresResultsNoSync(srvId, suiteId, branchForTc, act, cnt, baseBranchForTc, checkAllLogs));
}
@GET
- @Path("results")
- public TestFailuresSummary getPrFailures(
+ @Path("resultsNoSync")
+ public TestFailuresSummary getPrFailuresResultsNoSync(
@Nullable @QueryParam("serverId") String srvId,
@Nonnull @QueryParam("suiteId") String suiteId,
@Nonnull @QueryParam("branchForTc") String branchForTc,
@@ -83,15 +82,25 @@ public class GetPrTestFailures {
@Nullable @QueryParam("baseBranchForTc") String baseBranchForTc,
@Nullable @QueryParam("checkAllLogs") Boolean checkAllLogs) {
- final BackgroundUpdater updater = CtxListener.getBackgroundUpdater(ctx);
+ return getPrFailsWithSyncMode(srvId, suiteId, branchForTc, act, cnt, baseBranchForTc, checkAllLogs, SyncMode.NONE);
+ }
- final FullQueryParams key = new FullQueryParams(srvId, suiteId, branchForTc, act, cnt, baseBranchForTc);
- key.setCheckAllLogs(checkAllLogs);
- final ICredentialsProv prov = ICredentialsProv.get(req);
+ public TestFailuresSummary getPrFailsWithSyncMode(
+ @QueryParam("serverId") @Nullable String srvId,
+ @QueryParam("suiteId") @Nonnull String suiteId,
+ @QueryParam("branchForTc") @Nonnull String branchForTc,
+ @QueryParam("action") @Nonnull String act,
+ @QueryParam("count") @Nullable Integer cnt,
+ @QueryParam("baseBranchForTc") @Nullable String baseBranchForTc,
+ @QueryParam("checkAllLogs") @Nullable Boolean checkAllLogs,
+ SyncMode mode) {
+ final ICredentialsProv creds = ICredentialsProv.get(req);
+ final Injector injector = CtxListener.getInjector(ctx);
+ final PrChainsProcessor prChainsProcessor = injector.getInstance(PrChainsProcessor.class);
- return updater.get(CURRENT_PR_FAILURES, prov, key,
- (k) -> getPrFailuresNoCache(k.getServerId(), k.getSuiteId(), k.getBranchForTc(), k.getAction(), k.getCount(), baseBranchForTc, k.getCheckAllLogs()),
- true);
+ return prChainsProcessor.getTestFailuresSummary(creds, srvId, suiteId, branchForTc, act, cnt, baseBranchForTc,
+ checkAllLogs,
+ mode);
}
/**
@@ -103,8 +112,8 @@ public class GetPrTestFailures {
* @param baseBranchForTc Base branch name in TC identification.
*/
@GET
- @Path("resultsNoCache")
- @NotNull public TestFailuresSummary getPrFailuresNoCache(
+ @Path("results")
+ @NotNull public TestFailuresSummary getPrFailures (
@Nullable @QueryParam("serverId") String srvId,
@Nonnull @QueryParam("suiteId") String suiteId,
@Nonnull @QueryParam("branchForTc") String branchForTc,
@@ -113,12 +122,7 @@ public class GetPrTestFailures {
@Nullable @QueryParam("baseBranchForTc") String baseBranchForTc,
@Nullable @QueryParam("checkAllLogs") Boolean checkAllLogs) {
- final ICredentialsProv creds = ICredentialsProv.get(req);
- final Injector injector = CtxListener.getInjector(ctx);
- final PrChainsProcessor prChainsProcessor = injector.getInstance(PrChainsProcessor.class);
-
- return prChainsProcessor.getTestFailuresSummary(creds, srvId, suiteId, branchForTc, act, cnt, baseBranchForTc,
- checkAllLogs);
+ return getPrFailsWithSyncMode(srvId, suiteId, branchForTc, act, cnt, baseBranchForTc, checkAllLogs, SyncMode.RELOAD_QUEUED);
}
@POST
diff --git a/ignite-tc-helper-web/src/main/webapp/pr.html b/ignite-tc-helper-web/src/main/webapp/pr.html
index 6f667ca..8258ce7 100644
--- a/ignite-tc-helper-web/src/main/webapp/pr.html
+++ b/ignite-tc-helper-web/src/main/webapp/pr.html
@@ -13,6 +13,8 @@
</head>
<body>
<script>
+ var g_shownDataHashCodeHex = "";
+
$(document).ready(function() {
$.getScript("js/testfails-2.1.js", function(data, textStatus, jqxhr){ });
@@ -90,6 +92,7 @@ function loadData() {
var curFailuresUrl = "rest/pr/results" + parmsForRest();
$("#loadStatus").html("<img src='https://www.wallies.com/filebin/images/loading_apple.gif' width=20px height=20px> Please wait. First load of PR run-all data may require significant time.");
+ setTimeout(loadPartialData, 3000);
$.ajax({
url: curFailuresUrl,
success: function(result) {
@@ -106,6 +109,23 @@ function loadData() {
});
}
+
+ function loadPartialData() {
+ var curFailuresUrl = "rest/pr/resultsNoSync" + parmsForRest();
+
+ if (g_shownDataHashCodeHex === "")
+ $.ajax({
+ url: curFailuresUrl,
+ success: function (result) {
+ if (g_shownDataHashCodeHex === "") {
+ showData(result);
+ setTimeout(loadPartialData, 3000);
+ }
+ },
+ error: showErrInLoadStatus
+ });
+ }
+
function showData(result) {
$("#divFailures").html(showChainOnServersResults(result));
}