tar_test("backoff actually slows down and then resets", { test_backoff <- function(backoff) { expect_equal(backoff$index, 0L) begin <- unname(proc.time()["elapsed"]) for (index in seq_len(30L)) { bound <- round(backoff$bound(), 4L) backoff$wait() end <- unname(proc.time()["elapsed"]) elapsed <- end - begin begin <- end msg <- paste0( "bound: ", bound, " | elapsed: ", round(elapsed, 4), "\n" ) cat(msg) } } backoff <- backoff_init(min = 0.001, max = 2, rate = 1.5) # Should slow down exponentially. test_backoff(backoff) # Reset the backoff. backoff$reset() cat("\n") # Should have reset the slowdown. test_backoff(backoff) }) tar_test("backoff interval is uniformly distributed", { set.seed(1) backoff <- backoff_init(min = 1, max = 10, rate = 2) map(seq_len(1e3), ~backoff$increment()) out <- map_dbl(seq_len(1e5), ~backoff$interval()) # uniform between 1 and 10 expect_equal(min(out), 1, tolerance = 1e-3) expect_equal(max(out), 10, tolerance = 1e-3) hist(out) })