On Mon, Feb 6, 2017 at 12:41 AM, Gábor Csárdi <csardi.ga...@gmail.com> wrote: > I don't think it is specific for testthat. R CMD check sets R_TESTS when it > runs the tests, so the separate R process it starts can have some special > startup options. > > The problem happens if you start another R process from your R test, and > then R_TESTS confuses this process. (I am not sure how exactly.)
I wasn't aware of R_TESTS. Looking at the R source code, if set, will cause the base package to source that file _before_ and .Rprofile scripts; it basically calls source(Sys.getenv("R_TESTS")). Next, R CMD check runs each of the test script using R_TESTS=startup.Rs, where startup.Rs: file.copy(file.path(R.home("share"), "R", "tests-startup.R"), "startup.Rs") if (use_gct) cat("gctorture(TRUE)" , file = "startup.Rs", append = TRUE) Looking at the tests-startup.R file that comes with my R 3.3.2 on Ubuntu 16.04, it seems pretty harmless: ## A custom startup file for tests ## Run as if a system Rprofile, so no packages, no assignments options(useFancyQuotes = FALSE) So, to me it's not clear how this could make a difference in Patrick case. By disabling this, i.e. Sys.setenv(R_TESTS=""), I don't see how it affects running parallel+foreach+doParallel. Maybe because one of those packages are relying on fancy quotes in some protocol, passing command-line arguments or ... something. I would be curious to see what file.path(R.home("share"), "R", "tests-startup.R") contains on the system where the problem occurs. > > A lot of packages have to work around this: > https://github.com/search?q=user%3Acran+R_TESTS&type=Code I wonder if those are mostly there because of cut'n'paste behavior. > > Most of these use testthat, but not all of them. My interest in this issue is because I haven't yet experienced this myself and I run lots and lots of package tests in future that utilizes the parallel package. In doFuture I do similar tests, which is on top of the foreach package. I don't use testthat and I also don't use doParallel in my testing. /Henrik > > Gabor > > On Mon, Feb 6, 2017 at 2:17 AM, Henrik Bengtsson > <henrik.bengts...@gmail.com> wrote: >> >> In case someone else bumps into this later and finds this thread; can >> you confirm that this was a problem specific to using the testthat >> package for running the tests? >> >> /Henrik >> >> On Sun, Feb 5, 2017 at 11:28 AM, Patrick Schratz >> <patrick.schr...@gmail.com> wrote: >> > @gaborcsardi solved it :) See here: >> > https://github.com/hadley/testthat/issues/567#issuecomment-277536577 >> > >> > >> > 2017-02-05 16:07 GMT+01:00 Patrick Schratz <patrick.schr...@gmail.com>: >> >> >> >> Thanks for the hint, Hendrik! >> >> However, this change did not make a difference :/ >> >> >> >> I tried to use all cluster closing functions I came across but tests >> >> are >> >> still running infinite.. >> >> >> >> cl <- makeCluster(par.args$par.units, outfile = out.progress) >> >> registerDoParallel(cl) >> >> >> >> foreach() >> >> >> >> parallel::stopCluster(cl) >> >> doParallel::registerDoSEQ() >> >> doParallel::stopImplicitCluster() >> >> >> >> 2017-02-05 15:04 GMT+01:00 Henrik Bengtsson >> >> <henrik.bengts...@gmail.com>: >> >>> >> >>> Use >> >>> >> >>> registerDoParallel(cl) >> >>> >> >>> The number of parallel workers is already contained in the 'cl' >> >>> object, >> >>> so don't specify 'cores'! (If you do that, I suspect you create yet >> >>> another >> >>> cluster (a multicore one) which is used but never closed) >> >>> >> >>> registerDoParallel() should ideally give an error in your case. Author >> >>> BCC:ed. >> >>> >> >>> Henrik >> >>> >> >>> On Feb 5, 2017 03:56, "Patrick Schratz" <patrick.schr...@gmail.com> >> >>> wrote: >> >>>> >> >>>> Dear Uwe, >> >>>> >> >>>> thanks for the hint. My cluster is closed after the `foreach`call >> >>>> using >> >>>> `stopCluster()`. >> >>>> >> >>>> Before, I´ll do the following to init the cluster: >> >>>> >> >>>> *cl <- makeCluster(par.args$par.units, outfile = out.progress)* >> >>>> *registerDoParallel(cl, cores = par.args$par.units)* >> >>>> >> >>>> *foreach()* >> >>>> >> >>>> *stopCluster(cl)* >> >>>> >> >>>> >> >>>> Do you know of any other package which is using foreach in >> >>>> combination >> >>>> with >> >>>> tests and is hosted on Github? So I could compare settings. >> >>>> >> >>>> Best, Patrick >> >>>> >> >>>> 2017-02-02 0:01 GMT+01:00 Uwe Ligges >> >>>> <lig...@statistik.tu-dortmund.de>: >> >>>> >> >>>> > Check whether the parallel cluster is closed. Can it be that the >> >>>> > cluster >> >>>> > is still open and the check process waits for them to complete? >> >>>> > >> >>>> > Best, >> >>>> > Uwe Ligges >> >>>> > >> >>>> > >> >>>> > >> >>>> > On 31.01.2017 13:45, Patrick Schratz wrote: >> >>>> > >> >>>> >> Hello, >> >>>> >> >> >>>> >> when running R CMD check / devtools::check, section "running >> >>>> >> tests..." is >> >>>> >> not finishing (40 min+). >> >>>> >> >> >>>> >> *Checking tests only works:* >> >>>> >> >> >>>> >> *==> Sourcing R files in 'tests' directory* >> >>>> >> >> >>>> >> *testthat results >> >>>> >> ================================================================* >> >>>> >> *OK: 7 SKIPPED: 0 FAILED: 0* >> >>>> >> >> >>>> >> *Tests complete* >> >>>> >> >> >>>> >> >> >>>> >> As well as running tests line-by-line. >> >>>> >> >> >>>> >> How can I debug my tests to discover the problem during R CMD >> >>>> >> check? >> >>>> >> >> >>>> >> *Tests are using parallelization (foreach + doParallel)* >> >>>> >> >> >>>> >> Best, Patrick >> >>>> >> >> >>>> >> [[alternative HTML version deleted]] >> >>>> >> >> >>>> >> ______________________________________________ >> >>>> >> R-package-devel@r-project.org mailing list >> >>>> >> https://stat.ethz.ch/mailman/listinfo/r-package-devel >> >>>> >> >> >>>> >> >> >>>> >> >>>> [[alternative HTML version deleted]] >> >>>> >> >>>> ______________________________________________ >> >>>> R-package-devel@r-project.org mailing list >> >>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel >> >> >> >> >> > >> >> ______________________________________________ >> R-package-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-package-devel > > ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel