Boost Testing :
From: David Abrahams (dave_at_[hidden])
Date: 2007-12-07 21:54:49
Pursuant to the conclusions of
http://lists.boost.org/Archives/boost/2007/08/125724.php that our
reporting system ought to be integrated with Trac, Daniel Wallin and I
have installed a modified Bitten plugin (http://bitten.edgewall.org/)
on the boost-consulting Trac server. We are using it with a few slave
machines to test (a mirror of) the Boost subversion repository.
You can see the results at:
and by following the obvious links on those pages. Some features (I'm
probably forgetting something; please poke around and see what you can
* runs tests for each atomic Boost checkin.
* slaves can run incremental or from-scratch tests
* failure markup is processed very quickly in Python on the machine
doing the testing and used to alter the effect of failures, with no
horrendous and time-consuming XSLT step
* no tests are run for libraries that are marked unusable on a given
* no unreliable jam log processing is involved: Boost.Build is
directly generating XML which is processed by python and shipped up
to the Trac server
* only failed tests that aren't marked up are shown in most views
* a record of each build run is kept in the Trac server's database
* reorganizing the system so that several machines can contribute to a
single test run with a given OS/toolset is fairly straightforward.
There are obviously a few rough edges and things we could do better in
the UI, but I really believe this overall approach is a winner.
Daniel and I are fairly competent Trac and Bitten hackers, so we
should be able to make this system do whatever Boost needs, feed back
the improvements to the Bitten community, and leave us with a
maintainable codebase that isn't permanently tied to one or two
It's time to open a discussion of exactly how the system should
evolve, what features we want to see in the UI, etc. I hope those of
you with an interest in the quality of Boost testing tools will join
us on the boost-testing list to discuss this project's future. If
anyone wants to run an additional testing slave, please let me know;
once you have Python on your system, it's extremely easy to set up.
Postscript: Quick Overview of Bitten for Boost people
Bitten is a continuous integration system that's integrated with Trac.
Testing machines (called "slaves") run a Python script (part of the
Bitten distribution) that checks periodically with the server to see
if anything needs to be tested. The server manages a set of testing
"recipes," each of which is associated with a directory in the
subversion repository and a set of slave criteria (such as "are you
running Linux?"). If a recipe has criteria matching the inquiring
slave and there have been changes in the associated part of the
repository, the slave executes the recipe.
A recipe is divided into a series of "steps," each of which is
composed of commands
report back to the server as they execute each step, so the server can
tell you about the progress of each slave. If any step fails, the
build fails and the slave stops. Recipes are expressed in XML and
stored in the server's Trac database. Trac users with the right
privileges can create, edit, and delete recipes.
-- Dave Abrahams Boost Consulting http://www.boost-consulting.com