Skip to content

What is 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. :-)

A Crucible instance at OSDL is used for:

About Crucible

Crucible was originally derived from the Samba Build Farm scripts. 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.

Crucible News

Crucible 1.7 Released

November 6, 2006 - A new release of the Crucible automated test system is now available: Changes: A new installation system is in place, which should make it straightforward to getting a basic crucible install up and running quickly. Lots of documentation has been added. There is a new post-installation test 'make installcheck'. Directory locations have been abstracted. Internals have been abstracted and generalized, giving more flexibility for customization/extension. Several new subcommands added to 'sut' script for managing system images, adding new machines, etc. A new queue_plan script is added for doing easier one-off testruns. Kernel building is more robust and generalized.