crew_test("abstract launcher class", {
skip_on_cran()
out <- crew_launcher(reset_options = -1)
expect_crew_error(out$validate())
})
crew_test("validate a started launcher", {
skip_on_cran()
skip_on_os("windows")
out <- crew_launcher(processes = 1L)
out$start(url = "url", profile = "profile")
on.exit(out$terminate())
expect_s3_class(out$async, "crew_class_async")
expect_s3_class(out$throttle, "crew_class_throttle")
expect_silent(out$async$validate())
expect_silent(out$throttle$validate())
expect_silent(out$validate())
})
crew_test("active bindings for covr", {
skip_on_cran()
skip_on_os("windows")
out <- crew_launcher(processes = 1L, r_arguments = "--vanilla")
expect_true(is.character(out$name))
expect_equal(out$workers, 1L)
expect_true(is.numeric(out$seconds_interval))
expect_true(is.numeric(out$seconds_timeout))
expect_true(is.numeric(out$seconds_launch))
expect_true(is.numeric(out$seconds_idle))
expect_true(is.numeric(out$seconds_wall))
expect_true(is.numeric(out$tasks_max))
expect_true(is.numeric(out$tasks_timers))
expect_true(is.logical(out$reset_globals))
expect_true(is.logical(out$reset_packages))
expect_true(is.logical(out$reset_options))
expect_true(is.logical(out$garbage_collection))
expect_true(inherits(out$tls, "crew_class_tls"))
expect_equal(out$processes, 1L)
expect_equal(out$r_arguments, "--vanilla")
expect_s3_class(
out$options_metrics,
c("crew_options_metrics", "crew_options")
)
expect_null(out$url)
expect_null(out$profile)
expect_true(is.data.frame(out$instances))
expect_null(out$id, 0L)
expect_null(out$async)
expect_null(out$throttle)
})
crew_test("preemptive async termination for covr", {
skip_on_cran()
skip_on_os("windows")
out <- crew_launcher(processes = 1L)
private <- crew_private(out)
private$.async <- crew_async()
on.exit({
private$.async$terminate()
out$terminate()
})
out$start(url = "url", profile = "profile")
expect_true(TRUE)
})
crew_test("default launch_launcher() method", {
skip_on_cran()
launcher <- crew_class_launcher$new(seconds_interval = 0.5)
out <- launcher$launch_worker(
call = "a",
name = "b",
launcher = "c",
worker = 57L
)
expect_equal(out$abstract, TRUE)
})
crew_test("default terminate_launcher() method", {
launcher <- crew_class_launcher$new(seconds_interval = 0.5)
expect_equal(launcher$terminate_worker(handle = crew_null)$abstract, TRUE)
})
crew_test("launcher settings", {
launcher <- crew_class_launcher$new(
name = "my_launcher_name",
seconds_interval = 0.5,
seconds_launch = 1,
seconds_idle = 2,
seconds_wall = 3,
tasks_max = 7,
tasks_timers = 8,
reset_globals = TRUE,
reset_packages = TRUE,
reset_options = TRUE,
garbage_collection = TRUE,
tls = crew_tls()
)
launcher$start(url = "url", profile = "profile")
on.exit(launcher$terminate())
expect_equal(launcher$name, "my_launcher_name")
settings <- launcher$settings()
expect_equal(settings$url, "url")
expect_equal(settings$maxtasks, 7)
expect_equal(settings$idletime, 2000)
expect_equal(settings$walltime, 3000)
expect_equal(settings$timerstart, 8)
expect_equal(settings$cleanup, 15L)
expect_equal(settings$id, 1L)
})
crew_test("launcher alternative cleanup", {
launcher <- crew_class_launcher$new(
name = "my_launcher_name",
seconds_interval = 0.5,
seconds_launch = 1,
seconds_idle = 2,
seconds_wall = 3,
tasks_max = 7,
tasks_timers = 8,
reset_globals = FALSE,
reset_packages = TRUE,
reset_options = FALSE,
garbage_collection = TRUE,
tls = crew_tls()
)
launcher$start(url = "url", profile = "profile")
on.exit(launcher$terminate())
settings <- launcher$settings()
expect_equal(settings$cleanup, 10L)
})
crew_test("launcher alternative cleanup 2", {
launcher <- crew_class_launcher$new(
name = "my_launcher_name",
seconds_interval = 0.5,
seconds_launch = 1,
seconds_idle = 2,
seconds_wall = 3,
tasks_max = 7,
tasks_timers = 8,
reset_globals = TRUE,
reset_packages = FALSE,
reset_options = TRUE,
garbage_collection = FALSE,
tls = crew_tls()
)
launcher$start(url = "url", profile = "profile")
on.exit(launcher$terminate())
settings <- launcher$settings()
expect_equal(settings$cleanup, 5L)
})
crew_test("launcher alternative cleanup 3", {
launcher <- crew_class_launcher$new(
name = "my_launcher_name",
seconds_interval = 0.5,
seconds_launch = 1,
seconds_idle = 2,
seconds_wall = 3,
tasks_max = 7,
tasks_timers = 8,
reset_globals = FALSE,
reset_packages = FALSE,
reset_options = FALSE,
garbage_collection = FALSE,
tls = crew_tls()
)
launcher$start(url = "url", profile = "profile")
on.exit(launcher$terminate())
settings <- launcher$settings()
expect_equal(settings$cleanup, 0L)
})
crew_test("launcher call", {
skip_on_cran()
skip_on_os("windows")
launcher <- crew_class_launcher$new(
name = "my_launcher_name",
seconds_interval = 0.5,
seconds_launch = 1,
seconds_idle = 0.001,
seconds_wall = 3,
tasks_max = 7,
tasks_timers = 8,
reset_globals = TRUE,
reset_packages = FALSE,
reset_options = FALSE,
garbage_collection = FALSE,
tls = crew_tls()
)
launcher$start(url = "url", profile = "profile")
on.exit(launcher$terminate())
out <- launcher$call(worker = "cba033e58")
expect_true(is.character(out))
expect_true(!anyNA(out))
expect_equal(length(out), 1L)
expect_true(all(nzchar(out)))
expect_true(grepl(pattern = "^crew::crew_worker\\(", x = out))
})
crew_test("launcher update() with no new events", {
skip_on_cran()
instances <- expand.grid(
submitted = FALSE,
online = c(TRUE, FALSE),
discovered = c(TRUE, FALSE),
start = c(Inf, -Inf)
)
instances$id <- seq_len(nrow(instances))
instances$handle <- replicate(nrow(instances), list(), simplify = FALSE)
instances <- instances[, colnames(launcher_empty_instances)]
instances <- tibble::as_tibble(instances)
launcher <- crew_class_launcher$new(
seconds_launch = 9999,
seconds_interval = 1
)
launcher$start(url = "url", profile = "profile")
on.exit(launcher$terminate())
private <- crew_private(launcher)
private$.instances <- instances
launcher$update(status = list())
instances$submitted <- TRUE
names <- setdiff(colnames(launcher_empty_instances), "handle")
expect_equal(
launcher$instances[, names],
instances[c(1L, 3L, 4L, 5L, 7L), names]
)
expect_true(all(launcher$instances$submitted))
})
crew_test("launcher update() with connects", {
skip_on_cran()
instances <- expand.grid(
submitted = FALSE,
online = c(FALSE, FALSE),
discovered = c(FALSE, FALSE),
start = c(Inf, Inf)
)
instances$id <- rev(seq_len(nrow(instances)) + 100L)
instances$handle <- replicate(nrow(instances), list(), simplify = FALSE)
instances <- instances[, colnames(launcher_empty_instances)]
instances <- tibble::as_tibble(instances)
launcher <- crew_class_launcher$new(
seconds_launch = 9999,
seconds_interval = 1
)
launcher$start(url = "url", profile = "profile")
on.exit(launcher$terminate())
private <- crew_private(launcher)
private$.instances <- instances
launcher$update(status = list(events = c(102L, 103L, 107L)))
expect_equal(
launcher$instances$online,
instances$id %in% c(102L, 103L, 107L)
)
expect_equal(
launcher$instances$discovered,
instances$id %in% c(102L, 103L, 107L)
)
expect_true(all(launcher$instances$submitted))
})
crew_test("launcher update() with connects and disconnects", {
skip_on_cran()
set.seed(0L)
instances <- expand.grid(
submitted = FALSE,
online = c(FALSE, FALSE),
discovered = c(FALSE, FALSE),
start = c(Inf, Inf)
)
instances$id <- sample(seq_len(nrow(instances)))
instances$handle <- replicate(nrow(instances), list(), simplify = FALSE)
instances <- instances[, colnames(launcher_empty_instances)]
instances <- tibble::as_tibble(instances)
launcher <- crew_class_launcher$new(
seconds_launch = 9999,
seconds_interval = 1
)
launcher$start(url = "url", profile = "profile")
on.exit(launcher$terminate())
private <- crew_private(launcher)
private$.instances <- instances
launcher$update(status = list(events = c(2L, 3L, 7L, -7L)))
expect_equal(launcher$instances$id, setdiff(instances$id, 7L))
expect_equal(
launcher$instances$online,
launcher$instances$id %in% c(2L, 3L)
)
expect_equal(
launcher$instances$discovered,
launcher$instances$id %in% c(2L, 3L)
)
expect_true(all(launcher$instances$submitted))
})
crew_test("launcher update() with just disconnects", {
skip_on_cran()
set.seed(0L)
instances <- expand.grid(
submitted = FALSE,
online = c(TRUE, TRUE),
discovered = c(TRUE, TRUE),
start = c(Inf, Inf)
)
instances$id <- sample(seq_len(nrow(instances)))
instances$handle <- replicate(nrow(instances), list(), simplify = FALSE)
instances <- instances[, colnames(launcher_empty_instances)]
instances <- tibble::as_tibble(instances)
launcher <- crew_class_launcher$new(
seconds_launch = 9999,
seconds_interval = 1
)
launcher$start(url = "url", profile = "profile")
on.exit(launcher$terminate())
private <- crew_private(launcher)
private$.instances <- instances
launcher$update(status = list(events = c(-4L, -6L)))
expect_equal(launcher$instances$id, setdiff(instances$id, c(4L, 6L)))
expect_equal(launcher$instances$online, rep(TRUE, 6L))
expect_equal(launcher$instances$discovered, rep(TRUE, 6L))
expect_true(all(launcher$instances$submitted))
})
crew_test("deprecate seconds_exit", {
suppressWarnings(crew_launcher(seconds_exit = 1))
expect_true(TRUE)
})
crew_test("deprecated crashes() method", {
x <- crew_launcher_local()
expect_equal(x$crashes(index = 1L), 1L)
})
crew_test("deprecated set_name() method", {
x <- crew_launcher_local(name = "x")
x$set_name(name = "y")
expect_equal(x$name, "y")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.