in src/main/java/jetbrains/buildServer/investigationsAutoAssigner/processing/DelayedAssignmentsProcessor.java [40:79]
public void processBuild(final FailedBuildInfo failedBuildInfo, SBuild nextBuild) {
SBuild sBuild = failedBuildInfo.getBuild();
SProject sProject = getProject(sBuild);
if (sProject == null) return;
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Start processing delayed assignments for build #" + sBuild.getBuildId() + ".");
}
HeuristicResult heuristicsResult = failedBuildInfo.getHeuristicsResult();
List<STestRun> applicableFailedTests =
requestBrokenTestsWithStats(sBuild).stream()
.filter(failedTest -> heuristicsResult.getResponsibility(failedTest) != null)
.collect(Collectors.toList());
List<String> nextBuildProblemIdentities =
((BuildEx)nextBuild).getBuildProblems()
.stream()
.map(buildProblem -> buildProblem.getBuildProblemData().getIdentity())
.collect(Collectors.toList());
List<BuildProblem> applicableProblems =
((BuildEx)sBuild).getBuildProblems()
.stream()
.filter(buildProblem -> heuristicsResult.getResponsibility(buildProblem) != null &&
nextBuildProblemIdentities.contains(buildProblem.getBuildProblemData().getIdentity()) &&
BuildProblemTypes.TC_EXIT_CODE_TYPE.equals(buildProblem.getBuildProblemData().getType()))
.collect(Collectors.toList());
logProblemsNumber(sBuild, applicableFailedTests, applicableProblems);
List<STestRun> testsForAssign = myFailedTestFilter.getStillApplicable(failedBuildInfo, sProject, applicableFailedTests);
List<BuildProblem> problemsForAssign =
myBuildProblemsFilter.getStillApplicable(failedBuildInfo, sProject, applicableProblems);
logChangedProblemsNumber(sBuild, applicableFailedTests, testsForAssign, applicableProblems, problemsForAssign);
myFailedTestAssigner.assign(heuristicsResult, sProject, sBuild, testsForAssign);
myBuildProblemsAssigner.assign(heuristicsResult, sProject, sBuild, problemsForAssign);
myAggregationLogger.logDelayedResults(sBuild, nextBuild, heuristicsResult, testsForAssign, problemsForAssign);
}