예제 #1
0
  public void summarize() {
    Iterator<OperationResult> iterator = getSubresults().iterator();
    while (iterator.hasNext()) {
      OperationResult subresult = iterator.next();
      if (subresult.getCount() > 1) {
        // Already summarized
        continue;
      }
      if (subresult.isError() && summarizeErrors) {
        // go on
      } else if (subresult.isPartialError() && summarizePartialErrors) {
        // go on
      } else if (subresult.isSuccess() && summarizeSuccesses) {
        // go on
      } else {
        continue;
      }
      OperationResult similar = findSimilarSubresult(subresult);
      if (similar == null) {
        // Nothing to summarize to
        continue;
      }
      merge(similar, subresult);
      iterator.remove();
    }

    // subresult stripping if necessary
    // we strip subresults that have same operation name and status, if there are more of them than
    // threshold
    Map<OperationStatusKey, Integer> counter = new HashMap<OperationStatusKey, Integer>();
    iterator = getSubresults().iterator();
    while (iterator.hasNext()) {
      OperationResult sr = iterator.next();
      OperationStatusKey key = new OperationStatusKey(sr.getOperation(), sr.getStatus());
      if (counter.containsKey(key)) {
        int count = counter.get(key);
        if (count > SUBRESULT_STRIP_THRESHOLD) {
          iterator.remove();
        } else {
          counter.put(key, ++count);
        }
      } else {
        counter.put(key, 1);
      }
    }
  }