CDash Undergoes Second Major Release

CDash aggregates, analyzes and displays the results of software testing processes submitted from clients around the world, conveying the state of a software system to continually improve its quality. This new release fixes more than 60 bugs and adds several new features, many of which are detailed in this article.

Simplified Layout
We could not have released a major version of CDash without improving the user interface. We strongly believe that a simple interface is essential for improving the efficiency of any web application. First, we have significantly reduced the size of the header and left more space for the actual content. We have also hidden columns by default, such as the timing report and sections of the dashboard that do not contain any builds. The goal is to provide developers with a quick and easy view of the current status of the dashboard. If issues are reported by the dashboard, users can switch to the “advanced view” and display more information.


Figure 1: Simplified layout design

We have also listened to feedback from the community and decided to implement an easier way to report timing. The build time is now displayed as the elapsed time and a mouse over tooltip shows the actual timing for configuration, compilation, and testing, expressed in a simple format.

Figure 2: (a) New time report expressed in terms of elapsed time (b) Activity indicator on the main dashboard page

We have also added an “Auto-refresh” button at the top of the main dashboard page. This function automatically refreshes the dashboard every minute and allows users to keep the dashboard in a tab on their web browser without having to refresh continuously. You will notice some other interface changes, such as the operating system icon associated with a build and other design features, which we hope you will enjoy.

On the main dashboard page listing all the projects, we have cleaned up the interface to allow for a better visibility, and added an activity icon which indicates how many builds on average are submitted per day. Low activity (one bar) will be reported for projects with less than 3 builds a day; a medium activity (two bars) for 3-to-10 builds per day; and a  high activity for more than 10 builds a day.

Improved User Administration
CDash 2.0 integrates a new user administration page which allows for a better control of the users’ credentials and notifications. More specifically, project administrators can now set the notifications and repository credentials for every user.  Repository credentials are used by CDash to make a direct link between the author of a source code modification in a repository (Git, SVN, CVS) and a user in CDash

Figure 3: Improved user administration panel

Repository Browsers
CDash has been supporting several repository browsers such as ViewVC and GitWeb, and new browsers are being released every year. For this reason, we have refactored the server backend in order to facilitate easier addition of new repository browsers in the future.  Furthermore, as it is usually challenging to correctly set up the URL, we have added a preview URL which displays an example of how CDash will translate the URL given a file from the repository.  We envision adding a more flexible interface to manage repository browser’s URLs in a future version of CDash.


Figure 4: Display of the test URL for repository browsers

File Upload
CDash 2.0 now has built-in support for file uploading. If one or multiple files are successfully uploaded using the ctest_upload(FILES … )  command, a package icon will be associated with the corresponding build.

Figure 5: New icon for file upload with a given build

By clicking on the package icon, the displayed file view will allow the user to access the list of upload files.


Figure 6: File view allowing to download files

The uploaded files are stored on the CDash server within the directory specified using the $CDASH_UPLOAD_DIRECTORY variable. In addition to the global settings $CDASH_MAX_UPLOAD_QUOTA, it is also possible to set a project quota (in GB) limiting the space that is used to store the uploaded files. If the quota is exceeded, older files will be deleted to make room when new ones are uploaded.

$CDASH_UPLOAD_DIRECTORY = ‘upload’;
$CDASH_MAX_UPLOAD_QUOTA = ’10’;

Figure 7: Setting the project-specific max quota

Alternatively, URLs can also be uploaded to CDash. Indeed, if  the uploaded file has the extension ‘.url’, by convention CDash will assume its content is a valid URL and will display a link within the file view. When the file associated with a given build (usually packages) is uploaded to a different server (for example Midas), it is useful to upload the corresponding URL to CDash. This enables users to download the files associated with a given build directly from CDash.

file(WRITE “${CMAKE_CURRENT_BINARY_DIR}/foo.url”
           “http://slicer.kitware.com/…”)
ctest_upload
    (FILES “${CMAKE_CURRENT_BINARY_DIR}/foo.url”)

Figure 8: File view listing a URL allowing a user to download a package from Midas

The integration of CDash and Midas to support packages distribution will be discussed in a future Kitware blog post.

New Configuration Options
Several configuration options have been added to CDash. For system administrators managing a CDash server, it is always important to know how to configure CDash and obtain the best performance.

Asynchronous Setup
Asynchronous submission is not a new feature in CDash 2.0, but we have made it easier to set up CDash for asynchronous submissions. This feature is not necessarily needed if you have a server running only a few projects and your server is not overloaded. The main advantage of running CDash in asynchronous mode is that the clients will not have to wait for CDash to process their submission. CDash will copy the XML files generated by the clients and process them asynchronously when the server is not overloaded.

First you need to make sure that your web server has the php curl module enabled; you can usually verify via phpinfo(). Then you need to turn the $CDASH_ASYNCHRONOUS_SUBMISSION variable to true. Most of the web servers do not allow external browsing for security purposes, so you should keep $CDASH_CURL_REQUEST_LOCALHOST = ‘1’. This means that CDash will trigger the asynchronous submission by calling a webpage at http://localhost/$CDASH_CURL_LOCALHOST_PREFIX.

$CDASH_ASYNCHRONOUS_SUBMISSION = true;
$CDASH_CURL_REQUEST_LOCALHOST=’1′;
$CDASH_CURL_LOCALHOST_PREFIX=’CDash’;

Base URL
In CDash 2.0 we have added a new configuration variable called $CDASH_BASE_URL, which allows users to set the base URL for CDash. This variable is not set by default and CDash tries to identify the current installation’s base URL automatically. This variable should be set when using URL rewriting.

$CDASH_BASE_URL=’http://mycdashserver.org/CDash’;

Allow Users to Create New Projects
We have added a new option for allowing CDash users to create new projects on a given CDash server. This option is set to ‘false’ by default to keep the previous behavior, but you can allow users other than administrators to create projects by switching it to true.

$CDASH_USER_CREATE_PROJECTS = true;

Log Rotation
Before CDash 2.0, the log file in the backup directory was never deleted, potentially taking a lot of space. We have added a log rotation mechanism which allows users to cap the current log file to a certain size. CDash actually creates 10 rotating log files and even compresses them if possible. The size of the log file (in MB) is controlled by the following configuration variable:

$CDASH_LOG_FILE_MAXSIZE_MB = 50;

We have also turned off by default the warning of the unregistered committers in order to avoid flooding the log files. This option can be turned back on as necessary.

$CDASH_WARN_ABOUT_UNREGISTERED_COMMITTERS = ‘0’;

Registration Email
CDash 2.0 now sends an email to newly registered users by default. This functionality allows users to make sure that the email address used for registration is valid:

$CDASH_REGISTRATION_EMAIL_VERIFY = true;

Conclusion
CDash 2.0 brings a new design and several enhancements and bug fixes. We recommend system administrators to upgrade to the new release.

Moreover, if you would like to use CDash for your software project, Kitware hosts a CDash server that allows anyone to quickly setup a new project. This exciting, free service allows projects to be administered entirely from the CDash web interface.  To start submitting to your own personal CDash, register at http://my.cdash.org, and create your project.

Julien Jomier is currently directing Kitware’s European subsidiary in Lyon, France. He is also the creator and lead architect of CDash.

Jean-Christophe Fillion-Robin is a R&D Engineer, currently working at Kitware’s North Carolina office. He is also one of the lead developers for Slicer.

Leave a Reply