Nothing
## Load namespace already here; it'll set some options based on
## environment variables
loadNamespace("future")
## Record original state
ovars <- ls()
oenvs <- oenvs0 <- Sys.getenv()
oopts0 <- options()
covr_testing <- ("covr" %in% loadedNamespaces())
on_solaris <- grepl("^solaris", R.version$os)
on_macos <- grepl("^darwin", R.version$os)
on_githubactions <- as.logical(Sys.getenv("GITHUB_ACTIONS", "FALSE"))
## Default options
oopts <- options(
warn = 1L,
mc.cores = 2L,
future.debug = TRUE,
## Reset the following during testing in case
## they are set on the test system
future.availableCores.system = NULL,
future.availableCores.fallback = NULL
)
## Comment: The below should be set automatically whenever the future package
## is loaded and 'R CMD check' runs. The below is added in case R is changed
## in the future and we fail to detect 'R CMD check'.
Sys.setenv(R_PARALLELLY_MAKENODEPSOCK_CONNECTTIMEOUT = 2 * 60)
Sys.setenv(R_PARALLELLY_MAKENODEPSOCK_TIMEOUT = 2 * 60)
Sys.setenv(R_PARALLELLY_MAKENODEPSOCK_SESSIONINFO_PKGS = TRUE)
Sys.setenv(R_FUTURE_WAIT_INTERVAL = 0.01) ## 0.01s (instead of default 0.2s)
## Label PSOCK cluster workers (to help troubleshooting)
test_script <- grep("[.]R$", commandArgs(), value = TRUE)[1]
if (is.na(test_script)) test_script <- "UNKNOWN"
worker_label <- sprintf("future/tests/%s:%s:%s:%s", test_script, Sys.info()[["nodename"]], Sys.info()[["user"]], Sys.getpid())
Sys.setenv(R_PARALLELLY_MAKENODEPSOCK_RSCRIPT_LABEL = worker_label)
## Reset the following during testing in case
## they are set on the test system
oenvs2 <- Sys.unsetenv(c(
"R_PARALLELLY_AVAILABLECORES_SYSTEM",
"R_PARALLELLY_AVAILABLECORES_FALLBACK",
## SGE
"NSLOTS", "PE_HOSTFILE",
## Slurm
"SLURM_CPUS_PER_TASK",
## TORQUE / PBS
"NCPUS", "PBS_NUM_PPN", "PBS_NODEFILE", "PBS_NP", "PBS_NUM_NODES"
))
oplan <- future::plan()
## Use sequential futures by default
future::plan("sequential")
fullTest <- (Sys.getenv("_R_CHECK_FULL_") != "")
isWin32 <- (.Platform$OS.type == "windows" && .Platform$r_arch == "i386")
## Private future functions
.onLoad <- future:::.onLoad
.onAttach <- future:::.onAttach
asIEC <- future:::asIEC
ClusterRegistry <- future:::ClusterRegistry
constant <- future:::constant
FutureRegistry <- future:::FutureRegistry
gassign <- future:::gassign
get_future <- future:::get_future
geval <- future:::geval
grmall <- future:::grmall
hpaste <- future:::hpaste
importParallel <- future:::importParallel
mdebug <- future:::mdebug
mdebugf <- future:::mdebugf
parseCmdArgs <- future:::parseCmdArgs
requestCore <- future:::requestCore
requestNode <- future:::requestNode
requirePackages <- future:::requirePackages
tweakExpression <- future:::tweakExpression
whichIndex <- future:::whichIndex
isFALSE <- future:::isFALSE
isNA <- future:::isNA
supports_omp_threads <- future:::supports_omp_threads
get_random_seed <- future:::get_random_seed
set_random_seed <- future:::set_random_seed
next_random_seed <- future:::next_random_seed
as_lecyer_cmrg_seed <- future:::as_lecyer_cmrg_seed
is_lecyer_cmrg_seed <- future:::is_lecyer_cmrg_seed
## Local functions for test scripts
printf <- function(...) cat(sprintf(...))
mstr <- function(...) message(paste(capture.output(str(...)), collapse = "\n"))
attachLocally <- function(x, envir = parent.frame()) {
for (name in names(x)) {
assign(name, value = x[[name]], envir = envir)
}
}
supportedStrategies <- function(cores = NA_integer_, excl = "cluster", ...) {
strategies <- future:::supportedStrategies(...)
strategies <- setdiff(strategies, excl)
if (!is.na(cores)) {
if (cores == 1L) {
strategies <- setdiff(strategies, c("multicore", "multisession"))
} else if (cores > 1L) {
strategies <- setdiff(strategies, "sequential")
}
}
strategies
}
availCores <- min(2L, future::availableCores())
## WORKAROUND: capture.output() gained argument 'split' in R 3.3.0
if (getRversion() >= "3.3.0") {
capture.output <- utils::capture.output
} else {
capture.output <- function(..., split = FALSE) utils::capture.output(...)
}
recordConditions <- function(expr, ..., parse = TRUE) {
conditions <- list()
withCallingHandlers(expr, condition = function(c) {
attr(c, "received") <- Sys.time()
conditions[[length(conditions) + 1L]] <<- c
})
conditions
}
recordRelay <- function(...) {
stdout <- capture.output(conditions <- recordConditions(...), split = TRUE)
if (length(stdout) > 0) stdout <- paste0(stdout, "\n")
msgs <- sapply(conditions, FUN = conditionMessage)
list(stdout = stdout, msgs = msgs)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.