- Browse Source
- Mailing Lists
- Nightly Tests
Acro development involves a wide variety of tools for managing, building and testing the Acro software. This page provides a summary of these tools, with links to related internet resources.
Compilers and Programming Languages
A variety of compilers are used to build C and C++ software in Acro, including:
Additionally, Acro includes many Python scripts, which are compatible with Python 2.4, Python 2.5 and Python 2.6. (Some features are not available in Python 2.4.)
Configuration and building of the Acro software is currently managed with autoconf tools: automake, autoconf, libtool, etc.
The UTILIB software library also includes a preliminary SCons configuration setup.
Software Version Management
Subversion is used to manage the Acro software.
Trac is used for issue/ticket/bug tracking for Acro. Acro's Trac pages rely on several customized third-party plugins:
Additionally, the TracTicketModerator plugin was developed by Sandia to support moderated ticket submission.
Acro software libraries rely on a variety of tools for software testing. The Hudson framework is used to manage software tests on a variety of build hosts. The SRN Hudson site coordinates the execution of software tests, including both continuous integration and nightly builds. The SON Hudson site mirrors select tests (e.g. to provide test results to external collaborators). These Hudson sites use a Page Markup plugin developed by Sandia to inject the metadata needed for Sandia's web page publication guidelines.
The following test categories are currently employed by Acro software libraries:
- Portability Tests
Hudson supports portability testing by distributing software tests on a heterogeneous set of build hosts. Currently, this is managed in a very manual manner (using test naming conventions).
- Unit Tests
Unit testing is a software verification and validation method where the programmer gains confidence that individual units of source code are fit for use. Thus, unit tests involve detailed tests of individual subroutines and classes, which are tested in isolation to the extent possible.
- C++ Unit Tests
The CxxTest unit testing framework is used to test C and C++ code. This is a light-weight framework that does not rely on precompiled libraries. Further, CxxTest performs test discovery, so the developer is not required to write test driver scripts. CxxTest has been customized to support xUnit XML output formats, which are commonly used in test management frameworks.
- Python Unit Tests
The nose framework is used to test Python software. This is an extension of the standard unittest framework, particularly to support test discovery.
- C++ Unit Tests
The standard Python unittest framework is used to perform integration and functionality tests. Python scripts manage the execution of Acro executables, as well as the validation that the executable output matches a given baseline. Extensions to the Python unittest framework have been develop to simplify these types of baseline comparisons.
Test Coverage Analysis
Test coverage information is generated for both C++ and Python software. The C++ coverage data is generated by gcov. Further, the gcovr tool has been developed by Sandia to provide simple text summaries, as well as XML summaries that can be processed by Hudson. The Python coverage data is generated by the Python coverage.py package. This package provides simple text summaries, and Sandia has extended it to include XML summaries.
Web Resources and Mailing Lists
The Acro Trac wiki is hosted on software.sandia.gov, which provides world-readable access to software documentation, release history and browsable access to the Acro subversion repository. A variety of Acro-related mailing lists are also managed on software.sandia.gov for developers and Acro users.
Misc System Utilities
Acro's software development is currently performed on Linux and MS Windows platforms. The development activities also rely on a variety of system-level tools, including Apache, SSH, Kerberos, and Cygwin.