Seeking to reign in the tediousness of manual software testing, Pfizer HPC Engineer Shahzeb Siddiqui is developing an open source software tool called buildtest, aimed at automating software stack testing by providing the community with a central repository of tests for common HPC apps and the ability to automate execution of testing. Where tools like EasyBuild (and Spack and OpenHPC) move to optimize the application build process by automating the deployment of the entire software stack to an HPC environment, buildtest takes a similar approach but focusing on application testing. In the following exchange, conducted by email, Siddiqui provides an overview of the project he founded.
HPCwire: What is buildtest and who is it for?
Shahzeb Siddiqui: Buildtest is a software stack testing framework (implemented in Python) used for automating test creation and execution. This tool is designed for HPC administrators, end-users, and software vendors.
HPCwire: Can you tell us more about the problem it is created to solve?
Siddiqui: I was tired of writing test scripts manually as all other HPC sites were doing the same, since each site has unique software and they may have hard coded paths in their test scripts. I started with this notion to automate test script creation to simplify this process and decided to expand on this framework to provide a YAML like syntax that is easily interpretable that can create a test script (shell script).
HPCwire: What is the connection to EasyBuild?
Siddiqui: The idea of buildtest was inspired by EasyBuild, where EasyBuild focuses on software installation, buildtest is focused on software testing. EasyBuild has a repository of easyconfigs (recipe) that are shared amongst the community to help build the software. Buildtest is similar in this aspect where YAML files are shared which is a recipe for building a software test.
HPCwire: How are you using buildtest at Pfizer?
Siddiqui: We use buildtest to validate two or three different software stacks for two different sites using Jenkins to automate the entire test procedure.
HPCwire: What is the status of buildtest – is it ready for adoption?
Siddiqui: Buildtest is in beta phase, it is not ready for production use. The tool is open source and easily accessible via git or installed via pip. Anyone can start using it, though features are constantly changing. I would say it would be ready for adoption by 2020. There has been need for creating a framework for software testing, but to date, there is only one other tool in this space along with buildtest called reframe that targets this need.
HPCwire: Can people try it now? Licensing info?
Siddiqui: Yes, they can try it now. License is GPLv3+
HPCwire: Would you share more about current features? Challenges and planned features?
Current features include:
- Module load testing
- Binary testing
- Creating job scripts
- Automate batch job submission
- Basic MPI, OpenMP testing
- Python,R, Perl, Ruby package testing
- OSU benchmark test
- Listing unique software, unique software version
- System package testing
- Run tests
- Interactive menu driven prompt
- Run as test suite (by app)
- Run individual test
- Run test with ctest
- OpenHPC integration to test OpenHPC software stack
- Show difference between two module trees
- Find test scripts and YAML configs
- Test threshold to indicate (WARNING, CRITICAL, SUCCESS)
User Contribution and feedback
Lack of time
- Email integration based on test threshold
- Support additional benchmark
- Robust support for creating job script for SLURM and LSF initially, then provide support for other schedulers based on demand
- Automate documentation for API generation
HPCwire: What is your ultimate goal for this project?
Siddiqui: To provide a robust framework and repository where configurations or tests can be reused between HPC sites for validating software stack and improving the quality of software packages.
HPCwire: Where can our readers go for more information?
Siddiqui: They can find more information at https://buildtest.readthedocs.io/en/latest/.
Interested in a deeper dive and demo? Check out Siddiqui’s presentation from the 2018 HPC Knowledge Meeting (HPCKP’18), which took place in August.
Bio: Shahzeb Siddiqui is an HPC engineer at Pfizer with five years of experience in the field of high-performance computing. He loves to automate everything and solve challenging problems. With an M.S in computer science from KAUST and a computer engineering bachelor’s degree from Penn State, Siddiqui is an experienced developer, DevOps practitioner, cloud engineer, and system administrator. Siddiqui is the founder of buildtest, a software stack testing framework designed to automate testing for validating software.