Anita is a tool for automated testing of NetBSD. Anita automates the process of downloading a NetBSD distribution, installing it into a fresh virtual machine and running the ATF tests in the distribution in a fully-automated manner. Originally, the main focus of Anita was on testing the sysinst installation procedure and on finding regressions that cause the system to fail to install or boot, but Anita is now used as the canonical platform for running the ATF test suite distributed with NetBSD. (You can see the results of such tests in the Test Run Logs page.)
At the moment, Anita only supports qemu as the system to create the virtual machine with. qemu gives us the ability to test several ports of NetBSD (because qemu emulates many different architectures), but qemu is very slow because it lacks hardware virtualization support in NetBSD. The goal of this project is to extend Anita to support other virtual machine systems.
There are many virtual machine systems out there, but this project focuses on adding support to, at least, the following two: Xen and VirtualBox. Xen because NetBSD has native support to run as a dom0 and a domU so Anita could be used out of the box. VirtualBox because it is the canonical free virtual machine system for workstation setups.
This project has the following milestones, in this order:
- Abstract the VM-specific code in Anita to provide a modular interface that supports different virtual machines at run time. This will result in one single module implementation for qemu.
- Create a module to provide support for Xen dom0.
- Create a module to provide support for VirtualBox.
- Update the pkgsrc package misc/py-anita to support the different virtual machine systems. This must be done by providing new packages, not by using package options.
- If time permits: add extra modules.
The obvious deliverable is a new version of Anita that can use any of the three mentioned virtual machines at run time, without having to be rebuilt, and the updated pkgsrc packages to install such updated version.
The candidate is supposed to know Python and be familiar with at least one virtual machine system.