tests/testthat/test-threads.R

test_that("parallel requests", {
  url <- httpbin$url("/delay/0.5")
  p <- curl::new_pool()
  handles <- replicate(3, curl::new_handle(url = url, http_version = 2))
  resps <- list()
  for (handle in handles) {
    curl::multi_add(
      handle,
      done = function(x) resps <<- c(resps, list(x)),
      fail = stop,
      pool = p
    )
  }
  st <- system.time(curl::multi_run(timeout = 5, pool = p))
  expect_true(st[["elapsed"]] >= 0.5)
  expect_true(st[["elapsed"]] < 1.5)
  expect_equal(resps[[1]]$status_code, 200L)
  expect_equal(resps[[2]]$status_code, 200L)
  expect_equal(resps[[3]]$status_code, 200L)
})
gaborcsardi/pressr documentation built on June 2, 2025, 2:10 a.m.