Crucible
"Crucible is a flexible, layered set of tools for pulling down software from the web, building it, running tests on it, and reporting any unusual behaviors back to the parent project.
But since every testing project is unique, we strive to structure Crucible as a set of distinct tools that can be used independently or in other frameworks. Thus, if you're working on your own test harness, we hope you can cherry pick something of use to you from Crucible. :-)
Crucible has been used for doing automated testing of:
* NFSv4 kernel code - client / server multi-machine testing
* Inkscape - build, make check
* Cairo - build, make check
* Crucible - of course [...]
It was created because while there are a lot of automated test harness out there, none were found that could both do kernel booting and allow for orchestrating testing across multiple machines. The Samba build farm was selected as a starting point because the code was simple and relatively clear.
A key design goal of Crucible is to keep its focus as *limited* as possible. "Do one thing, and do it well." Many test harnesses try to do _too_ much, and in the process become too cumbersome and unweildy to be of real use for doing real world testing. I need the ability to easily break things apart and run things in isolation, so I can dig my hands in and get a good grasp on the bug. Also, every test project is unique, so by keeping Crucible's scope limited, it makes it easier to reuse for a wide variety of test harness needs.
Crucible is implemented mainly in Bash. This was done not because I love bash (I actually much prefer Perl), but because bash is reasonably easy to debug, it's widely known, and fairly easily learned. Much of what Crucible does is just file and process manipulation, and bash is pretty good at that. For more complex tasks, or for functionality that bash isn't that good at, I code a tool in a better language and exec that."






