Adding a SABER test

SABER has an automated testing system which will produce a serial and a 2-processor parallel version of each test. This helps to catch errors and bugs which are sensitive to how the the grid is partitioned. To add a new test in SABER, follow these steps:

Create test YAML

The test YAML file sets the test configuration. See the other tests in the test/testinput directory for examples.

Create testdeps file

The testdeps is a .txt which lists any tests on which the new test will depend. If the new test has no dependencies, this will be a file with just one blank line. Add this in the test/testdeps directory.

Add test in testlist

There are several lists of tests in the test/testdeps directory. For example, there are the tier 1 tests which are the primary set of tests which are run as part of the JEDI CI (continuous integration) in github. Add the name of the new test to the appropriate list. There is no need to add the test to any CMakeLists.txt files; this will happen automatically.

Create test reference file

To create the reference file containing the expected results of the test, first complete the three steps above. Then, at the end of the test configuration YAML file, under the test: key, add the test output filename sub-key as sketched below:

test:
  reference filename: testref/<TEST_NAME>.ref
  test output filename: testref/<TEST_NAME>.test.out

And add a blank reference file with the name <TEST_NAME>.ref in test/testref of the source directory. Next, re-configure and re-build SABER (re-run ecbuild and make) to build the new test. When the new test is built, run the test, and the output will be written into the test/testref directory in the build of SABER – as opposed to the source directory – in a file with the .test.out extension.

Hint

If the test has no dependencies, you can run just the single test using the ctest -R <TEST_NAME> option. See the guide on JEDI Testing for more information on ctest.

Since there was nothing in the reference file already, running the new test to produce the output will result in a failure, but check test/testref to see if the test output file was created. If the output looks correct, and the test only failed due to the reference file mis-match, use this output file that was written in test/testref of the build dirctory to overwrite the blank reference file in the source directory.

When you are finished developing the test and are ready to commit it, remove the test output filename: testref/<TEST_NAME>.test.out line from the test YAML file before opening the pull request.