2 title: Setting AGL LAVA Lab
7 LAVA (Linaro Automated Validation Architecture) Lab is an open source automated testing framework. 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, although extra hardware may be required for some system tests. Results are tracked over time and data can be exported for further analysis. For more information refer [AGL LAVA site](https://lava.automotivelinux.org/)
11 As well as the packages docker, docker-compose and pyyaml mentioned in the top
13 level README, you will need the following:
17 1) The following ports are forwarded to docker and therefore need to be kept free
21 - 69/UDP: proxyfied to the slave for TFTP
23 - 80: proxyfied to the slave for TODO (transfer overlay)
25 - 5500: proxyfied to the slave for Notification
27 - 55950-56000: proxyfied to the slave for NBD
29 2) You will need a remote power switch to remotely power the DUTs on and off.
31 3) You need to have an account with lava.automotivelinux.org. Please contact the
33 agl-dev-community mailing list if you would like an account, and include that you would
35 like to create your own lab in the email so that the relevant user permissions
41 ## Steps to create your own LAVA lab ##
45 1) Clone AGL lava-docker image:
49 git clone https://git.automotivelinux.org/AGL/lava-docker.git
57 2) On the LAVA master web GUI, create a new API token:
59 https://lava.automotivelinux.org/api/tokens/
63 3) Connect all the DUTs' serial to usb and ethernet connections to the host.
66 4) Edit the boards.yaml file:
68 - Copy the API token you created in step 2 in the place of <generated_lab_token>.
70 - Add details of each board connected to the lab. See the top level README for
72 instructions. You will need the following:
74 - any custom options you require in the kernel args
76 - uart idvendor, idproduct, devpath
78 - power on, off and reset commads for the power switch
82 To get the uart idvendor and idproduct, unplug and re-plugin the USB cable of the
84 device in question and then find the details in the latest output of:
88 sudo dmesg | grep idvendor
94 To get the uart devpath, run the command:
98 udevadm info -a -n /dev/ttyUSB1 |grep devpath | head -n1
104 NOTE: Make sure you have at least one "board" included. (It is easiest to keep
110 5) Run the automated setup script:
120 7) Check the web GUI to see if the lab has successfully connected to the LAVA
122 master: https://lava.automotivelinux.org/scheduler/allworkers. If it isn't, run the
124 following command for debugging:
128 docker-exec -it <name_of_docker_container> cat /var/log/lava-dispatcher/lava-slave.log
132 To identify the container name run the following to list the running containers:
142 LAVA logs can be found in `/var/log/lava-dispatcher/`.
148 There are a few helper scripts to automate starting/stopping the lab.
162 ## Adding new device-type templates ##
166 Not all device types are supported by default. Templates for new devices will
168 need to be added to the LAVA master. Please submit new templates to the agl-dev-community
174 Before you submit any new device-type templates, please verify that they work.
176 You can verify that they work in LAVA by carrying out the following instructions:
178 1) Install lavacli on Debian Stretch or Ubuntu 18.04 and later (if you don't
180 have a compatible OS, please see https://lava.automotivelinux.org/api/help/ for an
182 alternative way to use the API)
184 2) Create your lavacli config file
188 touch ~/.config/lavacli.yaml
192 3) Configure this file to look like the following (note: use the first token
194 created in https://lava.automotivelinux.org/api/tokens/)
200 uri: https://lava.automotivelinux.org/RPC2
208 4) Add your device template to the master
212 lavacli device-types template set <device-type-name> <device-type-name>.yaml
216 NOTE: make sure your device-type templates always follow the following naming scheme:
218 ```<device-type-name>.yaml```