void assign()

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);
      }
    }
  }