From d5bdbc07fae03b67dc10de520a435101b94216c1 Mon Sep 17 00:00:00 2001 From: be-marc Date: Wed, 18 Feb 2026 12:07:38 +0100 Subject: [PATCH 1/6] fix: add redis env --- .github/workflows/no-suggest-cmd-check.yml | 1 + .github/workflows/r-cmd-check.yml | 1 + .github/workflows/revdep-check.yml | 1 + R/OptimInstanceAsync.R | 1 + tests/testthat/test_OptimizerAsynGridSearch.R | 2 -- 5 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/no-suggest-cmd-check.yml b/.github/workflows/no-suggest-cmd-check.yml index 7e420f8c2..1e8b03333 100644 --- a/.github/workflows/no-suggest-cmd-check.yml +++ b/.github/workflows/no-suggest-cmd-check.yml @@ -36,6 +36,7 @@ jobs: env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + RUSH_TEST_USE_REDIS: true strategy: fail-fast: false diff --git a/.github/workflows/r-cmd-check.yml b/.github/workflows/r-cmd-check.yml index ef7f56ced..116e89363 100644 --- a/.github/workflows/r-cmd-check.yml +++ b/.github/workflows/r-cmd-check.yml @@ -36,6 +36,7 @@ jobs: env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + RUSH_TEST_USE_REDIS: true strategy: fail-fast: false diff --git a/.github/workflows/revdep-check.yml b/.github/workflows/revdep-check.yml index d9a8df6a5..f54ce07e0 100644 --- a/.github/workflows/revdep-check.yml +++ b/.github/workflows/revdep-check.yml @@ -33,6 +33,7 @@ jobs: env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + RUSH_TEST_USE_REDIS: true strategy: fail-fast: false diff --git a/R/OptimInstanceAsync.R b/R/OptimInstanceAsync.R index 3b0df2167..560c81a0f 100644 --- a/R/OptimInstanceAsync.R +++ b/R/OptimInstanceAsync.R @@ -121,6 +121,7 @@ OptimInstanceAsync = R6Class("OptimInstanceAsync", }, .eval_queue = function() { + # trm none TRUE + TRUE / FALSE while (!self$is_terminated && self$archive$n_queued) { task = self$archive$pop_point() if (!is.null(task)) { diff --git a/tests/testthat/test_OptimizerAsynGridSearch.R b/tests/testthat/test_OptimizerAsynGridSearch.R index 74fb389dc..49526de0a 100644 --- a/tests/testthat/test_OptimizerAsynGridSearch.R +++ b/tests/testthat/test_OptimizerAsynGridSearch.R @@ -20,6 +20,4 @@ test_that("OptimizerAsyncGridSearch works", { expect_data_table(optimizer$optimize(instance), nrows = 1) expect_data_table(instance$archive$data, nrows = 100) - - expect_rush_reset(instance$rush) }) From 18c9f80dd639937b2eb8595212147db24d8ab5e2 Mon Sep 17 00:00:00 2001 From: be-marc Date: Wed, 18 Feb 2026 12:08:29 +0100 Subject: [PATCH 2/6] ... --- R/OptimInstanceAsync.R | 1 - 1 file changed, 1 deletion(-) diff --git a/R/OptimInstanceAsync.R b/R/OptimInstanceAsync.R index 560c81a0f..3b0df2167 100644 --- a/R/OptimInstanceAsync.R +++ b/R/OptimInstanceAsync.R @@ -121,7 +121,6 @@ OptimInstanceAsync = R6Class("OptimInstanceAsync", }, .eval_queue = function() { - # trm none TRUE + TRUE / FALSE while (!self$is_terminated && self$archive$n_queued) { task = self$archive$pop_point() if (!is.null(task)) { From 4bbbd5c02082b067850ce4e64f04e697976384f2 Mon Sep 17 00:00:00 2001 From: be-marc Date: Wed, 18 Feb 2026 12:53:13 +0100 Subject: [PATCH 3/6] ... --- tests/testthat/test_OptimizerAsync.R | 41 ++++++++++++++-------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/tests/testthat/test_OptimizerAsync.R b/tests/testthat/test_OptimizerAsync.R index 0cc096a23..4a1edaea0 100644 --- a/tests/testthat/test_OptimizerAsync.R +++ b/tests/testthat/test_OptimizerAsync.R @@ -1,27 +1,26 @@ skip_if_not_installed("rush") skip_if_no_redis() -test_that("OptimizerAsync starts local workers", { - rush = start_rush(n_workers = 1, worker_type = "local") # FIXME: change to "processx" after rush 1.0.0 is released - on.exit({ - rush$reset() - walk(rush$processes_processx, function(p) p$kill()) - }) - - instance = oi_async( - objective = OBJ_2D, - search_space = PS_2D, - terminator = trm("evals", n_evals = 50L), - rush = rush - ) - - optimizer = opt("async_random_search") - optimizer$optimize(instance) - - expect_data_table(instance$rush$worker_info, nrows = 1) - expect_list(instance$rush$processes_processx, len = 1) - -}) +# test_that("OptimizerAsync starts local workers", { +# rush = start_rush(n_workers = 1, worker_type = "local") # FIXME: change to "processx" after rush 1.0.0 is released +# on.exit({ +# rush$reset() +# walk(rush$processes_processx, function(p) p$kill()) +# }) + +# instance = oi_async( +# objective = OBJ_2D, +# search_space = PS_2D, +# terminator = trm("evals", n_evals = 50L), +# rush = rush +# ) + +# optimizer = opt("async_random_search") +# optimizer$optimize(instance) + +# expect_data_table(instance$rush$worker_info, nrows = 1) +# expect_list(instance$rush$processes_processx, len = 1) +# }) test_that("OptimizerAsync starts remote workers", { rush = start_rush(n_worker = 1, worker_type = "remote") # FIXME: change to "mirai" after rush 1.0.0 is released From e5ac5d61590f346dd3695b4183bd633bda76634b Mon Sep 17 00:00:00 2001 From: be-marc Date: Wed, 18 Feb 2026 12:55:35 +0100 Subject: [PATCH 4/6] ... --- tests/testthat/test_OptimizerAsync.R | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/tests/testthat/test_OptimizerAsync.R b/tests/testthat/test_OptimizerAsync.R index 4a1edaea0..95640435b 100644 --- a/tests/testthat/test_OptimizerAsync.R +++ b/tests/testthat/test_OptimizerAsync.R @@ -1,28 +1,7 @@ skip_if_not_installed("rush") skip_if_no_redis() -# test_that("OptimizerAsync starts local workers", { -# rush = start_rush(n_workers = 1, worker_type = "local") # FIXME: change to "processx" after rush 1.0.0 is released -# on.exit({ -# rush$reset() -# walk(rush$processes_processx, function(p) p$kill()) -# }) - -# instance = oi_async( -# objective = OBJ_2D, -# search_space = PS_2D, -# terminator = trm("evals", n_evals = 50L), -# rush = rush -# ) - -# optimizer = opt("async_random_search") -# optimizer$optimize(instance) - -# expect_data_table(instance$rush$worker_info, nrows = 1) -# expect_list(instance$rush$processes_processx, len = 1) -# }) - -test_that("OptimizerAsync starts remote workers", { +test_that("OptimizerAsync starts workers", { rush = start_rush(n_worker = 1, worker_type = "remote") # FIXME: change to "mirai" after rush 1.0.0 is released on.exit({ rush$reset() From 770c9bc56f645c01ce0e3bc9c39cca6ed58d7c28 Mon Sep 17 00:00:00 2001 From: be-marc Date: Wed, 18 Feb 2026 13:16:00 +0100 Subject: [PATCH 5/6] ... --- tests/testthat/test_OptimInstanceAsyncSingleCrit.R | 5 +++-- tests/testthat/test_OptimizerAsync.R | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/testthat/test_OptimInstanceAsyncSingleCrit.R b/tests/testthat/test_OptimInstanceAsyncSingleCrit.R index 774bdcf60..493e6feaf 100644 --- a/tests/testthat/test_OptimInstanceAsyncSingleCrit.R +++ b/tests/testthat/test_OptimInstanceAsyncSingleCrit.R @@ -44,10 +44,11 @@ test_that("context is initialized correctly", { }) test_that("point evaluation works", { - rush = start_rush() + # use worker to make its functions available + # FIXME: remove this after rush 1.0.0 is released + rush = start_rush_worker() on.exit({ rush$reset() - mirai::daemons(0) }) instance = oi_async( diff --git a/tests/testthat/test_OptimizerAsync.R b/tests/testthat/test_OptimizerAsync.R index 95640435b..ceb3980f3 100644 --- a/tests/testthat/test_OptimizerAsync.R +++ b/tests/testthat/test_OptimizerAsync.R @@ -2,7 +2,7 @@ skip_if_not_installed("rush") skip_if_no_redis() test_that("OptimizerAsync starts workers", { - rush = start_rush(n_worker = 1, worker_type = "remote") # FIXME: change to "mirai" after rush 1.0.0 is released + rush = start_rush(n_workers = 1, worker_type = "remote") # FIXME: change to "mirai" after rush 1.0.0 is released on.exit({ rush$reset() mirai::daemons(0) From 6bb8a18acffd3193da0c3e042473c4cbec694750 Mon Sep 17 00:00:00 2001 From: be-marc Date: Wed, 18 Feb 2026 14:18:22 +0100 Subject: [PATCH 6/6] ... --- tests/testthat/helper_rush.R | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/testthat/helper_rush.R b/tests/testthat/helper_rush.R index f3e93df7f..b9ef56833 100644 --- a/tests/testthat/helper_rush.R +++ b/tests/testthat/helper_rush.R @@ -1,6 +1,7 @@ # soon replaced by import from rush package skip_if_no_redis = function() { testthat::skip_on_cran() + testthat::skip_if_not_installed("redux") if (identical(Sys.getenv("RUSH_TEST_USE_REDIS"), "true") && redux::redis_available()) { return(invisible())