On Wed, Mar 5, 2014 at 6:58 AM, Sandro red Mathys
<red(a)fedoraproject.org> wrote:
Heads-up: I've taken ownership for the external need
"Automatic
Smoketests on Image Build" [0]
Testing an image takes time and resources, and with several images, it
takes several times that. Since that simply doesn't scale - well,
doesn't even work well without scaling - we want to automate the
smoketests using Taskotron.
rpm-ostree has included in it an (unnamed) custom qemu-based testing
hypervisor, which derives from gnome-continuous. Most of the code is
in here:
https://github.com/cgwalters/rpm-ostree/blob/master/src/autobuilder/js/ta...
What makes the rpm-ostree testing hypervisor fundamentally different
from a lot of other testing systems out there is it works without IP
networking.
Basically:
1) Use libguestfs to inject testing code into the guest
2) The host offers a dbus-over-virtio-serial channel for guests to
request things like screenshots
3) Watch the systemd journal from the guest for events
Again, operating without guest IP networking and having the ability to
watch early boot events like the console.log and systemd journal are
key.
Where I'm going with this eventually is that this testing code acts as
a basic smoketest, performed on the same physical host as the image
(tree) composition servers. If that passes, then we have an OS version
that can be sanely provisioned at a larger scale - say to OpenStack, or
to things like AutoTest/Beaker physical hardware inventory/provisioning
systems.
For example the basic smoketest:
https://github.com/cgwalters/rpm-ostree/blob/master/src/autobuilder/js/ta...
All it does is watch the systemd journal for two events. If we reached
multi-user.target, we're good. If any service crashed, we failed.
This testing code is rather deeply intertwined with the larger
rpm-ostree/ostree deployment model - but I'd consider patches to help
test traditional RPM-on-the-client OSes.
(Really it's not even *that* much code, it wouldn't be too hard to
fork/rewrite it)