in src/main/java/jetbrains/buildServer/investigationsAutoAssigner/processing/FailedTestAssigner.java [47:90]
void assign(final HeuristicResult heuristicsResult,
final SProject sProject,
final SBuild sBuild,
final List<STestRun> sTestRuns) {
if (heuristicsResult.isEmpty()) return;
HashMap<Responsibility, List<TestName>> responsibilityToTestNames = new HashMap<>();
for (STestRun sTestRun : sTestRuns) {
Responsibility responsibility = heuristicsResult.getResponsibility(sTestRun);
responsibilityToTestNames.computeIfAbsent(responsibility, devNull -> new ArrayList<>());
List<TestName> testNameList = responsibilityToTestNames.get(responsibility);
testNameList.add(sTestRun.getTest().getName());
}
SProject targetProject =
myTargetProjectFinder.getPreferredInvestigationProject(sProject, null);
if (targetProject == null) {
targetProject = sProject;
}
Set<Responsibility> uniqueResponsibilities = responsibilityToTestNames.keySet();
for (Responsibility responsibility : uniqueResponsibilities) {
if (responsibility != null) {
List<TestName> testNameList = responsibilityToTestNames.get(responsibility);
LOGGER.info(String.format("Automatically assigning investigation(s) to %s in %s # %s because user %s",
responsibility.getUser().getUsername(),
targetProject.describe(false),
testNameList,
responsibility.getDescription()));
String linkToBuild = myWebLinks.getViewResultsUrl(sBuild);
myTestNameResponsibilityFacade.setTestNameResponsibility(
testNameList, targetProject.getProjectId(),
new ResponsibilityEntryEx(
ResponsibilityEntry.State.TAKEN, responsibility.getUser(), null, Dates.now(),
responsibility.getAssignDescription(linkToBuild), getRemoveMethod(sBuild.getBuildType()))
);
myFavoriteBuildAssigner.markAsFavorite(sBuild, (SUser)responsibility.getUser());
myStatisticsReporter.reportAssignedInvestigations(testNameList.size(), responsibility);
}
}
}