tests/testthat/test-req-throttle.R

test_that("first request isn't throttled", {
  skip_on_cran()
  throttle_reset()

  req <- request_test() %>% req_throttle(50 / 1)
  expect_equal(throttle_delay(req), 0)
  expect_true(throttle_delay(req) > 0)
})

test_that("throttling causes expected average request rate", {
  skip_on_cran()
  throttle_reset()

  nps <- 20
  req <- request_test() %>% req_throttle(nps)
  times <- replicate(20, bench::system_time(req_perform(req)))["real", ]
  trimmed <- mean(times, trim = 0.2)

  expect_equal(trimmed, 1/nps, tolerance = 0.1)
})

test_that("realm defaults to hostname but can be overridden", {
  throttle_reset()
  expect_equal(the$throttle, list())

  request_test() %>% req_throttle(100 / 1) %>% throttle_delay()
  expect_named(the$throttle, "127.0.0.1")

  throttle_reset()
  request_test() %>% req_throttle(100 / 1, "custom") %>% throttle_delay()
  expect_named(the$throttle, "custom")
})

Try the httr2 package in your browser

Any scripts or data that you put into this service are public.

httr2 documentation built on Nov. 14, 2023, 5:08 p.m.