Skip to content

Conversation

@casparvl
Copy link
Collaborator

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.

Doing a test-run now, but simply listing the tests works.

Caspar van Leeuwen added 3 commits January 19, 2026 17:31
…erpret 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
…software is tested (in which looping over EESSI_VERSION should also not be done)
@casparvl casparvl marked this pull request as draft January 21, 2026 13:22
@casparvl
Copy link
Collaborator Author

casparvl commented Feb 11, 2026

We will probably replace this by an alternative approach using ReFrame environments. Specifically, if you set:

'environs': ['default', 'EESSI-2023.06', 'EESSI-2025.06'],
...
{
            'name': 'EESSI-2023.06',
            'modules': ['EESSI/2023.06']
        },
        {
            'name': 'EESSI-2025.06',
            'modules': ['EESSI/2025.06']
        },
...
# Add each partition name as feature programmatically
# Note that we don't retain the colon to separate - only normal characters are allowed in a feature
for system in site_configuration.get('systems', []):
    for partition in system.get('partitions', []):
        features = partition.get('features', [])
        if 'name' in partition and 'name' in system:
            new_feature = f"{system['name']}{partition['name']}"
            partition['features'] = partition['features'] + [new_feature]

in the ReFrame config, and then use the upstream find_modules function to do:

from reframe.utility import find_modules
...

class EESSI_XYZ(rfm.RunOnlyRegressionTest):
...
    module_info = parameter(find_modules('SciPy-bundle'))
...
    @run_after('init', always_last=True)
    def apply_module_info(self):
        s, e, m = self.module_info
        # Get the system:partition from s, and strip the colon character as those are not allowed in features
        self.valid_systems = [f"+{s.replace(':','')}"]
        self.valid_prog_environs = [e]
        self.modules = [m]
        self.tags = {self.scale}

The regular hooks can then add additional features, and those will be repsected by reframe. E.g. if I hardcode:

self.valid_systems = [f"+{s.replace(':','')} +gpu"]

the above only runs on the subset of partitions that are marked with the "gpu" feature.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant