/** * @param timeToConsider Time for recent attempts (discard any attempts older than this) * @param criticalityPredicate What constitutes a critical cause * @param numTimes Number of "critical causes" that must happen within the time period, to consider failed */ public CriticalCauseZoneFailureDetector(Duration timeToConsider, Predicate<? super Throwable> criticalityPredicate, int numTimes) { this.timeToConsider = timeToConsider.toMilliseconds(); this.criticalityPredicate = criticalityPredicate; this.numTimes = numTimes; }
public ProportionalZoneFailureDetector(int minDatapoints, Duration timeToConsider, double maxProportionFailures, Ticker ticker) { super(ticker); this.minDatapoints = minDatapoints; this.timeToConsider = timeToConsider.toMilliseconds(); this.maxProportionFailures = maxProportionFailures; }
@Override public boolean equals(Object o) { if (!(o instanceof Duration)) return false; return toMilliseconds() == ((Duration)o).toMilliseconds(); }
/** * @see #every(long, TimeUnit) */ public Repeater every(Duration duration) { Preconditions.checkNotNull(duration, "duration must not be null"); Preconditions.checkArgument(duration.toMilliseconds()>0, "period must be positive: %s", duration); this.period = duration.toMilliseconds(); return this; }
@Override public int hashCode() { return ((Long)toMilliseconds()).hashCode(); }
/** * @see #limitTimeTo(long, TimeUnit) */ public Repeater limitTimeTo(Duration duration) { Preconditions.checkNotNull(duration, "duration must not be null"); Preconditions.checkArgument(duration.toMilliseconds() > 0, "deadline must be positive: %s", duration); this.durationLimit = duration.toMilliseconds(); return this; }
/** true iff the timer has been running for the given time */ public boolean isExpired() { return stopwatch.elapsed(TimeUnit.MILLISECONDS) > limit.toMilliseconds(); }
public This period(Duration val) { checkArgument(val.toMilliseconds() >= 0, "period must be greater than or equal to zero"); this.period = val.toMilliseconds(); return self(); }
/** * Discards out-of-date values, but keeps at least one value. */ private void pruneValues(long now) { while(timestamps.size() > 1 && timestamps.get(0) < (now - timePeriod.toMilliseconds())) { timestamps.removeFirst(); values.removeFirst(); } } }
public Builder period(Duration period) { return period(checkNotNull(period, "period").toMilliseconds(), TimeUnit.MILLISECONDS); } public Builder period(long millis) {
public Builder period(Duration duration) { return period(duration.toMilliseconds(), TimeUnit.MILLISECONDS); } public Builder period(long millis) {
public Builder period(Duration d) { return period(d.toMilliseconds(), TimeUnit.MILLISECONDS); } public Builder period(long millis) {
public void waitForServiceUp(Duration duration) { waitForServiceUp(duration.toMilliseconds(), TimeUnit.MILLISECONDS); } public void waitForServiceUp(TimeDuration duration) {
/** returns how much time is left (negative if {@link #isExpired()}) */ public Duration getDurationRemaining() { return Duration.millis(limit.toMilliseconds() - stopwatch.elapsed(TimeUnit.MILLISECONDS)); }
public Set<ObjectInstance> doesMBeanExistsEventually(final ObjectName objectName, Duration timeout) { return doesMBeanExistsEventually(objectName, timeout.toMilliseconds(), TimeUnit.MILLISECONDS); } public Set<ObjectInstance> doesMBeanExistsEventually(final ObjectName objectName, TimeDuration timeout) {
public Builder period(Duration period) { return period(period.toMilliseconds(), TimeUnit.MILLISECONDS); } public Builder period(long millis) {
public Builder period(Duration period) { return period(checkNotNull(period, "period").toMilliseconds(), TimeUnit.MILLISECONDS); } public Builder period(long millis) {
public void assertMBeanExistsEventually(ObjectName objectName, Duration timeout) { assertMBeanExistsEventually(objectName, timeout.toMilliseconds(), TimeUnit.MILLISECONDS); } public void assertMBeanExistsEventually(ObjectName objectName, TimeDuration timeout) {
public static <T> void continually(Map<String,?> flags, Supplier<? extends T> supplier, Predicate<T> predicate, String errMsg) { Duration duration = toDuration(flags.get("timeout"), Duration.ONE_SECOND); Duration period = toDuration(flags.get("period"), Duration.millis(10)); long periodMs = period.toMilliseconds(); long startTime = System.currentTimeMillis(); long expireTime = startTime+duration.toMilliseconds(); boolean first = true; while (first || System.currentTimeMillis() <= expireTime) { assertTrue(predicate.apply(supplier.get()), "supplied="+supplier.get()+"; predicate="+predicate+(errMsg!=null?"; "+errMsg:"")); if (periodMs > 0) sleep(periodMs); first = false; } }
public static void succeedsContinually(Map<String,?> flags, Callable<?> job) { Duration duration = toDuration(flags.get("timeout"), Duration.ONE_SECOND); Duration period = toDuration(flags.get("period"), Duration.millis(10)); long periodMs = period.toMilliseconds(); long startTime = System.currentTimeMillis(); long expireTime = startTime+duration.toMilliseconds(); boolean first = true; while (first || System.currentTimeMillis() <= expireTime) { try { job.call(); } catch (Exception e) { throw propagate(e); } if (periodMs > 0) sleep(periodMs); first = false; } }