From d46efddd0b68016d8c3fffa26698c9e951458878 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Mon, 19 Jan 2026 17:31:39 +0100 Subject: [PATCH 01/17] Make run_reframe.sh loop over versions defined in EESSI_VERSIONS (interpret as comma-separated). Then, run the test suite on each version. Also: change how defaults are assigned in run_reframe.sh by using the ${X:-default_X} construct, which is more compact than what we currently have --- CI/run_reframe.sh | 180 +++++++++++++++++++++++----------------------- 1 file changed, 88 insertions(+), 92 deletions(-) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index 95edee7c..fb90e5e4 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -37,21 +37,11 @@ fi source "${CI_CONFIG}" # Set default configuration, but let anything set by CI_CONFIG take priority -if [ -z "${REFRAME_ARGS}" ]; then - REFRAME_ARGS="--tag CI --tag 1_node" -fi -if [ -z "${REFRAME_VERSION}"]; then - REFRAME_VERSION=4.8.1 -fi -if [ -z "${REFRAME_URL}" ]; then - REFRAME_URL='https://github.com/reframe-hpc/reframe.git' -fi -if [ -z "${REFRAME_BRANCH}" ]; then - REFRAME_BRANCH="v${REFRAME_VERSION}" -fi -if [ -z "${EESSI_TESTSUITE_URL}" ]; then - EESSI_TESTSUITE_URL='https://github.com/EESSI/test-suite.git' -fi +REFRAME_ARGS="${REFRAME_ARGS:---tag CI --tag 1_node}" +REFRAME_VERSION="${REFRAME_VERSION:-4.8.1}" +REFRAME_URL="${REFRAME_URL:-REFRAME_URL=https://github.com/reframe-hpc/reframe.git}" +REFRAME_BRANCH="${REFRAME_BRANCH:-v${REFRAME_VERSION}}" +EESSI_TESTSUITE_URL="${EESSI_TESTSUITE_URL:-https://github.com/EESSI/test-suite.git}" if [ -z "${EESSI_TESTSUITE_BRANCH}" ]; then git clone -n --depth=1 --filter=tree:0 ${EESSI_TESTSUITE_URL} "${TEMPDIR}/test-suite-version-checkout" cd "${TEMPDIR}/test-suite-version-checkout" @@ -62,44 +52,24 @@ if [ -z "${EESSI_TESTSUITE_BRANCH}" ]; then EESSI_TESTSUITE_BRANCH="${LATEST_VERSION}" cd ${TEMPDIR} fi -if [ -z "${EESSI_CONFIGS_TESTSUITE_URL}" ]; then - EESSI_CONFIGS_TESTSUITE_URL="${EESSI_TESTSUITE_URL}" -fi -if [ -z "${EESSI_CONFIGS_TESTSUITE_BRANCH}" ]; then - EESSI_CONFIGS_TESTSUITE_BRANCH="${EESSI_TESTSUITE_BRANCH}" -fi -if [ -z "${USE_EESSI_SOFTWARE_STACK}" ] || [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then - export USE_EESSI_SOFTWARE_STACK=True - if [ -z "${EESSI_CVMFS_REPO}" ]; then - export EESSI_CVMFS_REPO=/cvmfs/software.eessi.io - fi - if [ -z "${EESSI_VERSION}" ]; then - export EESSI_VERSION=2023.06 - fi -fi -if [ -z "${RFM_CONFIG_FILES}" ]; then - export RFM_CONFIG_FILES="${TEMPDIR}/configs/config/${EESSI_CI_SYSTEM_NAME}.py" -fi -if [ -z "${RFM_CHECK_SEARCH_PATH}" ]; then - export RFM_CHECK_SEARCH_PATH="${TEMPDIR}/test-suite/eessi/testsuite/tests/" -fi -if [ -z "${RFM_CHECK_SEARCH_RECURSIVE}" ]; then - export RFM_CHECK_SEARCH_RECURSIVE=1 -fi -if [ -z "${RFM_PREFIX}" ]; then - export RFM_PREFIX="${HOME}/reframe_CI_runs" -fi -if [ -z "${REFRAME_TIMEOUT}" ]; then - # 10 minutes short of 1 day, since typically the test suite will be run daily. - # This will prevent multiple ReFrame runs from piling up and exceeding the quota on our Magic Castle clusters - export REFRAME_TIMEOUT=1430m -fi -if [ -z "${UNSET_MODULEPATH}" ]; then - export UNSET_MODULEPATH=True -fi -if [ -z "${SET_LOCAL_MODULE_ENV}" ]; then - export SET_LOCAL_MODULE_ENV=False -fi +EESSI_CONFIGS_TESTSUITE_URL="${EESSI_CONFIGS_TESTSUITE_URL:-${EESSI_TESTSUITE_URL}}" +EESSI_CONFIGS_TESTSUITE_BRANCH="${EESSI_CONFIGS_TESTSUITE_BRANCH:-${EESSI_TESTSUITE_BRANCH}}" +export USE_EESSI_SOFTWARE_STACK="${USE_EESSI_SOFTWARE_STACK:-True}" +if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then + export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO:-/cvmfs/software.eessi.io}" + export EESSI_VERSION="${EESSI_VERSION:-2023.06}" +fi +export RFM_CONFIG_FILES="${RFM_CONFIG_FILES:-${TEMPDIR}/configs/config/${EESSI_CI_SYSTEM_NAME}.py}" +export RFM_CHECK_SEARCH_PATH="${RFM_CHECK_SEARCH_PATH:-${TEMPDIR}/test-suite/eessi/testsuite/tests/}" +export RFM_CHECK_SEARCH_RECURSIVE="${RFM_CHECK_SEARCH_RECURSIVE:-1}" +export RFM_PREFIX="${RFM_PREFIX:-${HOME}/reframe_CI_runs}" +# 10 minutes short of 1 day, since typically the test suite will be run daily. +# This will prevent multiple ReFrame runs from piling up and exceeding the quota on our Magic Castle clusters +export REFRAME_TIMEOUT="${REFRAME_TIMEOUT:-1430m}" +export UNSET_MODULEPATH="${UNSET_MODULEPATH:-True}" +export SET_LOCAL_MODULE_ENV="${SET_LOCAL_MODULE_ENV:-False}" +# If false, the script under versions//init/bash to initialize the environment will be sourced instead +export USE_EESSI_MODULE="${USE_EESSI_MODULE:-True}" # Create virtualenv for ReFrame using system python python3 -m venv "${TEMPDIR}"/reframe_venv @@ -149,48 +119,74 @@ if [ "$SET_LOCAL_MODULE_ENV" == "True" ]; then module load "${LOCAL_MODULES}" fi -# Start the EESSI environment +# Add correct path to MODULEPATH (only once, so outside the loop below) if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then - eessi_init_path="${EESSI_CVMFS_REPO}"/versions/"${EESSI_VERSION}"/init/bash - source "${eessi_init_path}" + if [ "$USE_EESSI_MODULE" == "True" ]; then + if command -v module &>/dev/null; then + # Module command available + module use "${EESSI_CVMFS_REPO}/init/modules/" + fi + fi fi -# Needed in order to make sure the reframe from our TEMPDIR is first on the PATH, -# prior to the one shipped with the 2021.12 compat layer -# Probably no longer needed with newer compat layer that doesn't include ReFrame -deactivate -source "${TEMPDIR}"/reframe_venv/bin/activate - -# Print ReFrame config -echo "Starting CI run with the follwing settings:" -echo "" -echo "TEMPDIR: ${TEMPDIR}" -echo "PYTHONPATH: ${PYTHONPATH}" -echo "EESSI test suite URL: ${EESSI_TESTSUITE_URL}" -echo "EESSI test suite version: ${EESSI_TESTSUITE_BRANCH}" -echo "EESSI test suite URL for configs: ${EESSI_CONFIGS_TESTSUITE_URL}" -echo "EESSI test suite version for configs: ${EESSI_CONFIGS_TESTSUITE_BRANCH}" -echo "HPCtestlib from ReFrame URL: ${REFRAME_URL}" -echo "HPCtestlib from ReFrame branch: ${REFRAME_BRANCH}" -echo "ReFrame executable: $(which reframe)" -echo "ReFrame version: $(reframe --version)" -echo "ReFrame config file: ${RFM_CONFIG_FILES}" -echo "ReFrame check search path: ${RFM_CHECK_SEARCH_PATH}" -echo "ReFrame check search recursive: ${RFM_CHECK_SEARCH_RECURSIVE}" -echo "ReFrame prefix: ${RFM_PREFIX}" -echo "ReFrame args: ${REFRAME_ARGS}" -echo "Using EESSI: ${USE_EESSI_SOFTWARE_STACK}" -echo "Using local software stack ${SET_LOCAL_MODULE_ENV}" -echo "MODULEPATH: ${MODULEPATH}" -echo "" - -# List tests -echo "Listing tests:" -reframe ${REFRAME_ARGS} --list - -# Run -echo "Run tests:" -timeout -v --preserve-status -s SIGTERM ${REFRAME_TIMEOUT} reframe ${REFRAME_ARGS} --run --setvar EESSI_CONFIGS_URL=${EESSI_CONFIGS_TESTSUITE_URL} --setvar EESSI_CONFIGS_BRANCH=${EESSI_CONFIGS_TESTSUITE_BRANCH} +# EESSI_VERSION can consist of multiple, comma-separated entries. Loop over those: +IFS=',' read -r -a eessi_version_array <<< "$EESSI_VERSION" +for EESSI_VERSION in "${eessi_version_array[@]}"; do + # Start the EESSI environment + if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then + if [ "$USE_EESSI_MODULE" == "True" ]; then + if command -v module &>/dev/null; then + # Module command available + module load "EESSI/${EESSI_VERSION}" + else + source "${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/init/lmod/bash" + fi + else + eessi_init_path="${EESSI_CVMFS_REPO}"/versions/"${EESSI_VERSION}"/init/bash + source "${eessi_init_path}" + fi + fi + + # Needed in order to make sure the reframe from our TEMPDIR is first on the PATH, + # prior to the one shipped with the 2021.12 compat layer + # Probably no longer needed with newer compat layer that doesn't include ReFrame + deactivate + source "${TEMPDIR}"/reframe_venv/bin/activate + + # Print ReFrame config + echo "Starting CI run with the follwing settings:" + echo "" + echo "TEMPDIR: ${TEMPDIR}" + echo "PYTHONPATH: ${PYTHONPATH}" + echo "EESSI test suite URL: ${EESSI_TESTSUITE_URL}" + echo "EESSI test suite version: ${EESSI_TESTSUITE_BRANCH}" + echo "EESSI test suite URL for configs: ${EESSI_CONFIGS_TESTSUITE_URL}" + echo "EESSI test suite version for configs: ${EESSI_CONFIGS_TESTSUITE_BRANCH}" + echo "HPCtestlib from ReFrame URL: ${REFRAME_URL}" + echo "HPCtestlib from ReFrame branch: ${REFRAME_BRANCH}" + echo "ReFrame executable: $(which reframe)" + echo "ReFrame version: $(reframe --version)" + echo "ReFrame config file: ${RFM_CONFIG_FILES}" + echo "ReFrame check search path: ${RFM_CHECK_SEARCH_PATH}" + echo "ReFrame check search recursive: ${RFM_CHECK_SEARCH_RECURSIVE}" + echo "ReFrame prefix: ${RFM_PREFIX}" + echo "ReFrame args: ${REFRAME_ARGS}" + echo "Using EESSI: ${USE_EESSI_SOFTWARE_STACK}" + echo "Using the EESSI module: ${USE_EESSI_MODULE}" + echo "Using EESSI version: ${EESSI_VERSION}" + echo "Using local software stack ${SET_LOCAL_MODULE_ENV}" + echo "MODULEPATH: ${MODULEPATH}" + echo "" + + # List tests + echo "Listing tests:" + reframe ${REFRAME_ARGS} --list + + # Run + echo "Run tests:" + timeout -v --preserve-status -s SIGTERM ${REFRAME_TIMEOUT} reframe ${REFRAME_ARGS} --run --setvar EESSI_CONFIGS_URL=${EESSI_CONFIGS_TESTSUITE_URL} --setvar EESSI_CONFIGS_BRANCH=${EESSI_CONFIGS_TESTSUITE_BRANCH} + +done # Cleanup rm -rf "${TEMPDIR}" From 35a8b06c972366b7feab440797bb5fb1e8004aee Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Mon, 19 Jan 2026 17:32:50 +0100 Subject: [PATCH 02/17] Add 2025.06 to default list of EESSI_VERSION --- CI/run_reframe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index fb90e5e4..a13c90e3 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -57,7 +57,7 @@ EESSI_CONFIGS_TESTSUITE_BRANCH="${EESSI_CONFIGS_TESTSUITE_BRANCH:-${EESSI_TESTSU export USE_EESSI_SOFTWARE_STACK="${USE_EESSI_SOFTWARE_STACK:-True}" if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO:-/cvmfs/software.eessi.io}" - export EESSI_VERSION="${EESSI_VERSION:-2023.06}" + export EESSI_VERSION="${EESSI_VERSION:-2023.06,2025.06}" fi export RFM_CONFIG_FILES="${RFM_CONFIG_FILES:-${TEMPDIR}/configs/config/${EESSI_CI_SYSTEM_NAME}.py}" export RFM_CHECK_SEARCH_PATH="${RFM_CHECK_SEARCH_PATH:-${TEMPDIR}/test-suite/eessi/testsuite/tests/}" From e937e4ede9d17a4b471d3180d95cc04e0cba31af Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Mon, 19 Jan 2026 17:41:48 +0100 Subject: [PATCH 03/17] Improve behaviour in case EESSI module is NOT used, or in case local software is tested (in which looping over EESSI_VERSION should also not be done) --- CI/run_reframe.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index a13c90e3..9d0be547 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -131,6 +131,14 @@ fi # EESSI_VERSION can consist of multiple, comma-separated entries. Loop over those: IFS=',' read -r -a eessi_version_array <<< "$EESSI_VERSION" + +# Don't loop over EESSI_VERSIONS if we a) don't use the EESSI software stack or b) don't load it from the module +# In this case, simply only retain the first element of the eessi_version_array to avoid looping +if (( ${#eessi_version_array[@]} > 1 )) && \ + [[ $USE_EESSI_SOFTWARE_STACK == "True" && $USE_EESSI_MODULE != "True" ]]; then + eessi_version_array=("${eessi_version_array[0]}") +fi + for EESSI_VERSION in "${eessi_version_array[@]}"; do # Start the EESSI environment if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then From ed543788a59e543ef35a2d0400b8a94b8761e9b1 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen <33718780+casparvl@users.noreply.github.com> Date: Thu, 9 Apr 2026 13:52:28 +0200 Subject: [PATCH 04/17] Apply suggestion from @casparvl --- CI/run_reframe.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index 9d0be547..4c1dd25a 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -126,6 +126,9 @@ if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then # Module command available module use "${EESSI_CVMFS_REPO}/init/modules/" fi + else + eessi_init_path="${EESSI_CVMFS_REPO}"/versions/"${EESSI_VERSION}"/init/bash + source "${eessi_init_path}" fi fi From 727088749e6a10e86b2fc265d2c8e136d8c140bd Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen <33718780+casparvl@users.noreply.github.com> Date: Thu, 9 Apr 2026 13:53:53 +0200 Subject: [PATCH 05/17] Apply suggestion from @casparvl --- CI/run_reframe.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index 4c1dd25a..9d0be547 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -126,9 +126,6 @@ if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then # Module command available module use "${EESSI_CVMFS_REPO}/init/modules/" fi - else - eessi_init_path="${EESSI_CVMFS_REPO}"/versions/"${EESSI_VERSION}"/init/bash - source "${eessi_init_path}" fi fi From 47e28b3ff3a76f15db3c351e6c35806a31971461 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Thu, 30 Apr 2026 16:01:59 +0200 Subject: [PATCH 06/17] Remove loop. Still WIP. But need to figure out if we should specify the programming environments as part of the ReFrame args first --- CI/run_reframe.sh | 132 ++++++++++++++++++++-------------------------- 1 file changed, 58 insertions(+), 74 deletions(-) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index 9d0be547..90e250b5 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -54,6 +54,7 @@ if [ -z "${EESSI_TESTSUITE_BRANCH}" ]; then fi EESSI_CONFIGS_TESTSUITE_URL="${EESSI_CONFIGS_TESTSUITE_URL:-${EESSI_TESTSUITE_URL}}" EESSI_CONFIGS_TESTSUITE_BRANCH="${EESSI_CONFIGS_TESTSUITE_BRANCH:-${EESSI_TESTSUITE_BRANCH}}" +export USE_MODULECMD_FROM_EESSI_VERSION="${USE_MODULECMD_FROM_EESSI_VERSION:-2025.06}" export USE_EESSI_SOFTWARE_STACK="${USE_EESSI_SOFTWARE_STACK:-True}" if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO:-/cvmfs/software.eessi.io}" @@ -68,8 +69,6 @@ export RFM_PREFIX="${RFM_PREFIX:-${HOME}/reframe_CI_runs}" export REFRAME_TIMEOUT="${REFRAME_TIMEOUT:-1430m}" export UNSET_MODULEPATH="${UNSET_MODULEPATH:-True}" export SET_LOCAL_MODULE_ENV="${SET_LOCAL_MODULE_ENV:-False}" -# If false, the script under versions//init/bash to initialize the environment will be sourced instead -export USE_EESSI_MODULE="${USE_EESSI_MODULE:-True}" # Create virtualenv for ReFrame using system python python3 -m venv "${TEMPDIR}"/reframe_venv @@ -119,82 +118,67 @@ if [ "$SET_LOCAL_MODULE_ENV" == "True" ]; then module load "${LOCAL_MODULES}" fi -# Add correct path to MODULEPATH (only once, so outside the loop below) -if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then - if [ "$USE_EESSI_MODULE" == "True" ]; then - if command -v module &>/dev/null; then - # Module command available - module use "${EESSI_CVMFS_REPO}/init/modules/" - fi +# With https://github.com/EESSI/test-suite/pull/326 we no longer need to load the EESSI module +# before running the reframe command (reframe will load the modules for us) +# However, on systems in which there is no module command, we do need to initialize an +# EESSI environment to get a module command +if ! command -v module &>/dev/null; then + # No module command available + if [ ! -z "$USE_MODULECMD_FROM_EESSI_VERSION" ] ; then + echo "Using module command from EESSI version ${USE_MODULECMD_FROM_EESSI_VERSION}" + source "${EESSI_CVMFS_REPO}/versions/${USE_MODULECMD_FROM_EESSI_VERSION}/init/lmod/bash" + module unload EESSI + else + msg="No module command available, and this CI run was not configured to use the EESSI module command." + msg="$msg Consider setting 'USE_MODULECMD_FROM_EESSI_VERSION=' in your CI runs to use a module" + msg="$msg command from the EESSI compatibility layer. Exiting..." + echo $msg + exit 1 + fi +else + # Module command available. Make sure the EESSI modules are on the PATH if we are testing EESSI environments + if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then + module use "${EESSI_CVMFS_REPO}/init/modules/" fi fi -# EESSI_VERSION can consist of multiple, comma-separated entries. Loop over those: -IFS=',' read -r -a eessi_version_array <<< "$EESSI_VERSION" - -# Don't loop over EESSI_VERSIONS if we a) don't use the EESSI software stack or b) don't load it from the module -# In this case, simply only retain the first element of the eessi_version_array to avoid looping -if (( ${#eessi_version_array[@]} > 1 )) && \ - [[ $USE_EESSI_SOFTWARE_STACK == "True" && $USE_EESSI_MODULE != "True" ]]; then - eessi_version_array=("${eessi_version_array[0]}") -fi +# Needed in order to make sure the reframe from our TEMPDIR is first on the PATH, +# prior to the one shipped with the 2021.12 compat layer +# Probably no longer needed with newer compat layer that doesn't include ReFrame +deactivate +source "${TEMPDIR}"/reframe_venv/bin/activate -for EESSI_VERSION in "${eessi_version_array[@]}"; do - # Start the EESSI environment - if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then - if [ "$USE_EESSI_MODULE" == "True" ]; then - if command -v module &>/dev/null; then - # Module command available - module load "EESSI/${EESSI_VERSION}" - else - source "${EESSI_CVMFS_REPO}/versions/${EESSI_VERSION}/init/lmod/bash" - fi - else - eessi_init_path="${EESSI_CVMFS_REPO}"/versions/"${EESSI_VERSION}"/init/bash - source "${eessi_init_path}" - fi - fi - - # Needed in order to make sure the reframe from our TEMPDIR is first on the PATH, - # prior to the one shipped with the 2021.12 compat layer - # Probably no longer needed with newer compat layer that doesn't include ReFrame - deactivate - source "${TEMPDIR}"/reframe_venv/bin/activate - - # Print ReFrame config - echo "Starting CI run with the follwing settings:" - echo "" - echo "TEMPDIR: ${TEMPDIR}" - echo "PYTHONPATH: ${PYTHONPATH}" - echo "EESSI test suite URL: ${EESSI_TESTSUITE_URL}" - echo "EESSI test suite version: ${EESSI_TESTSUITE_BRANCH}" - echo "EESSI test suite URL for configs: ${EESSI_CONFIGS_TESTSUITE_URL}" - echo "EESSI test suite version for configs: ${EESSI_CONFIGS_TESTSUITE_BRANCH}" - echo "HPCtestlib from ReFrame URL: ${REFRAME_URL}" - echo "HPCtestlib from ReFrame branch: ${REFRAME_BRANCH}" - echo "ReFrame executable: $(which reframe)" - echo "ReFrame version: $(reframe --version)" - echo "ReFrame config file: ${RFM_CONFIG_FILES}" - echo "ReFrame check search path: ${RFM_CHECK_SEARCH_PATH}" - echo "ReFrame check search recursive: ${RFM_CHECK_SEARCH_RECURSIVE}" - echo "ReFrame prefix: ${RFM_PREFIX}" - echo "ReFrame args: ${REFRAME_ARGS}" - echo "Using EESSI: ${USE_EESSI_SOFTWARE_STACK}" - echo "Using the EESSI module: ${USE_EESSI_MODULE}" - echo "Using EESSI version: ${EESSI_VERSION}" - echo "Using local software stack ${SET_LOCAL_MODULE_ENV}" - echo "MODULEPATH: ${MODULEPATH}" - echo "" - - # List tests - echo "Listing tests:" - reframe ${REFRAME_ARGS} --list - - # Run - echo "Run tests:" - timeout -v --preserve-status -s SIGTERM ${REFRAME_TIMEOUT} reframe ${REFRAME_ARGS} --run --setvar EESSI_CONFIGS_URL=${EESSI_CONFIGS_TESTSUITE_URL} --setvar EESSI_CONFIGS_BRANCH=${EESSI_CONFIGS_TESTSUITE_BRANCH} - -done +# Print ReFrame config +echo "Starting CI run with the follwing settings:" +echo "" +echo "TEMPDIR: ${TEMPDIR}" +echo "PYTHONPATH: ${PYTHONPATH}" +echo "EESSI test suite URL: ${EESSI_TESTSUITE_URL}" +echo "EESSI test suite version: ${EESSI_TESTSUITE_BRANCH}" +echo "EESSI test suite URL for configs: ${EESSI_CONFIGS_TESTSUITE_URL}" +echo "EESSI test suite version for configs: ${EESSI_CONFIGS_TESTSUITE_BRANCH}" +echo "HPCtestlib from ReFrame URL: ${REFRAME_URL}" +echo "HPCtestlib from ReFrame branch: ${REFRAME_BRANCH}" +echo "ReFrame executable: $(which reframe)" +echo "ReFrame version: $(reframe --version)" +echo "ReFrame config file: ${RFM_CONFIG_FILES}" +echo "ReFrame check search path: ${RFM_CHECK_SEARCH_PATH}" +echo "ReFrame check search recursive: ${RFM_CHECK_SEARCH_RECURSIVE}" +echo "ReFrame prefix: ${RFM_PREFIX}" +echo "Testing ReFrame programming environments: ${EESSI_VERSION}" +echo "ReFrame args: ${REFRAME_ARGS}" +echo "Using EESSI: ${USE_EESSI_SOFTWARE_STACK}" +echo "Using local software stack ${SET_LOCAL_MODULE_ENV}" +echo "MODULEPATH: ${MODULEPATH}" +echo "" + +# List tests +echo "Listing tests:" +reframe ${REFRAME_ARGS} --list + +# Run +echo "Run tests:" +timeout -v --preserve-status -s SIGTERM ${REFRAME_TIMEOUT} reframe ${REFRAME_ARGS} --run --setvar EESSI_CONFIGS_URL=${EESSI_CONFIGS_TESTSUITE_URL} --setvar EESSI_CONFIGS_BRANCH=${EESSI_CONFIGS_TESTSUITE_BRANCH} # Cleanup rm -rf "${TEMPDIR}" From d13df26526ddf0d794b11347420f92934da55dc8 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Thu, 30 Apr 2026 16:45:05 +0200 Subject: [PATCH 07/17] Make sure we support EESSI and local programming environments, and pass extra options to reframe to limit to the programming environments that are specified. If both lists are emtpy, all programming environments are tested --- CI/run_reframe.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index 90e250b5..ce35252e 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -58,7 +58,7 @@ export USE_MODULECMD_FROM_EESSI_VERSION="${USE_MODULECMD_FROM_EESSI_VERSION:-202 export USE_EESSI_SOFTWARE_STACK="${USE_EESSI_SOFTWARE_STACK:-True}" if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO:-/cvmfs/software.eessi.io}" - export EESSI_VERSION="${EESSI_VERSION:-2023.06,2025.06}" + export REFRAME_EESSI_PROGRAMMING_ENVS="${REFRAME_EESSI_PROGRAMMING_ENVS:-EESSI-2023.06,EESSI-2025.06}" fi export RFM_CONFIG_FILES="${RFM_CONFIG_FILES:-${TEMPDIR}/configs/config/${EESSI_CI_SYSTEM_NAME}.py}" export RFM_CHECK_SEARCH_PATH="${RFM_CHECK_SEARCH_PATH:-${TEMPDIR}/test-suite/eessi/testsuite/tests/}" @@ -68,6 +68,7 @@ export RFM_PREFIX="${RFM_PREFIX:-${HOME}/reframe_CI_runs}" # This will prevent multiple ReFrame runs from piling up and exceeding the quota on our Magic Castle clusters export REFRAME_TIMEOUT="${REFRAME_TIMEOUT:-1430m}" export UNSET_MODULEPATH="${UNSET_MODULEPATH:-True}" +export REFRAME_LOCAL_PROGRAMMING_ENVS="${REFRAME_LOCAL_PROGRAMMING_ENVS:-}" # Assumed to be a comma seperated list export SET_LOCAL_MODULE_ENV="${SET_LOCAL_MODULE_ENV:-False}" # Create virtualenv for ReFrame using system python @@ -124,7 +125,7 @@ fi # EESSI environment to get a module command if ! command -v module &>/dev/null; then # No module command available - if [ ! -z "$USE_MODULECMD_FROM_EESSI_VERSION" ] ; then + if [ ! -z "$USE_MODULECMD_FROM_EESSI_VERSION" ]; then echo "Using module command from EESSI version ${USE_MODULECMD_FROM_EESSI_VERSION}" source "${EESSI_CVMFS_REPO}/versions/${USE_MODULECMD_FROM_EESSI_VERSION}/init/lmod/bash" module unload EESSI @@ -148,6 +149,16 @@ fi deactivate source "${TEMPDIR}"/reframe_venv/bin/activate +# Modify the REFRAME_ARGS to take the requested programming environments into account +REFRAME_PROGRAMMING_ENVS="${REFRAME_LOCAL_PROGRAMMING_ENVS},${REFRAME_EESSI_PROGRAMMING_ENVS}" +REFRAME_PROGRAMMING_ENVS="${REFRAME_PROGRAMMING_ENVS%,}" # Remove any leading comma in case 1st list is empty +REFRAME_PROGRAMMING_ENVS="${REFRAME_PROGRAMMING_ENVS#,}" # Remove any trailing comma in case 2nd list is empty +# Replace commas by | since ReFrame expects a regex and we want tests to run if they match any of the programming envs +REFRAME_PROGRAMMING_ENVS_PIPED="${REFRAME_PROGRAMMING_ENVS//,/|}" +if [ -z "$REFRAME_PROGRAMMING_ENVS_PIPED" ]; then + REFRAME_ARGS="${REFRAME_ARGS} -p '$REFRAME_PROGRAMMING_ENVS_PIPED'" +fi + # Print ReFrame config echo "Starting CI run with the follwing settings:" echo "" @@ -165,7 +176,7 @@ echo "ReFrame config file: ${RFM_CONFIG_FILES}" echo "ReFrame check search path: ${RFM_CHECK_SEARCH_PATH}" echo "ReFrame check search recursive: ${RFM_CHECK_SEARCH_RECURSIVE}" echo "ReFrame prefix: ${RFM_PREFIX}" -echo "Testing ReFrame programming environments: ${EESSI_VERSION}" +echo "Testing ReFrame programming environments: ${REFRAME_PROGRAMMING_ENVS}" echo "ReFrame args: ${REFRAME_ARGS}" echo "Using EESSI: ${USE_EESSI_SOFTWARE_STACK}" echo "Using local software stack ${SET_LOCAL_MODULE_ENV}" From 89b1ace2f8a93f64bbd16bd3bde9c3d324bafc68 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Wed, 17 Jun 2026 11:27:29 +0200 Subject: [PATCH 08/17] Remove stray 'REFRAME_URL=' --- CI/run_reframe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index ce35252e..bc19db57 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -39,7 +39,7 @@ source "${CI_CONFIG}" # Set default configuration, but let anything set by CI_CONFIG take priority REFRAME_ARGS="${REFRAME_ARGS:---tag CI --tag 1_node}" REFRAME_VERSION="${REFRAME_VERSION:-4.8.1}" -REFRAME_URL="${REFRAME_URL:-REFRAME_URL=https://github.com/reframe-hpc/reframe.git}" +REFRAME_URL="${REFRAME_URL:-https://github.com/reframe-hpc/reframe.git}" REFRAME_BRANCH="${REFRAME_BRANCH:-v${REFRAME_VERSION}}" EESSI_TESTSUITE_URL="${EESSI_TESTSUITE_URL:-https://github.com/EESSI/test-suite.git}" if [ -z "${EESSI_TESTSUITE_BRANCH}" ]; then From c1e3ded150e27768cb4e248d2c7bba10c94ff121 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Wed, 17 Jun 2026 12:00:15 +0200 Subject: [PATCH 09/17] No longer needed now that we've internalized the hpctestlib into EESSI test suite --- CI/run_reframe.sh | 6 ------ 1 file changed, 6 deletions(-) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index bc19db57..3989096f 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -77,12 +77,6 @@ source "${TEMPDIR}"/reframe_venv/bin/activate python3 -m pip install --upgrade pip python3 -m pip install reframe-hpc=="${REFRAME_VERSION}" -# Clone reframe repo to have the hpctestlib: -REFRAME_CLONE_ARGS="${REFRAME_URL} --branch ${REFRAME_BRANCH} --depth 1 ${TEMPDIR}/reframe" -echo "Cloning ReFrame repo: git clone ${REFRAME_CLONE_ARGS}" -git clone ${REFRAME_CLONE_ARGS} -export PYTHONPATH="${PYTHONPATH}":"${TEMPDIR}"/reframe - # Clone configs from test suite repo EESSI_CONFIGS_CLONE_ARGS="-n --filter=tree:0 ${EESSI_CONFIGS_TESTSUITE_URL} --branch ${EESSI_CONFIGS_TESTSUITE_BRANCH} --depth 1 ${TEMPDIR}/configs" echo "Cloning configs from EESSI test suite repo:" From 2bd4564d35a175e1efe4a583e72addff877d9463 Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Wed, 17 Jun 2026 13:11:00 +0200 Subject: [PATCH 10/17] Remove more things related to cloning the reframe repo for the hpctestlib --- CI/run_reframe.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index 2f5d078c..cb55d4d4 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -39,8 +39,6 @@ source "${CI_CONFIG}" # Set default configuration, but let anything set by CI_CONFIG take priority REFRAME_ARGS="${REFRAME_ARGS:---tag CI --tag 1_node}" REFRAME_VERSION="${REFRAME_VERSION:-4.8.1}" -REFRAME_URL="${REFRAME_URL:-https://github.com/reframe-hpc/reframe.git}" -REFRAME_BRANCH="${REFRAME_BRANCH:-v${REFRAME_VERSION}}" EESSI_TESTSUITE_URL="${EESSI_TESTSUITE_URL:-https://github.com/EESSI/test-suite.git}" if [ -z "${EESSI_TESTSUITE_BRANCH}" ]; then git clone -n --depth=1 --filter=tree:0 ${EESSI_TESTSUITE_URL} "${TEMPDIR}/test-suite-version-checkout" @@ -162,8 +160,6 @@ echo "EESSI test suite URL: ${EESSI_TESTSUITE_URL}" echo "EESSI test suite version: ${EESSI_TESTSUITE_BRANCH}" echo "EESSI test suite URL for configs: ${EESSI_CONFIGS_TESTSUITE_URL}" echo "EESSI test suite version for configs: ${EESSI_CONFIGS_TESTSUITE_BRANCH}" -echo "HPCtestlib from ReFrame URL: ${REFRAME_URL}" -echo "HPCtestlib from ReFrame branch: ${REFRAME_BRANCH}" echo "ReFrame executable: $(which reframe)" echo "ReFrame version: $(reframe --version)" echo "ReFrame config file: ${RFM_CONFIG_FILES}" From 7b25663427215f4706ee55a580a15d47a1340efa Mon Sep 17 00:00:00 2001 From: Caspar van Leeuwen Date: Wed, 1 Jul 2026 15:49:18 +0200 Subject: [PATCH 11/17] Corrected path, it was missing 'versions' in the prefix --- config/aws_mc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/aws_mc.py b/config/aws_mc.py index 4e8a6fb5..13b02e9f 100644 --- a/config/aws_mc.py +++ b/config/aws_mc.py @@ -113,7 +113,7 @@ ] + list(SCALES.keys()), 'prepare_cmds': [ # This system doesn't have an lmod installation by default, so source one from EESSI - 'source /cvmfs/software.eessi.io/2025.06/init/lmod/bash', + 'source /cvmfs/software.eessi.io/versions/2025.06/init/lmod/bash', 'module unload EESSI', # Required when using srun as launcher with --export=NONE in partition access, in order to ensure job # steps inherit environment. It doesn't hurt to define this even if srun is not used From d72a9e10f35470c7fd8a59772a86ff46c6c4b233 Mon Sep 17 00:00:00 2001 From: casparvl Date: Fri, 10 Jul 2026 10:35:25 +0000 Subject: [PATCH 12/17] Add a default env on the AWS cluster for testing with run_reframe.sh --- config/aws_mc.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config/aws_mc.py b/config/aws_mc.py index 13b02e9f..ac086e11 100644 --- a/config/aws_mc.py +++ b/config/aws_mc.py @@ -93,6 +93,12 @@ ] }, ], + # JUST FOR TESTING, SHOULD BE REMOVED BEFORE MERGE + 'environments': [ + { + 'name': 'default', + } + ], 'logging': common_logging_config(reframe_prefix), 'general': [ { From 9284d09dc73304f5b1fe8aecf66e24084e7cb092 Mon Sep 17 00:00:00 2001 From: casparvl Date: Fri, 10 Jul 2026 12:15:36 +0000 Subject: [PATCH 13/17] Forgot to actually add the default environment to the list of valid environments for the partition --- config/aws_mc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/config/aws_mc.py b/config/aws_mc.py index ac086e11..028c3000 100644 --- a/config/aws_mc.py +++ b/config/aws_mc.py @@ -34,6 +34,7 @@ 'name': 'x86_64-generic-16c-30gb', 'access': ['--partition=x86-64-generic-node', '--export=NONE'], 'descr': 'Generic (Haswell), 16 cores, 30 GB', + 'environs': ['default'], }, { 'name': 'x86_64-haswell-16c-30gb', From a082116855a66d030ac6993d6b716fbf4520f88d Mon Sep 17 00:00:00 2001 From: casparvl Date: Fri, 10 Jul 2026 13:38:31 +0000 Subject: [PATCH 14/17] Add early exit if no environment is to be tested. And make sure any modulepath that is already set in the environment is propagated if UNSET_MODULEPATH is NOT True --- CI/run_reframe.sh | 54 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index cb55d4d4..e5f89fbc 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -37,8 +37,12 @@ fi source "${CI_CONFIG}" # Set default configuration, but let anything set by CI_CONFIG take priority +# Arguments that will be passed to the `reframe` command REFRAME_ARGS="${REFRAME_ARGS:---tag CI --tag 1_node}" +# Version of ReFrame that will be pip-installed REFRAME_VERSION="${REFRAME_VERSION:-4.8.1}" +# URL that will be used to clone the testsuite from. +# The same URL will be used by default to get the ReFrame config files from, unless EESSI_CONFIGS_TESTSUITE_URL is explicitely set EESSI_TESTSUITE_URL="${EESSI_TESTSUITE_URL:-https://github.com/EESSI/test-suite.git}" if [ -z "${EESSI_TESTSUITE_BRANCH}" ]; then git clone -n --depth=1 --filter=tree:0 ${EESSI_TESTSUITE_URL} "${TEMPDIR}/test-suite-version-checkout" @@ -50,25 +54,49 @@ if [ -z "${EESSI_TESTSUITE_BRANCH}" ]; then EESSI_TESTSUITE_BRANCH="${LATEST_VERSION}" cd ${TEMPDIR} fi +# The URL used to clone the ReFrame configuration files from EESSI_CONFIGS_TESTSUITE_URL="${EESSI_CONFIGS_TESTSUITE_URL:-${EESSI_TESTSUITE_URL}}" +# The branch to clone for the ReFrame configuration files EESSI_CONFIGS_TESTSUITE_BRANCH="${EESSI_CONFIGS_TESTSUITE_BRANCH:-${EESSI_TESTSUITE_BRANCH}}" +# If no module command is available from the system, the lmod init script will be sourced from the EESSI +# version defined by USE_MODULECMD_FROM_EESSI_VERSION export USE_MODULECMD_FROM_EESSI_VERSION="${USE_MODULECMD_FROM_EESSI_VERSION:-2025.06}" +# The CVMFS repository that will be used to provide the module command or +# (if testing the EESSI software stack AND a module command is already available) to provide the modules to initialize EESSI +export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO:-/cvmfs/software.eessi.io}" +# Determines if the EESSI software stack will be tested (as opposed to just local modules) export USE_EESSI_SOFTWARE_STACK="${USE_EESSI_SOFTWARE_STACK:-True}" if [ "$USE_EESSI_SOFTWARE_STACK" == "True" ]; then - export EESSI_CVMFS_REPO="${EESSI_CVMFS_REPO:-/cvmfs/software.eessi.io}" + # Which versions of EESSI will be tested. Note that these are names of ReFrame programming environments. + # These need to match names that are defined in the ReFrame configuration file export REFRAME_EESSI_PROGRAMMING_ENVS="${REFRAME_EESSI_PROGRAMMING_ENVS:-EESSI-2023.06,EESSI-2025.06}" fi +# Which ReFrame configuration file to use. +# Defaults to the ones from the EESSI_CONFIGS_TESTSUITE_URL and EESSI_CONFIGS_TESTSUITE_BRANCH for the provided EESSI_CI_SYSTEM_NAME export RFM_CONFIG_FILES="${RFM_CONFIG_FILES:-${TEMPDIR}/configs/config/${EESSI_CI_SYSTEM_NAME}.py}" +# Path that ReFrame should search for tests export RFM_CHECK_SEARCH_PATH="${RFM_CHECK_SEARCH_PATH:-${TEMPDIR}/test-suite/eessi/testsuite/tests/}" +# Should ReFrame search the path recursively export RFM_CHECK_SEARCH_RECURSIVE="${RFM_CHECK_SEARCH_RECURSIVE:-1}" +# Where should reframe store the staging / output dirs etc export RFM_PREFIX="${RFM_PREFIX:-${HOME}/reframe_CI_runs}" # 10 minutes short of 1 day, since typically the test suite will be run daily. # This will prevent multiple ReFrame runs from piling up and exceeding the quota on our Magic Castle clusters export REFRAME_TIMEOUT="${REFRAME_TIMEOUT:-1430m}" +# Unsets the MODULEPATH before loading any EESSI or local environment modules export UNSET_MODULEPATH="${UNSET_MODULEPATH:-True}" +# Which local programming environments to test. Note that these are names of ReFrame programming environments. +# These need to match names that are defined in the ReFrame configuration file export REFRAME_LOCAL_PROGRAMMING_ENVS="${REFRAME_LOCAL_PROGRAMMING_ENVS:-}" # Assumed to be a comma seperated list +# Do a 'module load ${LOCAL_MODULES}' before loading other modules (obsolete? Should be handled by ReFrame programming envs now) export SET_LOCAL_MODULE_ENV="${SET_LOCAL_MODULE_ENV:-False}" +# Check that SOME programming env has been defined. If not, exit early with instructions +if [ -z $REFRAME_EESSI_PROGRAMMING_ENVS ] && [ -z $REFRAME_LOCAL_PROGRAMMING_ENVS ]; then + echo "You should define at least one ReFrame programming environment that needs to be tested (by defining either REFRAME_EESSI_PROGRAMMING_ENVS or REFRAME_LOCAL_PROGRAMMING_ENVS). Exiting..." + exit 1 +fi + # Create virtualenv for ReFrame using system python python3 -m venv "${TEMPDIR}"/reframe_venv source "${TEMPDIR}"/reframe_venv/bin/activate @@ -90,7 +118,6 @@ git checkout echo "cd ${TEMPDIR}" cd ${TEMPDIR} - # Clone test suite repo EESSI_CLONE_ARGS="${EESSI_TESTSUITE_URL} --branch ${EESSI_TESTSUITE_BRANCH} --depth 1 ${TEMPDIR}/test-suite" echo "Cloning EESSI repo: git clone ${EESSI_CLONE_ARGS}" @@ -98,8 +125,13 @@ git clone ${EESSI_CLONE_ARGS} export PYTHONPATH="${PYTHONPATH}":"${TEMPDIR}"/test-suite/ # Unset the ModulePath on systems where it is required +unset MODULEPATH_ORIGINAL if [ "$UNSET_MODULEPATH" == "True" ]; then unset MODULEPATH +else + # Store the original modulepath. If we need to use the module command from EESSI, we need + # to restore this modulepath after initializing the module command + MODULEPATH_ORIGINAL=$MODULEPATH fi # Set local module environment @@ -121,6 +153,10 @@ if ! command -v module &>/dev/null; then echo "Using module command from EESSI version ${USE_MODULECMD_FROM_EESSI_VERSION}" source "${EESSI_CVMFS_REPO}/versions/${USE_MODULECMD_FROM_EESSI_VERSION}/init/lmod/bash" module unload EESSI + if [ ! -z "$MODULEPATH_ORIGINAL" ]; then + echo "Prepending original modulepath: $MODULEPATH_ORIGINAL" + module use "$MODULEPATH_ORIGINAL" + fi else msg="No module command available, and this CI run was not configured to use the EESSI module command." msg="$msg Consider setting 'USE_MODULECMD_FROM_EESSI_VERSION=' in your CI runs to use a module" @@ -147,8 +183,18 @@ REFRAME_PROGRAMMING_ENVS="${REFRAME_PROGRAMMING_ENVS%,}" # Remove any leading c REFRAME_PROGRAMMING_ENVS="${REFRAME_PROGRAMMING_ENVS#,}" # Remove any trailing comma in case 2nd list is empty # Replace commas by | since ReFrame expects a regex and we want tests to run if they match any of the programming envs REFRAME_PROGRAMMING_ENVS_PIPED="${REFRAME_PROGRAMMING_ENVS//,/|}" -if [ -z "$REFRAME_PROGRAMMING_ENVS_PIPED" ]; then - REFRAME_ARGS="${REFRAME_ARGS} -p '$REFRAME_PROGRAMMING_ENVS_PIPED'" +# This should always be true, as either REFRAME_LOCAL_PROGRAMMING_ENVS or REFRAME_EESSI_PROGRAMMING_ENVS should be +# defined (otherwise this script would have already hit an early exit, see above). But check in case the manipulation +# of these envirionment variables above somehow failed +if [ -n "$REFRAME_PROGRAMMING_ENVS_PIPED" ]; then + REFRAME_ARGS="${REFRAME_ARGS} -p $REFRAME_PROGRAMMING_ENVS_PIPED" +else + msg="REFRAME_PROGRAMMING_ENVS_PIPED appears to be unset or emtpy. This should never happen." + msg="$msg It is constructed from REFRAME_EESSI_PROGRAMMING_ENVS=$REFRAME_EESSI_PROGRAMMING_ENVS and" + msg="$msg REFRAME_LOCAL_PROGRAMMING_ENVS=$REFRAME_LOCAL_PROGRAMMING_ENVS. Please check that either of these" + msg="$msg has been set. Exiting..." + echo "$msg" + exit 1 fi # Print ReFrame config From 6611d8334f91ee79fc3e9dcb910b20d3575db8d4 Mon Sep 17 00:00:00 2001 From: casparvl Date: Fri, 10 Jul 2026 13:50:20 +0000 Subject: [PATCH 15/17] Get rid of legacy code which assumed that the local module environment had to be loaded as part of run_reframe.sh. It should now be a ReFrame environment configured in the ReFrame config file and specified in REFRAME_LOCAL_PROGRAMMING_ENVS --- CI/run_reframe.sh | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index e5f89fbc..53b23fb7 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -88,12 +88,14 @@ export UNSET_MODULEPATH="${UNSET_MODULEPATH:-True}" # Which local programming environments to test. Note that these are names of ReFrame programming environments. # These need to match names that are defined in the ReFrame configuration file export REFRAME_LOCAL_PROGRAMMING_ENVS="${REFRAME_LOCAL_PROGRAMMING_ENVS:-}" # Assumed to be a comma seperated list -# Do a 'module load ${LOCAL_MODULES}' before loading other modules (obsolete? Should be handled by ReFrame programming envs now) -export SET_LOCAL_MODULE_ENV="${SET_LOCAL_MODULE_ENV:-False}" # Check that SOME programming env has been defined. If not, exit early with instructions if [ -z $REFRAME_EESSI_PROGRAMMING_ENVS ] && [ -z $REFRAME_LOCAL_PROGRAMMING_ENVS ]; then - echo "You should define at least one ReFrame programming environment that needs to be tested (by defining either REFRAME_EESSI_PROGRAMMING_ENVS or REFRAME_LOCAL_PROGRAMMING_ENVS). Exiting..." + msg="You should define at least one ReFrame programming environment that needs to be tested (by defining either" + msg="$msg REFRAME_EESSI_PROGRAMMING_ENVS or REFRAME_LOCAL_PROGRAMMING_ENVS). Note that" + msg="$msg REFRAME_EESSI_PROGRAMMING_ENVS can be set indirectly by setting USE_EESSI_SOFTWARE_STACK=True." + msg="$msg Exiting..." + echo "$msg" exit 1 fi @@ -134,15 +136,6 @@ else MODULEPATH_ORIGINAL=$MODULEPATH fi -# Set local module environment -if [ "$SET_LOCAL_MODULE_ENV" == "True" ]; then - if [ -z "${LOCAL_MODULES}" ]; then - echo "You have to add the name of the module in the ci_config.sh file of your system" - exit 1 - fi - module load ${LOCAL_MODULES} -fi - # With https://github.com/EESSI/test-suite/pull/326 we no longer need to load the EESSI module # before running the reframe command (reframe will load the modules for us) # However, on systems in which there is no module command, we do need to initialize an @@ -215,7 +208,6 @@ echo "ReFrame prefix: ${RFM_PREFIX}" echo "Testing ReFrame programming environments: ${REFRAME_PROGRAMMING_ENVS}" echo "ReFrame args: ${REFRAME_ARGS}" echo "Using EESSI: ${USE_EESSI_SOFTWARE_STACK}" -echo "Using local software stack ${SET_LOCAL_MODULE_ENV}" echo "MODULEPATH: ${MODULEPATH}" echo "" From 4eaf857a92df441e9c68aef9e2e4c8942facb8b5 Mon Sep 17 00:00:00 2001 From: casparvl Date: Fri, 10 Jul 2026 14:18:30 +0000 Subject: [PATCH 16/17] Remove local environemnt (was just for testing) --- config/aws_mc.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config/aws_mc.py b/config/aws_mc.py index 028c3000..13b02e9f 100644 --- a/config/aws_mc.py +++ b/config/aws_mc.py @@ -34,7 +34,6 @@ 'name': 'x86_64-generic-16c-30gb', 'access': ['--partition=x86-64-generic-node', '--export=NONE'], 'descr': 'Generic (Haswell), 16 cores, 30 GB', - 'environs': ['default'], }, { 'name': 'x86_64-haswell-16c-30gb', @@ -94,12 +93,6 @@ ] }, ], - # JUST FOR TESTING, SHOULD BE REMOVED BEFORE MERGE - 'environments': [ - { - 'name': 'default', - } - ], 'logging': common_logging_config(reframe_prefix), 'general': [ { From 774f992eca56bcc960746637900b526aa4141002 Mon Sep 17 00:00:00 2001 From: casparvl Date: Fri, 10 Jul 2026 15:23:44 +0000 Subject: [PATCH 17/17] Clarifying comment --- CI/run_reframe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index 53b23fb7..5f5c1499 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -127,7 +127,7 @@ git clone ${EESSI_CLONE_ARGS} export PYTHONPATH="${PYTHONPATH}":"${TEMPDIR}"/test-suite/ # Unset the ModulePath on systems where it is required -unset MODULEPATH_ORIGINAL +unset MODULEPATH_ORIGINAL # Make sure this isn't defined, or we might restore from some external value later on if [ "$UNSET_MODULEPATH" == "True" ]; then unset MODULEPATH else