SciATH¶
This is documentation for SciATH.
What is it?¶
Testing code should be easy. The functionality required to launch, parse and perform verification should be light-weight and simple to migrate into existing projects. SciATH supports testing of sequential and MPI-parallel applications. Tests can be performed locally, or submitted via a batch queuing system (e.g. PBS, LSF, Slurm or LoadLeveler).
SciATH is a set of lightweight Python tools designed to quickly and easily test scientific application codes. As such, it focuses on full-application testing and prioritizes being able to run on clusters with batch systems. This is in contrast to most testing frameworks, which are designed with libraries in mind, and are often closely associated with specific programming languages.
Key Concepts¶
SciATH provides:
- An object to define a test. A “test” consists of:
- a unique textual name;
- one or more executables;
- a number of MPI ranks (1 for serial execution)
- a text file containing the expected output;
- a method to compare any output generated by the test (e.g. from stdout or another output file)
- A set of tools to parse / filter and query text files for test verification purposes
- A “harness” object to quickly define and process a set of tests
- Internally, a “launcher” object to manage launching a serial or MPI job locally or via a batch queuing system
How do I use this ?¶
- SciATH depends on Python 3 (or Python 2.4+) and numpy
- When using Python 3, it is highly recommended you set the environment
variable PYTHONUNBUFFERED, e.g.
export PYTHONUNBUFFERED - Make sure you modify your PYTHONPATH environment variable to include this directory
Topics¶
- SciATH Tutorial
- Examples
- Basic testing of serial applications using the test harness
- Tests defined in separate directories
- Running a subset of tests
- Parallel tests using a PETSc code
- Defining a test which doesn’t depend on an expected output file
- Deleting test output
- Running tests in dedicated “sandbox” directories
- Running multiple executables
- Updating expected output
- Tips for building tests
- Examples
- Design and Motivation
- API Reference
- Developer Information