HenrikBengtsson / future.tests

:nut_and_bolt: R package: future.tests - Test Suite for Future API Backends
https://future.tests.futureverse.org
10 stars 1 forks source link

REPRODUCIBILITY: Assert that the future backends don't forward RNG themselves #24

Closed HenrikBengtsson closed 1 year ago

HenrikBengtsson commented 1 year ago

Test script(s):

rng0 <- globalenv()$.Random.seed

f1 <- future(1)
stopifnot(identical(globalenv()$.Random.seed, rng0))  ## RNG changed?

f2 <- future(2)
rng <- globalenv()$.Random.seed
stopifnot(identical(globalenv()$.Random.seed, rng0))  ## RNG changed?

d1 <- resolved(f1)
rng <- globalenv()$.Random.seed
stopifnot(identical(globalenv()$.Random.seed, rng0))  ## RNG changed?

d2 <- resolved(f2)
rng <- globalenv()$.Random.seed
stopifnot(identical(globalenv()$.Random.seed, rng0))  ## RNG changed?

r1 <- result(f1)
rng <- globalenv()$.Random.seed
stopifnot(identical(globalenv()$.Random.seed, rng0))  ## RNG changed?

r2 <- result(f2)
rng <- globalenv()$.Random.seed
stopifnot(identical(globalenv()$.Random.seed, rng0))  ## RNG changed?

v1 <- result(f1)
rng <- globalenv()$.Random.seed
stopifnot(identical(globalenv()$.Random.seed, rng0))  ## RNG changed?

v2 <- result(f2)
rng <- globalenv()$.Random.seed
stopifnot(identical(globalenv()$.Random.seed, rng0))  ## RNG changed?
HenrikBengtsson commented 1 year ago

For example,

> library(future.callr)
> plan(callr)
> rng0 <- globalenv()$.Random.seed
> 
> f1 <- future(1)
> stopifnot(identical(globalenv()$.Random.seed, rng0))  ## RNG changed?
Error: identical(globalenv()$.Random.seed, rng0) is not TRUE
HenrikBengtsson commented 1 year ago

Tests add, cf. commit 98835dfa5. Example of results;

https://github.com/HenrikBengtsson/future.tests/blob/98835dfa58245fbc5f31d658aa700be0083a8f38/backend_results/future.callr%2Ccallr.out#L55-L58

HenrikBengtsson commented 1 year ago

Added to the future specifications, cf. https://github.com/HenrikBengtsson/future/commit/940a094d8d1d3efa29885cc7933c38af0f111a1c