private void assertTestResults(FreeStyleBuild build) {
    TestResultAction testResultAction = build.getAction(TestResultAction.class);
    assertNotNull("no TestResultAction", testResultAction);

    TestResult result = testResultAction.getResult();
    assertNotNull("no TestResult", result);

    assertEquals("should have 1 failing test", 1, testResultAction.getFailCount());
    assertEquals("should have 1 failing test", 1, result.getFailCount());

    assertEquals("should have 132 total tests", 132, testResultAction.getTotalCount());
    assertEquals("should have 132 total tests", 132, result.getTotalCount());
  }
  private void updateCache() {
    failedTestsBySuiteName.clear();
    skippedTestsBySuiteName.clear();
    passedTestsBySuiteName.clear();
    allFailedTests.clear();
    allPassedTests.clear();
    allSkippedTests.clear();
    passCount = 0;
    failCount = 0;
    skipCount = 0;
    float durationAccum = 0.0f;

    Collection<String> suiteNames = childrenBySuiteName.keySet();
    for (String l : suiteNames) {
      TestResult testResult = childrenBySuiteName.get(l);
      testResult.setParentAction(parentAction);
      testResult.tally();
      passCount += testResult.getPassCount();
      failCount += testResult.getFailCount();
      skipCount += testResult.getSkipCount();

      durationAccum += testResult.getDuration();
      if (testResult.isPassed()) {
        storeInCache(l, passedTestsBySuiteName, testResult);
        allPassedTests.add(testResult);
      } else if (testResult.getFailCount() > 0) {
        storeInCache(l, failedTestsBySuiteName, testResult);
        allFailedTests.add(testResult);
      } else {
        storeInCache(l, skippedTestsBySuiteName, testResult);
        allSkippedTests.add(testResult);
      }
    }

    duration = durationAccum;
    totalCount = passCount + failCount + skipCount;

    cacheDirty = false;
  }