public List computeProblems()

in testDuration-server/src/main/java/org/jetbrains/teamcity/testDuration/TestsWatchdog.java [22:55]


  public List<BuildProblemData> computeProblems(@NotNull List<STestRun> currentTests, @NotNull List<SFinishedBuild> previousBuilds) {
    List<BuildProblemData> result = new ArrayList<BuildProblemData>();

    Set<Long> processedTests = new HashSet<Long>();
    for (STestRun run : currentTests) {
      TestName testName = run.getTest().getName();
      final long testNameId = run.getTest().getTestNameId();
      if (!processedTests.add(testNameId))
        continue;

      if (!mySettings.isInteresting(run))
        continue;

      int duration = run.getDuration();
      for (SFinishedBuild referenceBuild : previousBuilds) {
        Map<Long, STestRun> referenceStat = getBuildStatistics(referenceBuild);
        STestRun referenceTestRun = referenceStat.get(testNameId);
        if (referenceTestRun == null || referenceTestRun.isIgnored() || referenceTestRun.isMuted()) continue;

        int referenceDuration = referenceTestRun.getDuration();
        if (mySettings.isSlow(referenceDuration, duration)) {
          int slowdown = (int) ((duration - referenceDuration) * 100.0 / Math.max(1, referenceDuration));
          TestSlowdownInfo info = new TestSlowdownInfo(run.getTestRunId(), duration, referenceTestRun.getTestRunId(), referenceDuration, referenceBuild.getBuildId());
          result.add(BuildProblemData.createBuildProblem(String.valueOf(testNameId),
              TestDurationFailureCondition.PROBLEM_TYPE,
              "Test '" + testName.getAsString() + "' became " + slowdown + "% slower",
              info.asString()));
        }
        break;
      }
    }

    return result;
  }