diff --git a/armadillo_azure-pipelines.yml b/armadillo_azure-pipelines.yml
index 4fbd10739..ebca240bc 100644
--- a/armadillo_azure-pipelines.yml
+++ b/armadillo_azure-pipelines.yml
@@ -34,6 +34,7 @@ variables:
branchName: $(Build.SourceBranchName)
test_filter: '*'
_r_check_system_clock_: 0
+ perf.profile: 'azure-pipeline'
#########################################################################################
@@ -274,7 +275,7 @@ jobs:
#
# "_-|arg-|smk-|datachk-|disc-|math-|expt-|expt_smk-"
# testthat::test_package("$(projectName)", filter = "_-|datachk-|smk-|arg-|disc-|perf-|smk_expt-|expt-|math-", reporter = multi_rep, stop_on_failure = FALSE)
- sudo R -q -e '
+ sudo env PERF_PROFILE=$PERF_PROFILE R -q -e '
library(covr);
dsbase.res <- covr::package_coverage(
type = c("none"),
@@ -396,7 +397,7 @@ jobs:
# testthat::testpackage uses a MultiReporter, comprised of a ProgressReporter and JunitReporter
# R output and messages are redirected by sink() to test_console_output.txt
# junit reporter output is to test_results.xml
- sudo R -q -e '
+ sudo env PERF_PROFILE=$PERF_PROFILE R -q -e '
library(covr);
dsdanger.res <- covr::package_coverage(
type = c("none"),
@@ -534,7 +535,6 @@ jobs:
echo 'branch:'$(branchName) >> $(datetime).txt
echo 'os:'$(lsb_release -ds) >> $(datetime).txt
echo 'R:'$(R --version | head -n 1) >> $(datetime).txt
- echo 'opal:'$(opal system --opal localhost:8443 --user administrator --password "datashield_test&" --version) >> $(datetime).txt
workingDirectory: $(Pipeline.Workspace)/logs
displayName: 'Write versions to file'
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 04fb284d2..b541a3903 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -32,6 +32,7 @@ variables:
branchName: $(Build.SourceBranchName)
test_filter: '*'
_r_check_system_clock_: 0
+ perf.profile: 'azure-pipeline'
#########################################################################################
@@ -214,13 +215,13 @@ 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 = 'http://localhost:8080/'); 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 = 'v7.0-dev'); opal.logout(opal)"
+ R -q -e "library(opalr); opal <- opal.login('administrator','datashield_test&', url='http://localhost:8080/'); dsadmin.install_github_package(opal, 'dsBase', username = 'datashield', ref = 'v7.0-dev'); opal.logout(opal)"
sleep 60
- R -q -e "library(opalr); opal <- opal.login('administrator','datashield_test&', url='https://localhost:8443/', opts = list(ssl_verifyhost=0, ssl_verifypeer=0)); dsadmin.set_option(opal, 'default.datashield.privacyControlLevel', 'permissive'); opal.logout(opal)"
+ R -q -e "library(opalr); opal <- opal.login('administrator','datashield_test&', url='http://localhost:8080/'); dsadmin.set_option(opal, 'default.datashield.privacyControlLevel', 'permissive'); opal.logout(opal)"
workingDirectory: $(Pipeline.Workspace)/dsBaseClient/tests/testthat/data_files
displayName: 'Install dsBase to Opal, as set disclosure test options'
@@ -253,7 +254,7 @@ jobs:
#
# "_-|arg-|smk-|datachk-|disc-|math-|expt-|expt_smk-"
# testthat::test_package("$(projectName)", filter = "_-|datachk-|smk-|arg-|disc-|perf-|smk_expt-|expt-|math-", reporter = multi_rep, stop_on_failure = FALSE)
- sudo R -q -e '
+ sudo env PERF_PROFILE=$PERF_PROFILE R -q -e '
library(covr);
dsbase.res <- covr::package_coverage(
type = c("none"),
@@ -342,9 +343,9 @@ jobs:
# 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 = 'http://localhost:8080'); 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, 'dsDanger', username = 'datashield', ref = '6.3.4'); opal.logout(opal)"
+ R -q -e "library(opalr); opal <- opal.login('administrator','datashield_test&', url='http://localhost:8080/'); dsadmin.install_github_package(opal, 'dsDanger', username = 'datashield', ref = '6.3.4'); opal.logout(opal)"
workingDirectory: $(Pipeline.Workspace)/dsBaseClient
displayName: 'Install dsDanger package on Opal server'
@@ -368,7 +369,7 @@ jobs:
# testthat::testpackage uses a MultiReporter, comprised of a ProgressReporter and JunitReporter
# R output and messages are redirected by sink() to test_console_output.txt
# junit reporter output is to test_results.xml
- sudo R -q -e '
+ sudo env PERF_PROFILE=$PERF_PROFILE R -q -e '
library(covr);
dsdanger.res <- covr::package_coverage(
type = c("none"),
diff --git a/docker-compose_armadillo.yml b/docker-compose_armadillo.yml
index 37c44cdae..d7d98b911 100644
--- a/docker-compose_armadillo.yml
+++ b/docker-compose_armadillo.yml
@@ -3,7 +3,7 @@ services:
hostname: armadillo
ports:
- 8080:8080
- image: datashield/armadillo_citest:5.11.0
+ image: datashield/armadillo_citest:latest
environment:
LOGGING_CONFIG: 'classpath:logback-file.xml'
AUDIT_LOG_PATH: '/app/logs/audit.log'
@@ -16,7 +16,6 @@ services:
default:
hostname: default
- image: datashield/rock-quebrada-lamda:latest
-# image: datashield/rserver-panda-lamda:devel
+ image: datashield/rock_citest-permissive:latest
environment:
DEBUG: "FALSE"
diff --git a/docker-compose_opal.yml b/docker-compose_opal.yml
index a62dec679..70bffd8d1 100644
--- a/docker-compose_opal.yml
+++ b/docker-compose_opal.yml
@@ -3,6 +3,7 @@ services:
image: datashield/opal_citest:latest
ports:
- 8443:8443
+ - 8080:8080
links:
- mongo
- rock
@@ -15,11 +16,11 @@ services:
- ROCK_HOSTS=rock:8085
- ROCK_ADMINISTRATOR_PASSWORD=foobar
mongo:
- image: mongo:4.4.15
+ image: mongo:8.0
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=foobar
rock:
- image: datashield/rock-quebrada-lamda-permissive:latest
+ image: datashield/rock_citest-permissive:latest
environment:
DEBUG: "FALSE"
diff --git a/opal_azure-pipelines.yml b/opal_azure-pipelines.yml
index 76eb2e798..b541a3903 100644
--- a/opal_azure-pipelines.yml
+++ b/opal_azure-pipelines.yml
@@ -3,11 +3,9 @@
# Starts with a vanilla Opal docker composition, installs dsBase
# and dsBaseClient (as well as dependencies - including a fully functional
# Opal server).
-# Does checks and tests then saves results to testStatus repo.
#
# Inside the root directory $(Pipeline.Workspace) will be a file tree like:
# /dsBaseClient <- Checked out version of datashield/dsBaseClient
-# /testStatus <- Checked out version of datashield/testStatus
# /logs <- Where results of tests and lots are collated
#
# As of May 2020 this takes ~ 70 mins to run.
@@ -34,18 +32,7 @@ variables:
branchName: $(Build.SourceBranchName)
test_filter: '*'
_r_check_system_clock_: 0
-
-
-#########################################################################################
-# Need to define all the GH repos and their access tokens, see:
-# https://docs.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml
-resources:
- repositories:
- - repository: testStatusRepo
- type: github
- endpoint: datashield-testing
- name: datashield/testStatus
- ref: master
+ perf.profile: 'azure-pipeline'
#########################################################################################
@@ -82,11 +69,6 @@ jobs:
- checkout: self
path: 'dsBaseClient'
- - checkout: testStatusRepo
- path: 'testStatus'
- persistCredentials: true
- condition: and(eq(variables['Build.Repository.Name'], 'datashield/dsBaseClient'), ne(variables['Build.Reason'], 'PullRequest'))
-
#####################################################################################
# The MySQL install that comes with the VM doesn't seem compatable with our set up
@@ -233,13 +215,13 @@ 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 = 'http://localhost:8080/'); 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 = 'v7.0-dev'); opal.logout(opal)"
+ R -q -e "library(opalr); opal <- opal.login('administrator','datashield_test&', url='http://localhost:8080/'); dsadmin.install_github_package(opal, 'dsBase', username = 'datashield', ref = 'v7.0-dev'); opal.logout(opal)"
sleep 60
- R -q -e "library(opalr); opal <- opal.login('administrator','datashield_test&', url='https://localhost:8443/', opts = list(ssl_verifyhost=0, ssl_verifypeer=0)); dsadmin.set_option(opal, 'default.datashield.privacyControlLevel', 'permissive'); opal.logout(opal)"
+ R -q -e "library(opalr); opal <- opal.login('administrator','datashield_test&', url='http://localhost:8080/'); dsadmin.set_option(opal, 'default.datashield.privacyControlLevel', 'permissive'); opal.logout(opal)"
workingDirectory: $(Pipeline.Workspace)/dsBaseClient/tests/testthat/data_files
displayName: 'Install dsBase to Opal, as set disclosure test options'
@@ -272,7 +254,7 @@ jobs:
#
# "_-|arg-|smk-|datachk-|disc-|math-|expt-|expt_smk-"
# testthat::test_package("$(projectName)", filter = "_-|datachk-|smk-|arg-|disc-|perf-|smk_expt-|expt-|math-", reporter = multi_rep, stop_on_failure = FALSE)
- sudo R -q -e '
+ sudo env PERF_PROFILE=$PERF_PROFILE R -q -e '
library(covr);
dsbase.res <- covr::package_coverage(
type = c("none"),
@@ -361,9 +343,9 @@ jobs:
# 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 = 'http://localhost:8080'); 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, 'dsDanger', username = 'datashield', ref = '6.3.4'); opal.logout(opal)"
+ R -q -e "library(opalr); opal <- opal.login('administrator','datashield_test&', url='http://localhost:8080/'); dsadmin.install_github_package(opal, 'dsDanger', username = 'datashield', ref = '6.3.4'); opal.logout(opal)"
workingDirectory: $(Pipeline.Workspace)/dsBaseClient
displayName: 'Install dsDanger package on Opal server'
@@ -387,7 +369,7 @@ jobs:
# testthat::testpackage uses a MultiReporter, comprised of a ProgressReporter and JunitReporter
# R output and messages are redirected by sink() to test_console_output.txt
# junit reporter output is to test_results.xml
- sudo R -q -e '
+ sudo env PERF_PROFILE=$PERF_PROFILE R -q -e '
library(covr);
dsdanger.res <- covr::package_coverage(
type = c("none"),
@@ -524,75 +506,6 @@ jobs:
displayName: 'Down Opal Docker Composition'
condition: succeeded()
- #####################################################################################
- # Windup phase
- #####################################################################################
-
- #####################################################################################
- # Output some important version numbers to file. This gets added to the testStatus
- # commit so it can be parsed and used on the status table.
- - bash: |
-
- echo 'branch:'$(branchName) >> $(datetime).txt
- echo 'os:'$(lsb_release -ds) >> $(datetime).txt
- echo 'R:'$(R --version | head -n 1) >> $(datetime).txt
- echo 'opal:'$(opal system --opal localhost:8443 --user administrator --password "datashield_test&" --version) >> $(datetime).txt
-
- workingDirectory: $(Pipeline.Workspace)/logs
- displayName: 'Write versions to file'
- condition: succeededOrFailed()
-
-
- #####################################################################################
- # Checkout the testStatus repo, add the results from here, push back to GH.
- # TODO: Automatically pull in better email/name info from somewhere.
- # TODO: More debug info in commit message
- - bash: |
-
- # Git needs some config set to be able to push to a repo.
- git config --global user.email "you@example.com"
- git config --global user.name "Azure pipeline"
-
- # This repo is checked out in detatched head state, so reconnect it here.
- git checkout master
-
- # It is possible that other commits have been made to the testStatus repo since it
- # was checked out. i.e. other pipeline runs might have finished.
- git pull
-
- # Make the directories if they dont already exist
- mkdir --parents logs/$(projectName)/$(branchName)
- mkdir --parents docs/$(projectName)/$(branchName)/latest
-
- cp $(Pipeline.Workspace)/logs/coveragelist.csv logs/$(projectName)/$(branchName)/
- cp $(Pipeline.Workspace)/logs/coveragelist.csv logs/$(projectName)/$(branchName)/$(datetime).csv
-
- cp $(Pipeline.Workspace)/logs/test_results.xml logs/$(projectName)/$(branchName)/
- cp $(Pipeline.Workspace)/logs/test_results.xml logs/$(projectName)/$(branchName)/$(datetime).xml
-
- cp $(Pipeline.Workspace)/logs/$(datetime).txt logs/$(projectName)/$(branchName)/
-
- # Run the script to parse the results and build the html pages.
- # status.py JUnit_file.xml coverage_file.csv output_file.html local_repo_path remote_repo_name branch
- source/status.py logs/$(projectName)/$(branchName)/$(datetime).xml logs/$(projectName)/$(branchName)/$(datetime).csv logs/$(projectName)/$(branchName)/$(datetime).txt status.html $(Pipeline.Workspace)/$(projectName) $(projectName) $(branchName)
-
- cp status.html docs/$(projectName)/$(branchName)/latest/index.html
- git add logs/$(projectName)/$(branchName)/coveragelist.csv
- git add logs/$(projectName)/$(branchName)/test_results.xml
- git add logs/$(projectName)/$(branchName)/$(datetime).xml
- git add logs/$(projectName)/$(branchName)/$(datetime).csv
- git add logs/$(projectName)/$(branchName)/$(datetime).txt
- git add docs/$(projectName)/$(branchName)/latest/index.html
-
- git commit -m "Azure auto test for $(projectName)/$(branchName) @ $(datetime)" -m "Debug info:\nProjectName:$(projectName)\nBranchName:$(branchName)\nDataTime:$(datetime)"
- git push
- exit 0
-
- workingDirectory: $(Pipeline.Workspace)/testStatus
- displayName: 'Parse test results'
- condition: and(eq(variables['Build.Repository.Name'], 'datashield/dsBaseClient'), ne(variables['Build.Reason'], 'PullRequest'))
-
-
#####################################################################################
# Output the environment information to the console. This is useful for debugging.
# Always do this, even if some of the above has failed or the job has been cacelled.
diff --git a/tests/testthat/connection_to_datasets/login_details.R b/tests/testthat/connection_to_datasets/login_details.R
index 2ce4ca2de..813954749 100644
--- a/tests/testthat/connection_to_datasets/login_details.R
+++ b/tests/testthat/connection_to_datasets/login_details.R
@@ -22,12 +22,12 @@ if (! is.null(getOption("default_driver"))) {
}
if ((ds.test_env$driver == "DSLiteDriver") || (ds.test_env$driver == "OpalDriver")) {
- ds.test_env$ping_address <- paste("https://", ds.test_env$server_ip_address, ":8443", sep="")
- ds.test_env$ping_config <- config(timeout=5, ssl_verifyhost=0, ssl_verifypeer=0)
+ ds.test_env$ping_address <- paste("http://", ds.test_env$server_ip_address, ":8080", sep="")
+ ds.test_env$ping_config <- config(timeout=5)
- ds.test_env$ip_address_1 <- paste("https://", ds.test_env$server_ip_address, ":8443", sep="")
- ds.test_env$ip_address_2 <- paste("https://", ds.test_env$server_ip_address, ":8443", sep="")
- ds.test_env$ip_address_3 <- paste("https://", ds.test_env$server_ip_address, ":8443", sep="")
+ ds.test_env$ip_address_1 <- paste("http://", ds.test_env$server_ip_address, ":8080", sep="")
+ ds.test_env$ip_address_2 <- paste("http://", ds.test_env$server_ip_address, ":8080", sep="")
+ ds.test_env$ip_address_3 <- paste("http://", ds.test_env$server_ip_address, ":8080", sep="")
ds.test_env$user_1 <- getOption("opal.user", "administrator")
ds.test_env$user_2 <- getOption("opal.user", "administrator")
@@ -37,9 +37,9 @@ if ((ds.test_env$driver == "DSLiteDriver") || (ds.test_env$driver == "OpalDriver
ds.test_env$password_2 <- getOption("opal.password", "datashield_test&")
ds.test_env$password_3 <- getOption("opal.password", "datashield_test&")
- ds.test_env$options_1 <- "list(ssl_verifyhost=0, ssl_verifypeer=0)"
- ds.test_env$options_2 <- "list(ssl_verifyhost=0, ssl_verifypeer=0)"
- ds.test_env$options_3 <- "list(ssl_verifyhost=0, ssl_verifypeer=0)"
+ ds.test_env$options_1 <- "list()"
+ ds.test_env$options_2 <- "list()"
+ ds.test_env$options_3 <- "list()"
ds.test_env$secure_login_details <- TRUE
} else if (ds.test_env$driver == "ArmadilloDriver") {
diff --git a/tests/testthat/data_files/obiba_opal-upload_testing_datasets.R b/tests/testthat/data_files/obiba_opal-upload_testing_datasets.R
index ae79d2e62..2913e3ecb 100644
--- a/tests/testthat/data_files/obiba_opal-upload_testing_datasets.R
+++ b/tests/testthat/data_files/obiba_opal-upload_testing_datasets.R
@@ -17,8 +17,8 @@ upload_testing_dataset_table <- function(opal, project_name, table_name, local_f
opal.table_save(opal, data, project_name, table_name, id.name = "_row_id_", force = TRUE)
}
-# opal <- opal.login('administrator','datashield_test&', url='https://192.168.56.100:8443/', opts = list(ssl_verifyhost=0, ssl_verifypeer=0))
-opal <- opal.login('administrator','datashield_test&', url='https://localhost:8443/', opts = list(ssl_verifyhost=0, ssl_verifypeer=0))
+# opal <- opal.login('administrator','datashield_test&', url='https://192.168.56.100:8/', opts = list(ssl_verifyhost=0, ssl_verifypeer=0))
+opal <- opal.login('administrator','datashield_test&', url='http://localhost:8080/', opts = list())
upload_testing_dataset_table(opal, 'ANTHRO', 'anthro1', 'ANTHRO/anthro1.rda')
upload_testing_dataset_table(opal, 'ANTHRO', 'anthro2', 'ANTHRO/anthro2.rda')
diff --git a/tests/testthat/perf_files/armadillo_azure-pipeline.csv b/tests/testthat/perf_files/armadillo_azure-pipeline.csv
deleted file mode 100644
index 03d36d8fe..000000000
--- a/tests/testthat/perf_files/armadillo_azure-pipeline.csv
+++ /dev/null
@@ -1,14 +0,0 @@
-"refer_name","rate","lower_tolerance","upper_tolerance"
-"conndisconn::perf::simple0","0.1651","0.5","2"
-"ds.abs::perf::0","6.273","0.5","2"
-"ds.asInteger::perf:0","5.731","0.5","2"
-"ds.asList::perf:0","12.74","0.5","2"
-"ds.asNumeric::perf:0","5.637","0.5","2"
-"ds.assign::perf::0","10.46","0.5","2"
-"ds.class::perf::combine:0","12.69","0.5","2"
-"ds.colnames::perf:0","9.518","0.5","2"
-"ds.exists::perf::combine:0","25.33","0.5","2"
-"ds.length::perf::combine:0","25.45","0.5","2"
-"ds.mean::perf::combine:0","25.37","0.5","2"
-"ds.mean::perf::split:0","25.74","0.5","2"
-"void::perf::void::0","56310.0","0.5","2"
diff --git a/tests/testthat/perf_files/armadillo_azure-pipeline_perf-profile.csv b/tests/testthat/perf_files/armadillo_azure-pipeline_perf-profile.csv
new file mode 100644
index 000000000..2ad6282b7
--- /dev/null
+++ b/tests/testthat/perf_files/armadillo_azure-pipeline_perf-profile.csv
@@ -0,0 +1,20 @@
+"refer_name","rate","lower_tolerance","upper_tolerance"
+"conndisconn::perf::simple0","0.1601","0.5","2"
+"ds.abs::perf::0","17.68","0.5","2"
+"ds.asCharacter::perf:0","16.19","0.5","2"
+"ds.asDataMatrix::perf:0","17.28","0.5","2"
+"ds.asInteger::perf:0","17.29","0.5","2"
+"ds.asList::perf:0","16.78","0.5","2"
+"ds.asLogical::perf:0","17.81","0.5","2"
+"ds.asMatrix::perf:0","17.22","0.5","2"
+"ds.asNumeric::perf:0","17.50","0.5","2"
+"ds.assign::perf::0","12.59","0.5","2"
+"ds.class::perf::combine:0","12.55","0.5","2"
+"ds.colnames::perf:0","9.708","0.5","2"
+"ds.exists::perf::combine:0","25.33","0.5","2"
+"ds.length::perf::combine:0","25.45","0.5","2"
+"ds.log::perf::0","25.37","0.5","2"
+"ds.mean::perf::combine:0","25.37","0.5","2"
+"ds.mean::perf::split:0","25.74","0.5","2"
+"ds.sqrt::perf::0","17.70","0.5","2"
+"void::perf::void::0","56310.0","0.5","2"
diff --git a/tests/testthat/perf_files/armadillo_hp-laptop_quay.csv b/tests/testthat/perf_files/armadillo_hp-laptop-quay_perf-profile.csv
similarity index 55%
rename from tests/testthat/perf_files/armadillo_hp-laptop_quay.csv
rename to tests/testthat/perf_files/armadillo_hp-laptop-quay_perf-profile.csv
index 9ac69853e..89fe83c9f 100644
--- a/tests/testthat/perf_files/armadillo_hp-laptop_quay.csv
+++ b/tests/testthat/perf_files/armadillo_hp-laptop-quay_perf-profile.csv
@@ -1,9 +1,13 @@
"refer_name","rate","lower_tolerance","upper_tolerance"
"conndisconn::perf::simple0","0.04918","0.5","2"
-"ds.abs::perf::0","1.184","0.5","2"
-"ds.asInteger::perf:0","1.297","0.5","2"
-"ds.asList::perf:0","2.884","0.5","2"
-"ds.asNumeric::perf:0","1.354","0.5","2"
+"ds.abs::perf::0","6.327","0.5","2"
+"ds.asCharacter::perf::0","4.048","0.5","2"
+"ds.asDataMatrix::perf::0","4.206","0.5","2"
+"ds.asInteger::perf:0","4.309","0.5","2"
+"ds.asList::perf:0","8.058","0.5","2"
+"ds.asLogical::perf::0","4.793","0.5","2"
+"ds.asMatrix::perf::0","4.840","0.5","2"
+"ds.asNumeric::perf:0","6.555","0.5","2"
"ds.assign::perf::0","2.745","0.5","2"
"ds.class::perf::combine:0","3.261","0.5","2"
"ds.colnames::perf:0","2.404","0.5","2"
@@ -11,4 +15,5 @@
"ds.length::perf::combine:0","7.835","0.5","2"
"ds.mean::perf::combine:0","8.127","0.5","2"
"ds.mean::perf::split:0","8.109","0.5","2"
+"ds.sqrt::perf::0","5.569","0.5","2"
"void::perf::void::0","20280.0","0.5","2"
diff --git a/tests/testthat/perf_files/dslite_hp-laptop_quay.csv b/tests/testthat/perf_files/dslite_hp-laptop-quay_perf-profile.csv
similarity index 100%
rename from tests/testthat/perf_files/dslite_hp-laptop_quay.csv
rename to tests/testthat/perf_files/dslite_hp-laptop-quay_perf-profile.csv
diff --git a/tests/testthat/perf_files/opal_azure-pipeline.csv b/tests/testthat/perf_files/opal_azure-pipeline.csv
deleted file mode 100644
index 9f1ae6e5e..000000000
--- a/tests/testthat/perf_files/opal_azure-pipeline.csv
+++ /dev/null
@@ -1,14 +0,0 @@
-"refer_name","rate","lower_tolerance","upper_tolerance"
-"conndisconn::perf::simple0","0.2725","0.5","2"
-"ds.abs::perf::0","2.677","0.5","2"
-"ds.asInteger::perf:0","2.294","0.5","2"
-"ds.asList::perf:0","4.587","0.5","2"
-"ds.asNumeric::perf:0","2.185","0.5","2"
-"ds.assign::perf::0","5.490","0.5","2"
-"ds.class::perf::combine:0","4.760","0.5","2"
-"ds.colnames::perf:0","4.218","0.5","2"
-"ds.exists::perf::combine:0","11.09","0.5","2"
-"ds.length::perf::combine:0","9.479","0.5","2"
-"ds.mean::perf::combine:0","9.650","0.5","2"
-"ds.mean::perf::split:0","11.26","0.5","2"
-"void::perf::void::0","46250.0","0.5","2"
diff --git a/tests/testthat/perf_files/default_perf_profile.csv b/tests/testthat/perf_files/opal_azure-pipeline_perf-profile.csv
similarity index 100%
rename from tests/testthat/perf_files/default_perf_profile.csv
rename to tests/testthat/perf_files/opal_azure-pipeline_perf-profile.csv
diff --git a/tests/testthat/perf_files/opal_hp-laptop_quay.csv b/tests/testthat/perf_files/opal_hp-laptop-quay_perf-profile.csv
similarity index 100%
rename from tests/testthat/perf_files/opal_hp-laptop_quay.csv
rename to tests/testthat/perf_files/opal_hp-laptop-quay_perf-profile.csv
diff --git a/tests/testthat/perf_tests/perf_rate.R b/tests/testthat/perf_tests/perf_rate.R
index 0384bf637..8d762207c 100644
--- a/tests/testthat/perf_tests/perf_rate.R
+++ b/tests/testthat/perf_tests/perf_rate.R
@@ -1,5 +1,5 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2024-2025 Arjuna Technologies, Newcastle upon Tyne. All rights reserved.
+# Copyright (c) 2024-2026 Arjuna Technologies, Newcastle upon Tyne. All rights reserved.
#
# This program and the accompanying materials
# are made available under the terms of the GNU Public License v3.0.
@@ -8,12 +8,36 @@
# along with this program. If not, see .
#-------------------------------------------------------------------------------
-.perf.reference.filename <- 'perf_files/default_perf_profile.csv'
+.perf.reference.filename.base.prefix <- 'perf_files/'
+.perf.reference.filename.base.postfix <- '_perf-profile.csv'
+.perf.reference.save.filename <- NULL
.perf.reference <- NULL
.load.pref <- function() {
- .perf.reference <<- read.csv(.perf.reference.filename, header = TRUE, sep = ",")
+ if (ds.test_env$driver == "OpalDriver")
+ perf.reference.filename.driver.infix <- "opal"
+ else if (ds.test_env$driver == "ArmadilloDriver")
+ perf.reference.filename.driver.infix <- "armadillo"
+ else if (ds.test_env$driver == "DSLiteDriver")
+ perf.reference.filename.driver.infix <- "dslite"
+ else
+ {
+ perf.reference.filename.infix <- "unknown"
+ warning("Unknown performance profile driver, using 'unknown'")
+ }
+
+ perf.profile <- base::Sys.getenv("PERF_PROFILE")
+ if (nchar(perf.profile) > 0)
+ perf.reference.filename.platform.infix <- base::tolower(perf.profile)
+ else
+ {
+ perf.reference.filename.platform.infix <- "default"
+ warning("Unknown performance profile platform, using 'default'")
+ }
+
+ perf.reference.filename <- paste(.perf.reference.filename.base.prefix, perf.reference.filename.driver.infix, '_', perf.reference.filename.platform.infix, .perf.reference.filename.base.postfix, sep = "")
+ .perf.reference <<- read.csv(perf.reference.filename, header = TRUE, sep = ",")
}
perf.reference.save <- function(perf.ref.name, rate, tolerance.lower, tolerance.upper) {
@@ -22,11 +46,22 @@ 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
}
+# Obtain performance test duration from PERF_DURATION_SEC environment variable, otherwise default.duration argument, otherwise "30".
+perf.testduration <- function(default.duration = 30) {
+ base::as.integer(base::Sys.getenv("PERF_DURATION_SEC", unset = base::as.character(default.duration)))
+}
+
perf.reference.rate <- function(perf.ref.name) {
if (is.null(.perf.reference))
.load.pref()
diff --git a/tests/testthat/test-smk_dgr-ds.asCharacter.R b/tests/testthat/test-smk_dgr-ds.asCharacter.R
index 48a2fbd12..224c86161 100644
--- a/tests/testthat/test-smk_dgr-ds.asCharacter.R
+++ b/tests/testthat/test-smk_dgr-ds.asCharacter.R
@@ -30,10 +30,13 @@ test_that("setup", {
# context("ds.asCharacter::smk_dgr::simple test")
test_that("simple test", {
res <- ds.asCharacter("D$LAB_TSC")
+ expect_equal(length(res), 0)
- expect_equal(length(res), 2)
- expect_equal(res$is.object.created, "A data object has been created in all specified data sources")
- expect_equal(res$validity.check, " appears valid in all sources")
+ newobj <- ds.DANGERvarsEXTRACT('ascharacter.newobj')
+
+ expect_equal(length(newobj), 2)
+ expect_true(all(c("list") %in% class(newobj[[1]])))
+ expect_true(all(c("data.frame") %in% class(newobj[[2]])))
})
#