Allows to run the tests on multiple operating systems and on the infrastructure that the Cockpit team maintains. `make vm` downloads one of Cockpit's test images (override which one with TEST_OS) and installs rpms build from the local checkout of lorax. The resulting image is placed in `test/images/$TEST_OS`. TEST_OS can be set to any of Cockpit's supported images (default: fedora-30). Run `make check-vm` to run the CLI checks in the VM. The bulk of the work is done in `test/check-cli`, which uses Cockpit's `bots` library to start the VM and run the script in it. Also included is a `test/run` script, which is the entrypoint for Cockpit's test infrastructure.
1.8 KiB
Integration Tests
lorax uses Cockpit's integration test framework and infrastructure. To do this,
we're checking out Cockpit's bots/
subdirectory. It contains links to test
images and tools to manipulate and start virtual machines from them.
Each test is run on a new instance of a virtual machine.
Dependencies
These dependencies are needed on Fedora to run tests locally:
$ sudo dnf install curl expect \
libvirt libvirt-client libvirt-daemon libvirt-python \
python python-libguestfs python-lxml libguestfs-xfs \
python3 libvirt-python3 \
libguestfs-tools qemu qemu-kvm rpm-build rsync xz
Building a test VM
To build a test VM, run
$ make vm
This downloads a base image from Cockpit's infrastructure. You can control
which image is downloaded with the TEST_OS
environment variable. Cockpit's
documentation
lists accepted values. It then creates a new image based on that (a qemu
snapshot) in tests/images
, which contain the current tests/
directory and
have newly built rpms from the current checkout installed.
To delete the generated image, run
$ make vm-reset
Base images are stored in bots/images
. Set TEST_DATA
to override this
directory.
Running tests
After building a test image, run
$ ./test/check-cli [TESTNAME]
or any of the other check-*
scripts. Right after the VM is started, these
scripts print an ssh
line to connect to it.
Run make vm
after changing tests or lorax source to recreate the test
machine. It is usually not necessary to reset the VM.
Updating images
The bots/
directory is checked out from Cockpit when make vm
is first run.
To get the latest images you need to update it manually (in order not to poll
GitHub every time):
$ make -B bots