示例#1
0
  /*
   * (non-Javadoc)
   *
   * @see
   * net.grinder.console.model.SampleListener#update(net.grinder.statistics
   * .StatisticsSet, net.grinder.statistics.StatisticsSet)
   */
  @Override
  public void update(
      final StatisticsSet intervalStatistics, final StatisticsSet cumulativeStatistics) {
    try {
      if (!capture) {
        return;
      }
      samplingCount++;
      long currentPeriod = cumulativeStatistics.getValue(getSampleModel().getPeriodIndex());
      setTpsValue(sampleModel.getTPSExpression().getDoubleValue(intervalStatistics));
      checkTooLowTps(getTpsValues());
      updateStatistics(intervalStatistics, cumulativeStatistics);

      writeIntervalCsvData(intervalStatistics);
      int interval = getSampleModel().getSampleInterval();
      long gap = 1;
      if (samplingCount == 1) {
        lastSamplingPeriod = currentPeriod;
      } else {
        lastSamplingPeriod = lastSamplingPeriod + interval;
        gap = ((currentPeriod - lastSamplingPeriod) / interval);
      }
      // Adjust sampling delay.. run write data multiple times... when it
      // takes longer than 1
      // sec.

      samplingLifeCycleListener.apply(
          new Informer<SamplingLifeCycleListener>() {
            @Override
            public void inform(SamplingLifeCycleListener listener) {
              listener.onSampling(getReportPath(), intervalStatistics, cumulativeStatistics);
            }
          });
      for (int i = 0; i < (gap + 1); i++) {
        final boolean lastCall = (samplingCount == 1 && i == 0) || (samplingCount != 1 && i == gap);
        writeIntervalSummaryData(intervalStatistics, lastCall);
        if (interval >= (MIN_SAMPLING_INTERVAL_TO_ACTIVATE_TPS_PER_TEST)) {
          writeIntervalSummaryDataPerTest(intervalStatisticMapPerTest, lastCall);
        }
        samplingLifeCycleFollowupListener.apply(
            new Informer<SamplingLifeCycleFollowUpListener>() {
              @Override
              public void inform(SamplingLifeCycleFollowUpListener listener) {
                listener.onSampling(
                    getReportPath(), intervalStatistics, cumulativeStatistics, lastCall);
              }
            });
      }
      checkTooManyError(cumulativeStatistics);
      lastSamplingPeriod = lastSamplingPeriod + (interval * gap);
    } catch (RuntimeException e) {
      LOGGER.error("Error occurred while updating the statistics : {}", e.getMessage());
      LOGGER.debug("Details : ", e);
      throw e;
    }
  }