From 10c7f46868aa67238199fb4635a0ff521cf928c1 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Tue, 25 Nov 2025 16:37:15 +0000 Subject: [PATCH 1/3] Set time limit to 180m --- .../workflows/dsBaseClient_test_suite.yaml | 71 +++++++++---------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/.github/workflows/dsBaseClient_test_suite.yaml b/.github/workflows/dsBaseClient_test_suite.yaml index ac71181a..4ac1ece7 100644 --- a/.github/workflows/dsBaseClient_test_suite.yaml +++ b/.github/workflows/dsBaseClient_test_suite.yaml @@ -20,10 +20,10 @@ on: jobs: dsBaseClient_test_suite: runs-on: ubuntu-latest - timeout-minutes: 120 + timeout-minutes: 180 permissions: contents: read - + # These should all be constant, except TEST_FILTER. This can be used to test # subsets of test files in the testthat directory. Options are like: # '*' <- Run all tests. @@ -34,7 +34,7 @@ jobs: _r_check_system_clock_: 0 WORKFLOW_ID: ${{ github.run_id }}-${{ github.run_attempt }} PROJECT_NAME: dsBaseClient - BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} REPO_OWNER: ${{ github.repository_owner }} R_KEEP_PKG_SOURCE: yes GITHUB_TOKEN: ${{ github.token || 'placeholder-token' }} @@ -54,7 +54,7 @@ jobs: path: testStatus persist-credentials: false token: ${{ env.GITHUB_TOKEN }} - + - name: Uninstall default MySQL run: | curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add - @@ -64,7 +64,7 @@ jobs: sudo apt-get autoremove -y sudo apt-get autoclean -y sudo rm -rf /var/lib/mysql/ - + - uses: r-lib/actions/setup-pandoc@v2 - uses: r-lib/actions/setup-r@v2 @@ -84,29 +84,29 @@ jobs: sudo apt-get install -qq libharfbuzz-dev libfribidi-dev libmagick++-dev xml-twig-tools -y sudo R -q -e "install.packages(c('devtools','covr','fields','meta','metafor','ggplot2','gridExtra','data.table','DSI','DSOpal','DSLite','MolgenisAuth','MolgenisArmadillo','DSMolgenisArmadillo','DescTools','e1071'), repos='https://cloud.r-project.org')" sudo R -q -e "devtools::install_github(repo='datashield/dsDangerClient', ref=Sys.getenv('BRANCH_NAME'))" - + - uses: r-lib/actions/setup-r-dependencies@v2 with: dependencies: 'c("Imports")' - extra-packages: | - any::rcmdcheck - cran::devtools - cran::git2r - cran::RCurl - cran::readr - cran::magrittr - cran::xml2 - cran::purrr - cran::dplyr - cran::stringr - cran::tidyr - cran::quarto - cran::knitr - cran::kableExtra - cran::rmarkdown - cran::downlit + extra-packages: | + any::rcmdcheck + cran::devtools + cran::git2r + cran::RCurl + cran::readr + cran::magrittr + cran::xml2 + cran::purrr + cran::dplyr + cran::stringr + cran::tidyr + cran::quarto + cran::knitr + cran::kableExtra + cran::rmarkdown + cran::downlit needs: check - + - name: Check manual updated run: | orig_sum=$(find man -type f | sort -u | xargs cat | md5sum) @@ -125,7 +125,7 @@ jobs: grep --quiet "^0 errors" azure-pipelines_check.Rout && grep --quiet " 0 warnings" azure-pipelines_check.Rout && grep --quiet " 0 notes" azure-pipelines_check.Rout working-directory: dsBaseClient continue-on-error: true - + - name: Start Armadillo docker-compose run: docker compose -f docker-compose_armadillo.yml up -d --build working-directory: dsBaseClient @@ -145,7 +145,7 @@ jobs: sleep 30 curl -u admin:admin -X POST http://localhost:8080/whitelist/dsBase working-directory: dsBaseClient - + - name: Run tests with coverage & JUnit report run: | mkdir -p logs @@ -169,11 +169,11 @@ jobs: ), "coveragelist.csv" )' - + mv coveragelist.csv logs/ mv test_* logs/ working-directory: dsBaseClient - + - name: Check for JUnit errors run: | issue_count=$(sed 's/failures="0" errors="0"//' test_results.xml | grep -c errors= || true) @@ -190,33 +190,33 @@ jobs: echo "os:$(lsb_release -ds)" >> ${{ env.WORKFLOW_ID }}.txt echo "R:$(R --version | head -n1)" >> ${{ env.WORKFLOW_ID }}.txt working-directory: dsBaseClient/logs - + - name: Parse results from testthat and covr run: | Rscript --verbose --vanilla ../testStatus/source/parse_test_report.R logs/ working-directory: dsBaseClient - + - name: Render report run: | cd testStatus - + mkdir -p new/logs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/ mkdir -p new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/ mkdir -p new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/latest/ - + # Copy logs to new logs directory location cp -rv ../dsBaseClient/logs/* new/logs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/ cp -rv ../dsBaseClient/logs/${{ env.WORKFLOW_ID }}.txt new/logs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/ - + R -e 'input_dir <- file.path("../new/logs", Sys.getenv("PROJECT_NAME"), Sys.getenv("BRANCH_NAME"), Sys.getenv("WORKFLOW_ID")); quarto::quarto_render("source/test_report.qmd", execute_params = list(input_dir = input_dir))' mv source/test_report.html new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/index.html cp -r new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/${{ env.WORKFLOW_ID }}/* new/docs/${{ env.PROJECT_NAME }}/${{ env.BRANCH_NAME }}/latest - + env: PROJECT_NAME: ${{ env.PROJECT_NAME }} BRANCH_NAME: ${{ env.BRANCH_NAME }} WORKFLOW_ID: ${{ env.WORKFLOW_ID }} - + - name: Upload test logs uses: actions/upload-artifact@v4 with: @@ -242,4 +242,3 @@ jobs: R -e 'sessionInfo()' sudo apt install tree -y tree . - From d63496508f9746896b7db7330e70e821d4f8425d Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Thu, 27 Nov 2025 16:17:22 +0000 Subject: [PATCH 2/3] Fix typo in variable name --- opal_azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opal_azure-pipelines.yml b/opal_azure-pipelines.yml index dab96a79..6122fb03 100644 --- a/opal_azure-pipelines.yml +++ b/opal_azure-pipelines.yml @@ -233,7 +233,7 @@ jobs: # Install dsBase. # If previous steps have failed then don't run. - bash: | - R -q -e "library(opalr); opal <- opal.login(username = 'administrator', password = 'datashield_test&', url = 'https://localhost:8443', opts = list(ssl_verifyhost=0, ssl_verifypeer=0)); opal.put(opal, 'system', 'conf', 'general', '_rPackage'); opal.logout(o)" + R -q -e "library(opalr); opal <- opal.login(username = 'administrator', password = 'datashield_test&', url = 'https://localhost:8443', opts = list(ssl_verifyhost=0, ssl_verifypeer=0)); opal.put(opal, 'system', 'conf', 'general', '_rPackage'); opal.logout(opal)" R -q -e "library(opalr); opal <- opal.login('administrator','datashield_test&', url='https://localhost:8443/', opts = list(ssl_verifyhost=0, ssl_verifypeer=0)); dsadmin.install_github_package(opal, 'dsBase', username = 'datashield', ref = 'v6.3.5-dev'); opal.logout(opal)" From f31f6941c270232249f60ca07b6d3dfbc671bb14 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Sun, 30 Nov 2025 14:42:31 +0000 Subject: [PATCH 3/3] Update 'perf' support --- tests/testthat/perf_tests/perf_rate.R | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/testthat/perf_tests/perf_rate.R b/tests/testthat/perf_tests/perf_rate.R index 0384bf63..64b638db 100644 --- a/tests/testthat/perf_tests/perf_rate.R +++ b/tests/testthat/perf_tests/perf_rate.R @@ -8,7 +8,8 @@ # along with this program. If not, see . #------------------------------------------------------------------------------- -.perf.reference.filename <- 'perf_files/default_perf_profile.csv' +.perf.reference.filename <- 'perf_files/default_perf_profile.csv' +.perf.reference.save.filename <- NULL .perf.reference <- NULL @@ -22,7 +23,13 @@ perf.reference.save <- function(perf.ref.name, rate, tolerance.lower, tolerance. .perf.reference[nrow(.perf.reference)+1,] <- c(perf.ref.name, rate, tolerance.lower, tolerance.upper) - write.csv(.perf.reference, .perf.reference.filename, row.names = FALSE) + if (is.null(.perf.reference.save.filename)) + { + .perf.reference.save.filename <<- base::tempfile(pattern = "perf_file_", fileext = ".csv") + message(paste0("Additional perf record added to '", .perf.reference.save.filename, "'")) + } + + write.csv(.perf.reference, .perf.reference.save.filename, row.names = FALSE) .perf.reference <<- .perf.reference }