@Override
public void visit(StopMeasurementLogMessage logMessage) {
checkState(measuring);
ImmutableList<Measurement> newMeasurements = logMessage.measurements();
if (!isWarmupComplete()) {
for (Measurement measurement : newMeasurements) {
checkArgument("ns".equals(measurement.value().unit()));
elapsedWarmup = elapsedWarmup.plus(
ShortDuration.of(BigDecimal.valueOf(measurement.value().magnitude()), NANOSECONDS));
validateMeasurement(measurement);
}
} else {
if (!measuredWarmupDurationReached()) {
messages.add(String.format(
"WARNING: Warmup was interrupted because it took longer than %s of wall-clock time. "
+ "%s was spent in the benchmark method for warmup "
+ "(normal warmup duration should be %s).",
maxWarmupWallTime, elapsedWarmup, warmup));
}
if (invalidateMeasurements) {
logger.fine(String.format("Discarding %s as they were marked invalid.", newMeasurements));
} else {
this.measurements.addAll(newMeasurements);
}
}
invalidateMeasurements = false;
measuring = false;
}