Features
Crucible has been in use since 2005 on a number of software projects, including testing low level kernel functionality for CPU/Memory Hotplug, high level kernel network/filesystem functionality for NFSv4, and even application level testing for Inkscape, a GUI graphics program. The following is a list of features that Crucible provided to these projects:
- Detect releases of new patches and tarballs from websites
- Triggering one or more tests based on releases or on new changes in version control systems (CVS or Subversion)
- Fully automated patching and compilation of kernel
- Updates bootloader (grub, lilo, yaboot), boots to the new kernel, and verifies it came up correctly.
- Watchdog. If the system stops responding to ping for a period of time (and isn't just in the middle of a reboot), issue a remote power cycle command to bring it back to its default kernel.
- Run within a virtualized environment where desired. Xen partitions can be used as SUTs for running each application test.
- Multi-node testing. Tests requiring 2 or more SUT can be scheduled alongside tests that run on a single SUT. Synchronizing/coordinating the machines is done using simple wait scripts.
- Test process can be customized and extended through short bash scripts and config files.
- Individual SUTs can be easily "locked" to allow hands-on debugging.
- Commandline admin tools are available to review system status, queue and cancel tests, etc.
- Communication between machines in the system is done through NFS. Since all interactions are just file system operations, this makes the system pretty easy to debug and extend.