From 3f998452962c3efa17115469a5bc4c176d3743b1 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Fri, 11 Sep 2026 19:52:23 +0200 Subject: [PATCH 1/5] add check for reframe version --- eessi/testsuite/common_config.py | 39 ++++++++++++++++++++++++++++++++ eessi/testsuite/utils.py | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/eessi/testsuite/common_config.py b/eessi/testsuite/common_config.py index ec330392..ff8797a7 100644 --- a/eessi/testsuite/common_config.py +++ b/eessi/testsuite/common_config.py @@ -1,9 +1,48 @@ import json import os +from reframe.core.config import load_config +from reframe.core.exceptions import ConfigError from reframe.core.logging import getlogger from eessi.testsuite.constants import FEATURES +from eessi.testsuite.utils import EESSIError, log, log_once + + +def reframe_version_is_supported(): + testconfig = load_config() + testconfig.update_config({ + 'systems': [{ + 'name': 'config_probe', + 'hostnames': ['.*'], + 'partitions': [{ + 'name': 'default', + 'scheduler': 'local', + 'launcher': 'local', + 'environs': ['EESSI-2025.06'], + 'features': ['4_nodes'], + }], + }], + 'environments': [{ + 'name': 'EESSI-2025.06', + }], + }, '') + + try: + testconfig.validate() + except ConfigError: + return False + + return True + + +if not reframe_version_is_supported(): + msg = ' '.join([ + 'The EESSI test suite does not support this ReFrame version.', + 'Unsupported versions: 4.10.1, 4.10.2, 4.10.3', + ]) + raise EESSIError(msg) + perflog_format = '|'.join([ '%(check_job_completion_time)s', diff --git a/eessi/testsuite/utils.py b/eessi/testsuite/utils.py index 95d92a2d..41418bfe 100644 --- a/eessi/testsuite/utils.py +++ b/eessi/testsuite/utils.py @@ -46,7 +46,7 @@ class EESSIError(ReframeFatalError): addendum = '\nRerun with `TRACEBACK=1 reframe ...` to show the full traceback.' def __str__(self): - return super().__str__() + EESSIError.addendum + return f'\033[31m{super().__str__()}\033[0m{EESSIError.addendum}' def log(msg, logger=printer.debug): From f1f11f48bdbb1d89e3e590c6a1b69552942f3a62 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Fri, 11 Sep 2026 20:04:30 +0200 Subject: [PATCH 2/5] remove unused imports --- eessi/testsuite/common_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eessi/testsuite/common_config.py b/eessi/testsuite/common_config.py index ff8797a7..6791731c 100644 --- a/eessi/testsuite/common_config.py +++ b/eessi/testsuite/common_config.py @@ -6,7 +6,7 @@ from reframe.core.logging import getlogger from eessi.testsuite.constants import FEATURES -from eessi.testsuite.utils import EESSIError, log, log_once +from eessi.testsuite.utils import EESSIError def reframe_version_is_supported(): From 30ddf736533b2ba78e8525b6a1b58b43ac895304 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Sat, 12 Sep 2026 17:19:23 +0200 Subject: [PATCH 3/5] suggested changes --- config/vsc_sofia.py | 90 ++++++++++++++++++++++++++++++++ eessi/testsuite/common_config.py | 9 ++-- eessi/testsuite/utils.py | 6 ++- 3 files changed, 101 insertions(+), 4 deletions(-) create mode 100644 config/vsc_sofia.py diff --git a/config/vsc_sofia.py b/config/vsc_sofia.py new file mode 100644 index 00000000..10f2e8a4 --- /dev/null +++ b/config/vsc_sofia.py @@ -0,0 +1,90 @@ +from eessi.testsuite.common_config import (common_general_config, common_logging_config, + get_sbatch_account, set_common_required_config) +from eessi.testsuite.constants import EXTRAS, FEATURES, DEVICE_TYPES, SCALES, GPU_VENDORS + + +# Site Configuration +site_configuration = { + 'systems': [ + { + 'name': 'sofia', + 'descr': 'VSC sofia', + 'hostnames': ['*'], + 'modules_system': 'lmod', + 'partitions': [ + { + 'name': 'zen5_dense', + 'access': [f'-A {get_sbatch_account()} --partition=zen5_dense'], + 'descr': '384-core Zen5 CPU partition', + 'processor': { + 'num_cpus': 384, + 'num_sockets': 2, + 'num_cpus_per_socket': 192, + 'num_cpus_per_core': 1, + }, + 'environs': ['localenv'], + 'extras': { + EXTRAS.MEM_PER_NODE: 42008848, + }, + 'features': [ + FEATURES.CPU, + ] + [x for x in SCALES if x not in ['8_nodes', '16_nodes']], + }, + { + 'name': 'zen4_h200', + 'access': [f'-A {get_sbatch_account()} --partition=zen4_h200'], + 'descr': '8-GPU H200 GPU partition', + 'processor': { + 'num_cpus': 192, + 'num_sockets': 2, + 'num_cpus_per_socket': 96, + 'num_cpus_per_core': 1, + }, + 'environs': ['localenv'], + 'extras': { + EXTRAS.MEM_PER_NODE: 33030426, + EXTRAS.GPU_VENDOR: GPU_VENDORS.NVIDIA, + }, + 'features': [ + FEATURES.GPU, + '1_8_node', '1_4_node', '1_2_node', '1_node', '2_nodes', + ], + 'devices': [ + { + 'type': DEVICE_TYPES.GPU, + 'num_devices': 8, + } + ], + }, + ], + }, + ], + 'environments': [ + { + 'name': 'localenv', + }, + ], + 'general': [ + { + **common_general_config(), + } + ], + 'logging': common_logging_config(), +} + +# Additional config options that are the same for all sofia partitions: +common_sofia_config = { + 'scheduler': 'slurm', + 'launcher': 'mpirun', + 'max_jobs': 1, +} +for system in site_configuration['systems']: + for partition in system['partitions']: + partition.update(common_sofia_config) + +# Set common Slurm config options +eessi_prepare_cmds = [ + 'export MODULEPATH=/cvmfs/software.eessi.io/init/modules', + 'export LMOD_IGNORE_CACHE=1', # workaround for Lmod issue, should be fixed with newer Lmod version +] +set_common_required_config(site_configuration, set_memory=False, eessi_prepare_cmds=eessi_prepare_cmds) diff --git a/eessi/testsuite/common_config.py b/eessi/testsuite/common_config.py index 6791731c..46add237 100644 --- a/eessi/testsuite/common_config.py +++ b/eessi/testsuite/common_config.py @@ -20,10 +20,12 @@ def reframe_version_is_supported(): 'scheduler': 'local', 'launcher': 'local', 'environs': ['EESSI-2025.06'], - 'features': ['4_nodes'], + # feature names starting with a digit must be supported + 'features': ['16_nodes'], }], }], 'environments': [{ + # environment names containing dots must be supported 'name': 'EESSI-2025.06', }], }, '') @@ -38,8 +40,9 @@ def reframe_version_is_supported(): if not reframe_version_is_supported(): msg = ' '.join([ - 'The EESSI test suite does not support this ReFrame version.', - 'Unsupported versions: 4.10.1, 4.10.2, 4.10.3', + 'The EESSI test suite does not support this ReFrame version due to feature name and environment name', + 'restrictions. Unsupported versions: 4.10.1, 4.10.2, 4.10.3.', + 'See https://github.com/reframe-hpc/reframe/issues/3723 for details.', ]) raise EESSIError(msg) diff --git a/eessi/testsuite/utils.py b/eessi/testsuite/utils.py index 41418bfe..32f18250 100644 --- a/eessi/testsuite/utils.py +++ b/eessi/testsuite/utils.py @@ -37,6 +37,10 @@ pass +def make_red(msg): + return f'\033[31m{msg}\033[0m' + + class EESSIError(ReframeFatalError): traceback = os.getenv('TRACEBACK', "0") addendum = '' @@ -46,7 +50,7 @@ class EESSIError(ReframeFatalError): addendum = '\nRerun with `TRACEBACK=1 reframe ...` to show the full traceback.' def __str__(self): - return f'\033[31m{super().__str__()}\033[0m{EESSIError.addendum}' + return make_red(super().__str__()) + EESSIError.addendum def log(msg, logger=printer.debug): From a65b78311f1792b540f192cbec7fba45d56b4843 Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Sat, 12 Sep 2026 17:24:28 +0200 Subject: [PATCH 4/5] update --- config/vsc_sofia.py | 90 --------------------------------------------- 1 file changed, 90 deletions(-) delete mode 100644 config/vsc_sofia.py diff --git a/config/vsc_sofia.py b/config/vsc_sofia.py deleted file mode 100644 index 10f2e8a4..00000000 --- a/config/vsc_sofia.py +++ /dev/null @@ -1,90 +0,0 @@ -from eessi.testsuite.common_config import (common_general_config, common_logging_config, - get_sbatch_account, set_common_required_config) -from eessi.testsuite.constants import EXTRAS, FEATURES, DEVICE_TYPES, SCALES, GPU_VENDORS - - -# Site Configuration -site_configuration = { - 'systems': [ - { - 'name': 'sofia', - 'descr': 'VSC sofia', - 'hostnames': ['*'], - 'modules_system': 'lmod', - 'partitions': [ - { - 'name': 'zen5_dense', - 'access': [f'-A {get_sbatch_account()} --partition=zen5_dense'], - 'descr': '384-core Zen5 CPU partition', - 'processor': { - 'num_cpus': 384, - 'num_sockets': 2, - 'num_cpus_per_socket': 192, - 'num_cpus_per_core': 1, - }, - 'environs': ['localenv'], - 'extras': { - EXTRAS.MEM_PER_NODE: 42008848, - }, - 'features': [ - FEATURES.CPU, - ] + [x for x in SCALES if x not in ['8_nodes', '16_nodes']], - }, - { - 'name': 'zen4_h200', - 'access': [f'-A {get_sbatch_account()} --partition=zen4_h200'], - 'descr': '8-GPU H200 GPU partition', - 'processor': { - 'num_cpus': 192, - 'num_sockets': 2, - 'num_cpus_per_socket': 96, - 'num_cpus_per_core': 1, - }, - 'environs': ['localenv'], - 'extras': { - EXTRAS.MEM_PER_NODE: 33030426, - EXTRAS.GPU_VENDOR: GPU_VENDORS.NVIDIA, - }, - 'features': [ - FEATURES.GPU, - '1_8_node', '1_4_node', '1_2_node', '1_node', '2_nodes', - ], - 'devices': [ - { - 'type': DEVICE_TYPES.GPU, - 'num_devices': 8, - } - ], - }, - ], - }, - ], - 'environments': [ - { - 'name': 'localenv', - }, - ], - 'general': [ - { - **common_general_config(), - } - ], - 'logging': common_logging_config(), -} - -# Additional config options that are the same for all sofia partitions: -common_sofia_config = { - 'scheduler': 'slurm', - 'launcher': 'mpirun', - 'max_jobs': 1, -} -for system in site_configuration['systems']: - for partition in system['partitions']: - partition.update(common_sofia_config) - -# Set common Slurm config options -eessi_prepare_cmds = [ - 'export MODULEPATH=/cvmfs/software.eessi.io/init/modules', - 'export LMOD_IGNORE_CACHE=1', # workaround for Lmod issue, should be fixed with newer Lmod version -] -set_common_required_config(site_configuration, set_memory=False, eessi_prepare_cmds=eessi_prepare_cmds) From fd50915aa47f0ae3087688e4952559867b2c85da Mon Sep 17 00:00:00 2001 From: Samuel Moors Date: Sat, 26 Sep 2026 10:20:23 +0200 Subject: [PATCH 5/5] update unsupported versions in error message --- eessi/testsuite/common_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eessi/testsuite/common_config.py b/eessi/testsuite/common_config.py index 46add237..c9011713 100644 --- a/eessi/testsuite/common_config.py +++ b/eessi/testsuite/common_config.py @@ -41,7 +41,7 @@ def reframe_version_is_supported(): if not reframe_version_is_supported(): msg = ' '.join([ 'The EESSI test suite does not support this ReFrame version due to feature name and environment name', - 'restrictions. Unsupported versions: 4.10.1, 4.10.2, 4.10.3.', + 'restrictions. Unsupported versions: >=4.10.1,<4.11', 'See https://github.com/reframe-hpc/reframe/issues/3723 for details.', ]) raise EESSIError(msg)