Nothing
# Integration Tests Using Examples
#
# These tests run the example scripts to validate end-to-end functionality.
# Set RUN_INTEGRATION_TESTS=TRUE to enable (skipped by default).
# Set USE_STARBURST=TRUE to test with AWS (otherwise tests local execution).
skip_if_no_integration <- function() {
skip_if_not(
Sys.getenv("RUN_INTEGRATION_TESTS") == "TRUE",
"Integration tests disabled. Set RUN_INTEGRATION_TESTS=TRUE to enable."
)
}
# Helper to get package root directory (tests run from tests/testthat/)
get_pkg_root <- function() {
if (basename(getwd()) == "testthat") {
normalizePath("../..")
} else if (file.exists("tests/testthat")) {
getwd()
} else {
stop("Cannot determine package root")
}
}
test_that("Monte Carlo example runs locally", {
skip_if_no_integration()
pkg_root <- get_pkg_root()
# Run example without staRburst (run from pkg_root so results write there)
result <- withr::with_dir(pkg_root, {
withr::with_envvar(
c(USE_STARBURST = "FALSE"),
system2(
"Rscript",
args = c("examples/01-monte-carlo-portfolio.R"),
stdout = TRUE,
stderr = TRUE
)
)
})
expect_equal(attr(result, "status"), NULL) # NULL status = success (0)
expect_true(file.exists(file.path(pkg_root, "monte-carlo-results-local.rds")))
# Verify results structure
results <- readRDS(file.path(pkg_root, "monte-carlo-results-local.rds"))
expect_type(results$results, "list")
expect_true(results$elapsed > 0)
expect_equal(results$mode, "local")
# Cleanup
unlink(file.path(pkg_root, "monte-carlo-results-local.rds"))
})
test_that("Monte Carlo example runs with staRburst", {
skip_if_no_integration()
skip_if_not(
Sys.getenv("USE_STARBURST") == "TRUE",
"AWS tests disabled. Set USE_STARBURST=TRUE to enable."
)
pkg_root <- get_pkg_root()
# Run example with staRburst
result <- withr::with_envvar(
c(
USE_STARBURST = "TRUE",
STARBURST_WORKERS = "10", # Small worker count for testing
AWS_PROFILE = Sys.getenv("AWS_PROFILE", "aws")
),
system2(
"Rscript",
args = c(file.path(pkg_root, "examples/01-monte-carlo-portfolio.R")),
stdout = TRUE,
stderr = TRUE
)
)
expect_equal(attr(result, "status"), NULL)
expect_true(file.exists(file.path(pkg_root, "monte-carlo-results-aws.rds")))
# Verify results structure
results <- readRDS(file.path(pkg_root, "monte-carlo-results-aws.rds"))
expect_type(results$results, "list")
expect_true(results$elapsed > 0)
expect_equal(results$mode, "aws")
expect_equal(results$workers, 10)
# Cleanup
unlink(file.path(pkg_root, "monte-carlo-results-aws.rds"))
})
test_that("Bootstrap example runs locally", {
skip_if_no_integration()
pkg_root <- get_pkg_root()
result <- withr::with_dir(pkg_root, {
withr::with_envvar(
c(USE_STARBURST = "FALSE"),
system2(
"Rscript",
args = c("examples/02-bootstrap-confidence-intervals.R"),
stdout = TRUE,
stderr = TRUE
)
)
})
expect_equal(attr(result, "status"), NULL)
expect_true(file.exists(file.path(pkg_root, "bootstrap-results-local.rds")))
results <- readRDS(file.path(pkg_root, "bootstrap-results-local.rds"))
expect_type(results$boot_results, "list")
expect_length(results$ci, 2)
expect_true(results$ci[1] < results$ci[2])
unlink(file.path(pkg_root, "bootstrap-results-local.rds"))
})
test_that("Bootstrap example runs with staRburst", {
skip_if_no_integration()
skip_if_not(Sys.getenv("USE_STARBURST") == "TRUE")
pkg_root <- get_pkg_root()
result <- withr::with_dir(pkg_root, {
withr::with_envvar(
c(
USE_STARBURST = "TRUE",
STARBURST_WORKERS = "10",
AWS_PROFILE = Sys.getenv("AWS_PROFILE", "aws")
),
system2(
"Rscript",
args = c("examples/02-bootstrap-confidence-intervals.R"),
stdout = TRUE,
stderr = TRUE
)
)
})
expect_equal(attr(result, "status"), NULL)
expect_true(file.exists(file.path(pkg_root, "bootstrap-results-aws.rds")))
unlink(file.path(pkg_root, "bootstrap-results-aws.rds"))
})
test_that("Data processing example runs locally", {
skip_if_no_integration()
pkg_root <- get_pkg_root()
result <- withr::with_dir(pkg_root, {
withr::with_envvar(
c(USE_STARBURST = "FALSE"),
system2(
"Rscript",
args = c("examples/03-parallel-data-processing.R"),
stdout = TRUE,
stderr = TRUE
)
)
})
expect_equal(attr(result, "status"), NULL)
expect_true(file.exists(file.path(pkg_root, "processing-results-local.rds")))
results <- readRDS(file.path(pkg_root, "processing-results-local.rds"))
expect_type(results$chunk_stats, "list")
expect_true(length(results$chunk_stats) > 0)
unlink(file.path(pkg_root, "processing-results-local.rds"))
})
test_that("Data processing example runs with staRburst", {
skip_if_no_integration()
skip_if_not(Sys.getenv("USE_STARBURST") == "TRUE")
pkg_root <- get_pkg_root()
result <- withr::with_dir(pkg_root, {
withr::with_envvar(
c(
USE_STARBURST = "TRUE",
STARBURST_WORKERS = "10",
AWS_PROFILE = Sys.getenv("AWS_PROFILE", "aws")
),
system2(
"Rscript",
args = c("examples/03-parallel-data-processing.R"),
stdout = TRUE,
stderr = TRUE
)
)
})
expect_equal(attr(result, "status"), NULL)
expect_true(file.exists(file.path(pkg_root, "processing-results-aws.rds")))
unlink(file.path(pkg_root, "processing-results-aws.rds"))
})
test_that("Grid search example runs locally", {
skip_if_no_integration()
pkg_root <- get_pkg_root()
result <- withr::with_dir(pkg_root, {
withr::with_envvar(
c(USE_STARBURST = "FALSE"),
system2(
"Rscript",
args = c("examples/04-grid-search-tuning.R"),
stdout = TRUE,
stderr = TRUE
)
)
})
expect_equal(attr(result, "status"), NULL)
expect_true(file.exists(file.path(pkg_root, "grid-search-results-local.rds")))
results <- readRDS(file.path(pkg_root, "grid-search-results-local.rds"))
expect_type(results$results, "list")
expect_type(results$best_params, "list")
expect_true(results$best_params$cv_score > 0)
unlink(file.path(pkg_root, "grid-search-results-local.rds"))
})
test_that("Grid search example runs with staRburst", {
skip_if_no_integration()
skip_if_not(Sys.getenv("USE_STARBURST") == "TRUE")
pkg_root <- get_pkg_root()
result <- withr::with_dir(pkg_root, {
withr::with_envvar(
c(
USE_STARBURST = "TRUE",
STARBURST_WORKERS = "10",
AWS_PROFILE = Sys.getenv("AWS_PROFILE", "aws")
),
system2(
"Rscript",
args = c("examples/04-grid-search-tuning.R"),
stdout = TRUE,
stderr = TRUE
)
)
})
expect_equal(attr(result, "status"), NULL)
expect_true(file.exists(file.path(pkg_root, "grid-search-results-aws.rds")))
unlink(file.path(pkg_root, "grid-search-results-aws.rds"))
})
test_that("All examples produce consistent results", {
skip_if_no_integration()
skip_if_not(Sys.getenv("USE_STARBURST") == "TRUE")
pkg_root <- get_pkg_root()
# This test verifies that AWS and local execution produce similar results
# (within statistical tolerance for random processes)
# Run Monte Carlo both ways with same seed
withr::with_dir(pkg_root, {
withr::with_envvar(
c(USE_STARBURST = "FALSE"),
system2(
"Rscript",
args = c("examples/01-monte-carlo-portfolio.R"),
stdout = FALSE,
stderr = FALSE
)
)
})
withr::with_dir(pkg_root, {
withr::with_envvar(
c(
USE_STARBURST = "TRUE",
STARBURST_WORKERS = "10",
AWS_PROFILE = Sys.getenv("AWS_PROFILE", "aws")
),
system2(
"Rscript",
args = c("examples/01-monte-carlo-portfolio.R"),
stdout = FALSE,
stderr = FALSE
)
)
})
# Compare results (should be statistically similar)
local <- readRDS(file.path(pkg_root, "monte-carlo-results-local.rds"))
aws <- readRDS(file.path(pkg_root, "monte-carlo-results-aws.rds"))
local_means <- sapply(local$results, function(x) x$final_value)
aws_means <- sapply(aws$results, function(x) x$final_value)
# Results should be highly correlated (same random seeds)
expect_true(cor(local_means, aws_means) > 0.99)
# Cleanup
unlink(c(
file.path(pkg_root, "monte-carlo-results-local.rds"),
file.path(pkg_root, "monte-carlo-results-aws.rds")
))
})
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.