Software maps to tests¶
Software maps to tests. The map is a file, not a convention in the class name.¶
Software maps to tests through a file.¶
The map says what runs when a module is written. A missing entry is a silent next morning.¶
Questions
What runs when a new module is written in EESSI?
How does CSCS lay out a site suite?
Which of EESSI’s three uses is a pull request, and which is a nightly?
What you will be able to do
Say what a software-to-tests mapping is for, and what a missing entry means the next morning.
Read the CSCS and EESSI directory layouts and say which directory is the machine, which is the tests, and which is CI.
Pick the filter for a contribution check, and the filter for a daily regression, from the same suite.
Before this page
Testing, and the four things it can mean, for the fourth kind.
A portable test leaves the machine in the config, for a test that can run on more than one site.
Portable tests not listed for their software do not run when the software is merged. EESSI provides a mapping file as its answer. CSCS provides a directory of checks and a daily invocation as its answer. Both implement the same concept. The suite names are collected in one location. The collection determines which tests a package requires.
EESSI: three uses, one suite¶
The writing-tests page lists three reasons the suite exists.
One reason is a contribution.
New software is being added to EESSI.
The mapping says which tests now apply.
The bot runs them on the architecture the build targeted, through bot/test.sh.
Another reason is a nightly.
The same tests run on a set of clusters, looking for a performance regression.
A third reason is an end user.
The end user runs one test or the whole suite to see whether this machine plus this EESSI mount actually runs.
Those are three filters over one tree, not three suites.
The CI tag from Parameters multiplies the suite, acting as the contribution filter: Crambin, five minutes, eight cores.
The nightly drops the tag and keeps the HECBioSim ladder.
The end user passes --name GROMACS or does not.
The mapping lives in EESSI/software-layer-scripts, not next to the test classes.
Testing and the four things it can mean already named it: software_to_tests.yml.
Adding GROMACS to the stack without a line in that file gives a green build a module the suite will not touch.
The generalisable rule is that a test has a location, and a result without its location is not a result.
The mapping is that location, written down.
Available tests in the public suite include GROMACS (six HECBioSim systems, implemented on top of ReFrame’s hpctestlib), TensorFlow (the multi‑worker Keras tutorial), CP2K, OpenFOAM and the OSU microbenchmarks.
Each class lives in EESSI/test-suite under eessi/testsuite/tests/apps/.
The mapping connects a module name to those classes.
CSCS: config, checks, CI¶
The CSCS suite eth-cscs/cscs-reframe-tests provides the layout cited in the official ReFrame README, which is the most complete public tree.
The three directories that run a job are config/, checks/, and ci/.
The tree also carries containers/, deprecated_checks/, hpctestlib/, reframe_reporter/, uenv_checks/, and utility/.
cscs-reframe-tests/
├── config/ the machine
├── checks/ the tests
└── ci/ nightly --mode daily_production
List all information the suite knows about on a CSCS system.
reframe -C cscs-reframe-tests/config/cscs.py \
-c cscs-reframe-tests/checks/ -R -l
-C denotes the configuration file that is the machine.
-c denotes the check path.
-R causes recursion.
-l causes listing.
The listing command is the inventory. The nightly job in ci/ runs --mode daily_production.
A site copying this layout does not need EESSI.
The site must have a configuration file describing its partitions, a directory of tests that do not name those partitions, and a nightly job that runs that pair.
portable_tests.md in that tree defines the written rule for what a check may take for granted.
EESSI’s mixin implements the same rule, enforced in code.
LUMI, CSC and why this is a part¶
The CSC Finland computing‑environment course contains ten topics on using Puhti and Mahti, including modules, batch jobs, Allas and containers. The course is not a ReFrame course. LUMI’s user documentation covers the same material for that machine. The ReFrame course consists of CSCS’s webinar, the official tutorial, and EESSI’s writing‑tests page. These pages are ReframeReader rather than a subsection of Testing. The fourth kind of testing has its own layout. The centres that run it teach it as an independent course.
EB-ReFrame-46-1 — Which filter
Three requests. For each, say which invocation, and whether the mapping file has to contain the software yet.
A pull request adding
GROMACS/2024.4-foss-2023bto EESSI. The reviewer asks for the five-minute case.The nightly on a CPU partition, every GROMACS HECBioSim system the suite knows.
A user on a laptop with the EESSI CernVM-FS client, asking whether
mpi4pyimports and reduces.
Solution
reframe --name GROMACS --tag CI -r, after the mapping names GROMACS. Without the mapping entry the bot has nothing to run, and the PR is a build without the fourth kind of test. The mapping has to contain it in the same change.reframe --name GROMACS -ron that partition, noCItag. The mapping already contains it; the nightly is not the time to add the line.reframe --name EESSI_MPI4PY -ragainst a configuration that describes the laptop (local scheduler, the EESSI modules system). The mapping is irrelevant to a human who named the test.find_modulessupplies the module that the client actually mounted.
What to remember
A mapping file is how a new module inherits tests. A missing line is a silent skip the next morning.
EESSI’s suite is one tree with three filters: contribution (
CI), nightly, end user.CSCS lays out the config tree, the checks tree, the ci tree. The machine, the tests, and the invocation stay apart.
CSC’s computing-environment course is not this course. ReFrame is taught as its own unit, which is why it is a part of this book.