aboutsummaryrefslogtreecommitdiffstats
path: root/docs/07_How_To_Contribute/10_Setup_AGL_LAVA_Lab.md
blob: f15545fea40369d19d198acb181e678bee2a2d03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
---
title: Setting AGL LAVA Lab
---

## Overview

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/)

## Prerequisites ##

As well as the packages docker, docker-compose and pyyaml mentioned in the top

level README, you will need the following:



1) The following ports are forwarded to docker and therefore need to be kept free

on the host machine:

- 69/UDP: proxyfied to the slave for TFTP

- 80: proxyfied to the slave for TODO (transfer overlay)

- 5500: proxyfied to the slave for Notification

- 55950-56000: proxyfied to the slave for NBD

2) You will need a remote power switch to remotely power the DUTs on and off.

3) You need to have an account with lava.automotivelinux.org. Please contact the

agl-dev-community mailing list if you would like an account, and include that you would

like to create your own lab in the email so that the relevant user permissions

can be set.



## Steps to create your own LAVA lab ##



1) Clone AGL lava-docker image:

```

git clone https://git.automotivelinux.org/AGL/lava-docker.git

cd lava-docker

```



2) On the LAVA master web GUI, create a new API token:

https://lava.automotivelinux.org/api/tokens/



3) Connect all the DUTs' serial to usb and ethernet connections to the host.


4) Edit the boards.yaml file:

- Copy the API token you created in step 2 in the place of <generated_lab_token>.

- Add details of each board connected to the lab. See the top level README for

instructions. You will need the following:

- any custom options you require in the kernel args

- uart idvendor, idproduct, devpath

- power on, off and reset commads for the power switch



To get the uart idvendor and idproduct, unplug and re-plugin the USB cable of the

device in question and then find the details in the latest output of:

```

sudo dmesg | grep idvendor

```



To get the uart devpath, run the command:

```

udevadm info -a -n /dev/ttyUSB1 |grep devpath | head -n1

```



NOTE: Make sure you have at least one "board" included. (It is easiest to keep

qemu).



5) Run the automated setup script:

```

./start.sh slave

```



7) Check the web GUI to see if the lab has successfully connected to the LAVA

master: https://lava.automotivelinux.org/scheduler/allworkers. If it isn't, run the

following command for debugging:

```

docker-exec -it <name_of_docker_container> cat /var/log/lava-dispatcher/lava-slave.log

```

To identify the container name run the following to list the running containers:

```

docker ps

```



LAVA logs can be found in `/var/log/lava-dispatcher/`.



8) Helper scripts

There are a few helper scripts to automate starting/stopping the lab.

```

./start.sh slave

./restart.sh slave

./stop.sh slave

```



## Adding new device-type templates ##



Not all device types are supported by default. Templates for new devices will

need to be added to the LAVA master. Please submit new templates to the agl-dev-community

mailing list.



Before you submit any new device-type templates, please verify that they work.

You can verify that they work in LAVA by carrying out the following instructions:

1) Install lavacli on Debian Stretch or Ubuntu 18.04 and later (if you don't

have a compatible OS, please see https://lava.automotivelinux.org/api/help/ for an

alternative way to use the API)

2) Create your lavacli config file

```

touch ~/.config/lavacli.yaml

```

3) Configure this file to look like the following (note: use the first token

created in https://lava.automotivelinux.org/api/tokens/)

```

default:

uri: https://lava.automotivelinux.org/RPC2

username: <username>

token: <API_token>

```

4) Add your device template to the master

```

lavacli device-types template set <device-type-name> <device-type-name>.yaml

```

NOTE: make sure your device-type templates always follow the following naming scheme:

```<device-type-name>.yaml```