Skip to content

CDash integration

Matthias Diener edited this page Nov 1, 2019 · 39 revisions

Overview

CDash (https://cdash.org), from the same developers as CMake and CTest, is a potential alternative for our autobuild system (https://github.com/UIUC-PPL/autobuild). Some reasons for the switch are mentioned in issue #2571.

A proof-of-concept implementation is in PR #2587, with the build results shown on the hosted CDash dashboard: Charm++ CDash.

In contrast to autobuild, CDash works by pushing the results from regular (e.g. nightly) or occasional tests to the dashboard. These tests have to be started on the machine where they are intended to run, either manually or through cron.

CDash requires the CTest framework for submission of test results. The above patch works around that by wrapping our existing test system in CTest, creating 3 CTest tests, tests/, examples/, and benchmarks/. These tests can be regenerated with the cdash/generate_ctest.py script.

Running a build

The cdash/run_autobuild.sh script is a frontend to run a single test (manually or via cron). It clones, builds, and tests Charm++, and submits the results to the CDash dashboard.

To choose a build configuration (build name, branch to test, machine layer etc.), please modify the variables at the top of run_autobuild.sh. Before the above PR is merged, the tested branch needs to be cdash.

Manual tests

To run a manual test, you can use the following commands:

$ wget https://raw.githubusercontent.com/UIUC-PPL/charm/ae01855b8081ddb0be5befd8fae8d9aaa093f823/cdash/run_autobuild.sh

$ vim run_autobuild.sh
# Edit top of run_autobuild.sh:
# The variables AUTOBUILD_MACHINE_NAME and AUTOBUILD_BUILD_NAME *must* be modified.
# AUTOBUILD_BRANCH needs to be 'cdash' until the PR is merged.
# Feel free to modify AUTOBUILD_BUILD_COMMAND.

$ ./run_autobuild.sh

Nightly tests

To run a nightly autobuild on Quartz, the following crontab entry can be used (edit your crontab file with crontab -e):

5 0 * * * srun -n 1 -c 8 -p pdebug run_autobuild.sh > /dev/null 2>&1

This crontab entry runs a build at five minutes past midnight each day. Make sure to allocate a compute node in the crontab entry (srun in the above example)!