LAVA is now available in Debian unstable and jessie-backports: lava-server

LAVA

LAVA is a continuous integration system for deploying operating systems onto physical and virtual hardware for running tests. Tests can be simple boot testing, bootloader testing and system level testing. Extra hardware may be required for some system tests. Results are tracked over time and data can be exported for further analysis.

LAVA has a long history of supporting continuous integration of the Linux kernel on ARM devices (ARMv7 & ARMv8). So if you are testing a Linux kernel image on armhf or arm64 devices, you will find a lot of similar tests already running on the other LAVA instances.

Linaro Cambridge lab

http://validation.linaro.org

This is the master instance for Linaro. To use devices on this instance, community members can register with Linaro

http://staging.validation.linaro.org

This is the test instance for the LAVA software team, generally running release candidates for the next upstream release of the LAVA packages.

Collabora

https://lava.collabora.co.uk/

Deprecated Distributed Deployment support

The former content of this page relates to the deprecated installation methods and submission formats. This content is now at Deprecated Distributed Deployment support and has particular information related to the Collabora instance.

The Debian LAVA instance

http://lava.debian.net is a LAVA instance intended to help Debian Developers. This instance uses the pipeline dispatcher over python-zmq. This allows local devices to be shared amongst developers for LAVA testing.

The goal is that Debian developers can do more testing on a variety of ARM devices using the automation provided by LAVA. By harnessing local devices, including developer boards behind NAT connections and firewalls, LAVA can make testing more visible, easier to access and simple to track over time.

LAVA includes documentation which is updated with each upload.

The advantage of the pipeline design is that it is a lot easier to setup LAVA and use LAVA in a distributed manner. The new design is still evolving and not all devices supported by the old dispatcher have been ported to the new dispatcher but any U-Boot device should be supportable.

Adding devices to the Debian LAVA instance

One of the strengths of LAVA is providing access to a wide range of hardware. With the Debian LAVA instance, this includes individual developers configuring a local machine to serve as a slave, managing a range of local devices.

An advantage of the pipeline model is that the devices remain on the desk of the developer. This does allow for developers to choose to be hands-on to allow a wider range of testing. For example, the developer with physical access to the device can take on management of the bootloader on the board. Although this isn't fully automated bootloader testing, it can support this step which a fully automated LAVA lab cannot.

To add one of your devices to the Debian LAVA instance, follow the steps below:

Requirements for a LAVA device

Particular types of device will have different details in the device dictionary. For example, a QEMU device will want to limit the amount of memory allocated and a beaglebone-black device will need a connection command to allow the slave to connect to the serial console over a USB FTDI connection. Documentation exists in the lava-server-doc package with examples of the dictionaries of known devices.

Different developers will be able to offer different levels of service, depending on the hardware configuration of their local lab. In particular, not all developers will be able to offer devices on a 24/7 basis as this requires some custom hardware, like a PDU.

Example for a panda device

{% extends 'panda.yaml' %}
{% set exclusive = 'True' %}
{% set hard_reset_command = '/usr/bin/pduclient --daemon tweetypie --hostname pdu --command reboot --port 07' %}
{% set power_off_command = '/usr/bin/pduclient --daemon tweetypie --hostname pdu --command off --port 07' %}
{% set connection_command = 'telnet droopy 4003' %}
{% set power_on_command = '/usr/bin/pduclient --daemon tweetypie --hostname pdu --command on --port 07' %}

This is the Jinja format of the data visible in the UI. Only superusers can export or update this data directly from the database.

Questions

There are a number of issues and questions which come to mind when considering how to offer devices to a service like LAVA. Please contact NeilWilliams and use the LAVA support mailing lists.