in ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java [707:762]
public ContributionCheckStatus contributionStatus(String srvId, String suiteId, List<BuildRefCompacted> builds,
ITeamcityIgnited teamcity, IGitHubConnIgnited ghConn, String prId) {
ContributionCheckStatus status = new ContributionCheckStatus(suiteId);
List<BuildRefCompacted> finishedOrCancelled = builds.stream()
.filter(t -> t.isFinished(compactor)).collect(Collectors.toList());
if (!finishedOrCancelled.isEmpty()) {
BuildRefCompacted buildRefCompacted = finishedOrCancelled.get(0);
status.suiteIsFinished = !buildRefCompacted.isCancelled(compactor);
status.branchWithFinishedSuite = buildRefCompacted.branchName(compactor);
FatBuildCompacted fatBuild = teamcity.getFatBuild(buildRefCompacted.id(), SyncMode.NONE);
String commit = teamcity.getLatestCommitVersion(fatBuild);
if (!Strings.isNullOrEmpty(commit) && commit.length() > PullRequest.INCLUDE_SHORT_VER) {
status.finishedSuiteCommit
= commit.substring(0, PullRequest.INCLUDE_SHORT_VER).toLowerCase();
}
}
else {
status.branchWithFinishedSuite = null;
status.finishedSuiteCommit = null;
status.suiteIsFinished = false;
}
if (status.branchWithFinishedSuite != null)
status.resolvedBranch = status.branchWithFinishedSuite;
//todo take into account running/queued
else
status.resolvedBranch = !builds.isEmpty() ? builds.get(0).branchName(compactor) : branchForTcDefault(prId, ghConn);
String observationsStatus = buildObserverProvider.get().getObservationStatus(new ContributionKey(srvId, status.resolvedBranch));
status.observationsStatus = Strings.emptyToNull(observationsStatus);
List<BuildRefCompacted> queuedSuites = builds.stream()
.filter(t -> t.isNotCancelled(compactor))
.filter(t -> t.isQueued(compactor))
.collect(Collectors.toList());
List<BuildRefCompacted> runningSuites = builds.stream()
.filter(t -> t.isNotCancelled(compactor))
.filter(t -> t.isRunning(compactor))
.collect(Collectors.toList());
status.queuedBuilds = queuedSuites.size();
status.runningBuilds = runningSuites.size();
status.webLinksQueuedSuites = Stream.concat(queuedSuites.stream(), runningSuites.stream())
.map(ref -> getWebLinkToQueued(teamcity, ref)).collect(Collectors.toList());
return status;
}