package org.stagemonitor.core.metrics; import com.codahale.metrics.Meter; import com.codahale.metrics.Timer; public class MetricUtils { private MetricUtils() { } public static boolean isFasterThanXPercentOfAllRequests(long executionTimeNanos, double percentileLimit, Timer timer) { boolean faster = true; if (percentileLimit > 0) { if (percentileLimit >= 1) { faster = false; } else { final double percentile = timer.getSnapshot().getValue(percentileLimit); if (executionTimeNanos < percentile) { faster = false; } } } return faster; } public static boolean isRateLimitExceeded(double maxRate, Meter meter) { return maxRate < 1000000 && (maxRate <= 0 || 60 * meter.getOneMinuteRate() > maxRate); } }