Standard test job for beaglebone-black

If you do not have access to a beaglebone-black device in a LAVA instance yet, you will still benefit from following the example as an introduction to integrating a range of ARMv7 U-Boot devices into LAVA.

Standard test jobs for other devices

If you do not have a beaglebone-black available, there are very similar standard test jobs available for arndale, cubietruck and panda devices. “These files are very similar; typically the only substantive changes come down to the DTB for the relevant device type.

Standard test job for beaglebone-black

The first standard job for a beaglebone-black is a simple ramdisk test job.

device_type: beaglebone-black

# NFS fails on panda and arndale.

job_name: standard Debian ARMMP ramdisk test on bbb
timeouts:
  job:
    minutes: 10
  action:
    minutes: 5
  connection:
    minutes: 2
priority: medium
visibility: public

Download / view

Features of a ramdisk test job

  • Minimal system - sometimes based on a full OS like Debian or OpenEmbedded, sometimes a custom built system. In this standard test job, the ramdisk is built by installing the associated kernel package in a Debian system. The ramdisk is not a full system, certain utilities are omitted or replaced with minimal alternatives from busybox.
  • Custom prompt - (initramfs) needs to be specified instead of a login prompt like root@debian.
  • Modifications - LAVA needs to modify the ramdisk if a test action is specified in a ramdisk test job to be able to add the scripts which support the operation of the test shell. Once modified, LAVA has to repack the ramdisk, including adding a U-Boot header if the device requires one.

Metadata

When you copy this standard test job for your own testing, remember to modify this metadata to distinguish your copy from the original.

metadata:
  source: https://git.linaro.org/lava-team/refactoring.git
  path: doc/v2/examples/test-jobs/standard-armmp-ramdisk-bbb.yaml
  build-readme: http://snapshots.linaro.org/components/lava/standard/debian/jessie/armhf/1/debian-armmp-armhf-readme.html
  build-console: https://ci.linaro.org/view/lava-ci/job/lava-debian-armmp-armhf/1/console
  build-script: http://snapshots.linaro.org/components/lava/standard/debian/jessie/armhf/1/armmp-nfs.sh

Deploy

U-Boot support in LAVA supports a variety of deployment methods. This standard job will use the Debian ARMMP kernel package. The standard build script for this test job prepares a simple root filesystem and installs the ARMMP kernel. The installation scripts in Debian generate a suitable ramdisk and the script builds a tarball (.tar.gz) of the kernel modules from the package.

  • kernel - vmlinuz
  • dtb - dtbs/am335x-boneblack.dtb
  • ramdisk - initramfs.cpio.gz
  • modules - modules.tar.gz

Specific options

The modules.tar.gz and initramfs.cpio.gz are both compressed using gzip and this must be specified in the test job definition.

In addition, the ramdisk on a beaglebone-black using U-Boot needs to have a suitable U-Boot header. This means that the add-header: u-boot option is required.

Finally, although the ramdisk was built on a Debian system, the ramdisk itself does not behave in the same way as a full Debian system. It lacks critical components like apt, so the test job specifies that the test shell can only expect basic compatibility by specifying oe for OpenEmbedded.

actions:
- deploy:
    timeout:
      minutes: 4
    to: tftp
    kernel:
      url: http://snapshots.linaro.org/components/lava/standard/debian/jessie/armhf/1/vmlinuz
    ramdisk:
      url: http://snapshots.linaro.org/components/lava/standard/debian/jessie/armhf/1/initramfs.cpio.gz
      compression: gz
      # the bootloader needs a u-boot header on the modified ramdisk
      add-header: u-boot
    modules:
      url: http://snapshots.linaro.org/components/lava/standard/debian/jessie/armhf/1/modules.tar.gz
      compression: gz
    # despite this being a Debian initramfs, it is not a complete Debian rootfs, so use oe compatibility
    os: oe
    dtb:
      url: http://snapshots.linaro.org/components/lava/standard/debian/jessie/armhf/1/dtbs/am335x-boneblack.dtb

Boot

U-Boot support in LAVA supports a variety of deployment methods. This standard job will use the ramdisk commands from the device type template and the bootz boot method (as the supplied Debian kernel file, vmlinuz is compressed).

- boot:
    method: u-boot
    commands: ramdisk
    type: bootz
    prompts:
    # escape the brackets to ensure that the prompt does not match
    # kernel debug lines which may mention initramfs
    - '\(initramfs\)'
    timeout:
      minutes: 2

Test

The limitation of a ramdisk deployment is that certain tools (like apt) are not available, so the test definition used with this test job is a fairly minimal smoke-test. Avoid test definitions which specify packages to be installed in the install: deps: list.

- test:
    timeout:
      minutes: 5
    definitions:
    - repository: git://git.linaro.org/qa/test-definitions.git
      from: git
      path: ubuntu/smoke-tests-basic.yaml
      name: smoke-tests