tests/pbs/persistent.R

test_that("PBS persistent workers", {
  x <- crew_controller_pbs(
    name = "123",
    workers = 1L,
    seconds_idle = 300,
    options_cluster = crew_options_pbs(
      script_lines = paste0("module load R/", getRversion())
    )
  )
  on.exit(x$terminate())
  x$start()
  n <- 200
  for (index in seq_len(n)) {
    name <- paste0("task_", index)
    x$push(name = name, command = as.character(Sys.info()["nodename"]))
    message(paste("push", name))
  }
  results <- list()
  while (length(results) < n) {
    out <- x$pop()
    if (!is.null(out)) {
      results[[length(results) + 1L]] <- out
      message(paste("done", out$name, out$result[[1]]))
    }
  }
  results <- tibble::as_tibble(do.call(rbind, results))
  results$result <- as.character(results$result)
  expect_equal(length(unique(results$result)), 1L)
  expect_false(anyNA(results$result))
  expect_false(any(results$result == as.character(Sys.info()["nodename"])))
  expect_equal(results$error, rep(NA_character_, n))
  expect_equal(
    sort(paste0("task_", seq_len(n))),
    sort(unique(results$name))
  )
})

Try the crew.cluster package in your browser

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

crew.cluster documentation built on April 15, 2025, 1:34 a.m.