Merge ~liaou3/checkbox-iiotg/+git/checkbox-iiotg-classic:add_tsn_tools into ~checkbox-dev/checkbox-iiotg/+git/checkbox-provider-intliotg:master

Proposed by Vincent Liao
Status: Superseded
Proposed branch: ~liaou3/checkbox-iiotg/+git/checkbox-iiotg-classic:add_tsn_tools
Merge into: ~checkbox-dev/checkbox-iiotg/+git/checkbox-provider-intliotg:master
Diff against target: 848 lines (+735/-0)
18 files modified
.bumpversion.cfg (+17/-0)
config/config_vars (+48/-0)
launchers/checkbox-cli-wrapper (+3/-0)
launchers/configure (+58/-0)
launchers/shell-wrapper (+4/-0)
launchers/test-runner (+16/-0)
launchers/test-runner-adl (+46/-0)
launchers/test-runner-automated (+19/-0)
launchers/test-runner-ehl (+52/-0)
launchers/test-runner-icl (+43/-0)
launchers/test-runner-rpl (+49/-0)
launchers/test-runner-tgl (+51/-0)
launchers/wrapper_local (+48/-0)
snap/hooks/configure (+53/-0)
snap/hooks/install (+16/-0)
snap/hooks/remove (+5/-0)
snap/plugins/checkbox_provider.py (+94/-0)
snap/snapcraft.yaml (+113/-0)
Reviewer Review Type Date Requested Status
Vincent Liao Pending
Review via email: mp+451715@code.launchpad.net

This proposal has been superseded by a proposal from 2023-09-20.

To post a comment you must log in.

Unmerged commits

5a5d8f3... by Vincent Liao

Add TSN testing tools and environment variables

5e7f16c... by Ubuntu <email address hidden>

Merge #447718 from ~liaou3/checkbox-iiotg/+git/checkbox-iiotg-classic:correct_tp_iperf_ip

Modify: Correct the Taipei office iperf3 IP address

4334448... by Vincent Liao

Modify: Correct the Taipei IP address

6a618b8... by Ubuntu <email address hidden>

Merge #446341 from ~liaou3/checkbox-iiotg/+git/checkbox-iiotg-classic:seperate_rt-performance-test_from_stress_test

Modify: Seperate rt-performance-test from stress test
Related MR: https://code.launchpad.net/~liaou3/checkbox-iiotg/+git/checkbox-provider-intliotg/+merge/446342

59b6dfd... by Vincent Liao

Modify: Sperate rt-performance-test from stress test plan

ccf2161... by Ubuntu <email address hidden>

Merge #444700 from ~liaou3/checkbox-iiotg/+git/checkbox-iiotg-classic:master

680e7d9... by Vincent Liao

Fix: Add and fix the name in config
1. rename WPA
2. Add WPA3

7d7964a... by Ubuntu <email address hidden>

Merge #444361 from ~liaou3/checkbox-iiotg/+git/checkbox-iiotg-classic:add_rt_test_plan

Add: realtime testplan into test runner

c51af20... by Vincent Liao

Add realtime testplan into test runner adl, ehl, rpl, tgl

1c538ee... by Ubuntu <email address hidden>

Merge #440119 from ~stanley31/checkbox-iiotg/+git/checkbox-iiotg-classic:230331_add-ce-oem-provider

Add: include the ce-oem provider

    For include the ce-oem-generic provider as a content provider in
    checkbox-iiotg snap, I have made following changes
    1. add lib path into LD_LIBRARY_PATH to access those libraries in
       ce-oem-generic provider, it is for cold-reboot-stress-by-pdu tests
    2. add bin path into PATH to access those binaries in ce-oem-generic
        provider.
    3. add checkbox-ce-oem into PROVIDER_PATH
    4. use dump plugin to build checkbox snap

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.bumpversion.cfg b/.bumpversion.cfg
2new file mode 100644
3index 0000000..fda6e85
4--- /dev/null
5+++ b/.bumpversion.cfg
6@@ -0,0 +1,17 @@
7+[bumpversion]
8+current_version = 0.1dev
9+parse = (?P<major>\d+)\.(?P<minor>\d+)((?P<release>\.?[a-z]+))?
10+serialize =
11+ {major}.{minor}{release}
12+ {major}.{minor}
13+
14+[bumpversion:file:snap/snapcraft.yaml]
15+search = version: '{current_version}'
16+replace = version: '{new_version}'
17+
18+[bumpversion:part:release]
19+optional_value = RELEASE
20+values =
21+ .dev
22+ RELEASE
23+
24diff --git a/config/config_vars b/config/config_vars
25new file mode 100644
26index 0000000..9ed75b1
27--- /dev/null
28+++ b/config/config_vars
29@@ -0,0 +1,48 @@
30+# follow KEY=value syntax
31+WIFI_INTERFACE=wlan0
32+# WATCHDOG_KERNEL_MOD=iTCO_wdt
33+# ALSADEVICE=hw:CARD=bytrt5660,DEV=0
34+OPEN_N_SSID=ubuntu-cert-n-open-tpelab
35+OPEN_BG_SSID=ubuntu-cert-bg-open-tpelab
36+OPEN_AC_SSID=ubuntu-cert-ac-open-tpelab
37+OPEN_AX_SSID=ubuntu-cert-ax-open-tpelab
38+WPA_N_SSID=ubuntu-cert-n-wpa-tpelab
39+WPA_BG_SSID=ubuntu-cert-bg-wpa-tpelab
40+WPA_AC_SSID=ubuntu-cert-ac-wpa-tpelab
41+WPA_AX_SSID=ubuntu-cert-ax-wpa-tpelab
42+WPA3_AX_SSID=ubuntu-cert-ax-wpa3-tpelab
43+WPA_N_PSK=insecure
44+WPA_BG_PSK=insecure
45+WPA_AC_PSK=insecure
46+WPA_AX_PSK=insecure
47+WPA3_AX_PSK=insecure
48+BTDEVADDR=C0:B5:D7:C1:74:38
49+# obex server in office: C0:B5:D7:C1:74:38
50+# obex server in lab: 28:3A:4D:46:79:C0, 7C:B2:7D:4B:14:95
51+WWAN_APN=internet
52+WWAN_NET_IF=ppp0
53+WWAN_CONTROL_IF=ttyACM3
54+STRESS_BOOT_ITERATIONS=100
55+STRESS_S3_ITERATIONS=100
56+STRESS_S4_ITERATIONS=100
57+TEST_TARGET_IPERF=10.102.88.220,10.102.182.100,10.102.182.137,10.102.182.101
58+# iperf server in office: 10.102.88.220
59+# iperf server in lab: 10.102.182.100, 10.102.182.137
60+STRESS_S4_WAIT_DELAY=120
61+STRESS_S4_SLEEP_DELAY=60
62+STRESS_S3_SLEEP_DELAY=60
63+STRESS_BOOT_WAKEUP_DELAY=120
64+STRESS_S3_WAIT_DELAY=150
65+STRESS_BOOT_WAIT_DELAY=150
66+WIFI_AP_SETUPTIME=30
67+WWAN_SETUPTIME=30
68+TPM2TOOLS_TCTI_NAME=device
69+TPM2TOOLS_DEVICE_FILE=/dev/tpm0
70+MODEL_GRADE=signed
71+WATCHDOG_TYPE=wdat_wdt
72+WATCHDOG_IDENTITY=wdat_wdt
73+CYCLICTEST_DURATION=86400
74+TSN_SERVER_IP=10.102.88.87
75+TSN_SERVER_USER=u
76+TSN_SERVER_PWD=u
77+TSN_SERVER_INTERFACE=enp2s0
78diff --git a/launchers/checkbox-cli-wrapper b/launchers/checkbox-cli-wrapper
79new file mode 100755
80index 0000000..aff0447
81--- /dev/null
82+++ b/launchers/checkbox-cli-wrapper
83@@ -0,0 +1,3 @@
84+#!/bin/sh
85+
86+exec checkbox-cli "$@"
87diff --git a/launchers/configure b/launchers/configure
88new file mode 100755
89index 0000000..fe1c174
90--- /dev/null
91+++ b/launchers/configure
92@@ -0,0 +1,58 @@
93+#!/usr/bin/env python3
94+# Copyright 2018-2022 Canonical Ltd.
95+# All rights reserved.
96+#
97+# Written by:
98+# Maciej Kisielewski <maciej.kisielewski@canonical.com>
99+# Sylvain Pineau <sylvain.pineau@canonical.com>
100+import os
101+import re
102+import sys
103+
104+sys.path.append(os.path.expandvars("$SNAP/usr/lib/python3/dist-packages"))
105+sitepkgpath = "$SNAP/lib/python3.10/site-packages"
106+sys.path.append(os.path.expandvars(sitepkgpath))
107+
108+sys.path.append(os.path.expandvars(
109+ "/snap/checkbox22/current/usr/lib/python3/dist-packages"))
110+runtimepath = "/snap/checkbox22/current/lib/python3.10/site-packages"
111+sys.path.append(os.path.expandvars(runtimepath))
112+
113+try:
114+ from checkbox_support.snap_utils.config import update_configuration
115+ from checkbox_support.snap_utils.config import print_checkbox_conf
116+except ImportError:
117+ msg = """
118+checkbox-support not found!
119+You need to install the checkbox22 snap:
120+
121+snap install checkbox22
122+ """
123+ print(os.path.expandvars(msg), file=sys.stderr)
124+ sys.exit(1)
125+
126+
127+def main():
128+ # we need run as root to be able to write to /var/snap/...
129+ if os.geteuid() != 0:
130+ print('You have to run this command with sudo')
131+ return
132+
133+ if len(sys.argv) > 1 and sys.argv[1] == '-l':
134+ print_checkbox_conf()
135+ return
136+
137+ key_re = re.compile(r"^(?:[A-Z0-9]+_?)*[A-Z](?:_?[A-Z0-9])*$")
138+ vars_to_set = dict()
139+ for pair in sys.argv[1:]:
140+ k, _, v = pair.partition('=')
141+ if not key_re.match(k) or not v:
142+ raise SystemExit("'%s' is not a valid configuration entry. "
143+ "Should be KEY=val" % pair)
144+ k = k.replace('_', '-').lower()
145+ vars_to_set[k] = v
146+ update_configuration(vars_to_set)
147+
148+
149+if __name__ == '__main__':
150+ main()
151diff --git a/launchers/shell-wrapper b/launchers/shell-wrapper
152new file mode 100755
153index 0000000..a9a3609
154--- /dev/null
155+++ b/launchers/shell-wrapper
156@@ -0,0 +1,4 @@
157+#!/bin/bash
158+
159+echo "$SNAP_NAME runtime shell, type 'exit' to quit the session"
160+exec bash
161diff --git a/launchers/test-runner b/launchers/test-runner
162new file mode 100755
163index 0000000..3ca55cc
164--- /dev/null
165+++ b/launchers/test-runner
166@@ -0,0 +1,16 @@
167+#!/usr/bin/env checkbox-cli-wrapper
168+[launcher]
169+app_id = com.canonical.qa.intliotg:checkbox
170+launcher_version = 1
171+stock_reports = text, submission_files, certification
172+
173+[test plan]
174+unit = com.canonical.qa.intliotg::intliotg-desktop-22-04
175+filter = com.canonical.qa.intliotg::intliotg-desktop-22-04
176+ com.canonical.qa.intliotg::intliotg-desktop-22-04-manual
177+ com.canonical.qa.intliotg::intliotg-desktop-22-04-automated
178+ com.canonical.qa.intliotg::intliotg-desktop-22-04-stress
179+ com.canonical.qa.intliotg::intliotg-server-22-04
180+ com.canonical.qa.intliotg::intliotg-server-22-04-manual
181+ com.canonical.qa.intliotg::intliotg-server-22-04-automated
182+ com.canonical.qa.intliotg::intliotg-server-22-04-stress
183diff --git a/launchers/test-runner-adl b/launchers/test-runner-adl
184new file mode 100755
185index 0000000..e4f11be
186--- /dev/null
187+++ b/launchers/test-runner-adl
188@@ -0,0 +1,46 @@
189+#!/usr/bin/env checkbox-cli-wrapper
190+[launcher]
191+app_id = com.canonical.qa.intliotg:checkbox
192+launcher_version = 1
193+stock_reports = text, submission_files, certification
194+
195+[test plan]
196+unit = com.canonical.qa.intliotg::intliotg-desktop-22-04
197+filter = com.canonical.qa.intliotg::intliotg-desktop-22-04
198+ com.canonical.qa.intliotg::intliotg-desktop-22-04-manual
199+ com.canonical.qa.intliotg::intliotg-desktop-22-04-automated
200+ com.canonical.qa.intliotg::intliotg-desktop-22-04-stress
201+ com.canonical.qa.intliotg::intliotg-server-22-04
202+ com.canonical.qa.intliotg::intliotg-server-22-04-manual
203+ com.canonical.qa.intliotg::intliotg-server-22-04-automated
204+ com.canonical.qa.intliotg::intliotg-server-22-04-stress
205+ com.canonical.qa.intliotg::intliotg-desktop-22-04-rt
206+ com.canonical.qa.intliotg::intliotg-desktop-22-04-manual-rt
207+ com.canonical.qa.intliotg::intliotg-desktop-22-04-automated-rt
208+ com.canonical.qa.intliotg::intliotg-desktop-22-04-stress-rt
209+ com.canonical.qa.intliotg::intliotg-server-22-04-rt
210+ com.canonical.qa.intliotg::intliotg-server-22-04-manual-rt
211+ com.canonical.qa.intliotg::intliotg-server-22-04-automated-rt
212+ com.canonical.qa.intliotg::intliotg-server-22-04-stress-rt
213+ com.canonical.qa.intliotg::rt-performance-tests-stress
214+
215+[manifest]
216+com.canonical.certification::has_card_reader= false
217+com.canonical.certification::has_edac_module= true
218+com.canonical.certification::has_ethernet_adapter= true
219+com.canonical.certification::has_fingerprint_reader= false
220+com.canonical.certification::has_hardware_watchdog= true
221+com.canonical.certification::has_i2c= true
222+com.canonical.certification::has_touchscreen= false
223+com.canonical.certification::has_thunderbolt3= false
224+com.canonical.certification::has_tpm2_chip= true
225+com.canonical.certification::has_usb_storage= true
226+com.canonical.certification::has_usb_type_c= true
227+com.canonical.certification::has_wwan_module= false
228+com.canonical.qa.intliotg::has_eclite= false
229+com.canonical.qa.intliotg::has_ishtp= true
230+com.canonical.qa.intliotg::has_mei= true
231+com.canonical.qa.intliotg::has_qep= false
232+com.canonical.qa.intliotg::has_tsn= true
233+com.canonical.qa.intliotg::has_usb_dwc3_controller= false
234+com.canonical.qa.intliotg::has_va_api= true
235\ No newline at end of file
236diff --git a/launchers/test-runner-automated b/launchers/test-runner-automated
237new file mode 100755
238index 0000000..da88619
239--- /dev/null
240+++ b/launchers/test-runner-automated
241@@ -0,0 +1,19 @@
242+#!/usr/bin/env checkbox-cli-wrapper
243+[launcher]
244+app_id = com.canonical.qa.iiotg:checkbox
245+launcher_version = 1
246+stock_reports = text, submission_files
247+
248+[test plan]
249+unit = com.canonical.qa.iiotg::iiotg-classic-automated
250+forced = yes
251+
252+[test selection]
253+forced = yes
254+
255+[ui]
256+type = silent
257+auto_retry = no
258+max_attempts = 4
259+delay_before_retry = 30
260+
261diff --git a/launchers/test-runner-ehl b/launchers/test-runner-ehl
262new file mode 100755
263index 0000000..db5eb20
264--- /dev/null
265+++ b/launchers/test-runner-ehl
266@@ -0,0 +1,52 @@
267+#!/usr/bin/env checkbox-cli-wrapper
268+[launcher]
269+app_id = com.canonical.qa.intliotg:checkbox
270+launcher_version = 1
271+stock_reports = text, submission_files, certification
272+
273+[test plan]
274+unit = com.canonical.qa.intliotg::intliotg-desktop-22-04
275+filter = com.canonical.qa.intliotg::intliotg-desktop-22-04
276+ com.canonical.qa.intliotg::intliotg-desktop-22-04-manual
277+ com.canonical.qa.intliotg::intliotg-desktop-22-04-automated
278+ com.canonical.qa.intliotg::intliotg-desktop-22-04-stress
279+ com.canonical.qa.intliotg::intliotg-server-22-04
280+ com.canonical.qa.intliotg::intliotg-server-22-04-manual
281+ com.canonical.qa.intliotg::intliotg-server-22-04-automated
282+ com.canonical.qa.intliotg::intliotg-server-22-04-stress
283+ com.canonical.qa.intliotg::intliotg-desktop-22-04-rt
284+ com.canonical.qa.intliotg::intliotg-desktop-22-04-manual-rt
285+ com.canonical.qa.intliotg::intliotg-desktop-22-04-automated-rt
286+ com.canonical.qa.intliotg::intliotg-desktop-22-04-stress-rt
287+ com.canonical.qa.intliotg::intliotg-server-22-04-rt
288+ com.canonical.qa.intliotg::intliotg-server-22-04-manual-rt
289+ com.canonical.qa.intliotg::intliotg-server-22-04-automated-rt
290+ com.canonical.qa.intliotg::intliotg-server-22-04-stress-rt
291+ com.canonical.qa.intliotg::rt-performance-tests-stress
292+
293+[manifest]
294+com.canonical.certification::has_audio_capture= false
295+com.canonical.certification::has_audio_loopback_connector= false
296+com.canonical.certification::has_audio_playback= false
297+com.canonical.certification::has_bt_adapter= true
298+com.canonical.certification::has_bt_smart= true
299+com.canonical.certification::has_card_reader= false
300+com.canonical.certification::has_edac_module= true
301+com.canonical.certification::has_ethernet_adapter= true
302+com.canonical.certification::has_fingerprint_reader= false
303+com.canonical.certification::has_hardware_watchdog= true
304+com.canonical.certification::has_i2c= true
305+com.canonical.certification::has_touchscreen= false
306+com.canonical.certification::has_thunderbolt3= false
307+com.canonical.certification::has_tpm2_chip= true
308+com.canonical.certification::has_usb_storage= true
309+com.canonical.certification::has_usb_type_c= true
310+com.canonical.certification::has_wlan_adapter= true
311+com.canonical.certification::has_wwan_module= false
312+com.canonical.qa.intliotg::has_eclite= true
313+com.canonical.qa.intliotg::has_ishtp= true
314+com.canonical.qa.intliotg::has_mei= true
315+com.canonical.qa.intliotg::has_qep= true
316+com.canonical.qa.intliotg::has_tsn= true
317+com.canonical.qa.intliotg::has_usb_dwc3_controller= true
318+com.canonical.qa.intliotg::has_va_api= true
319\ No newline at end of file
320diff --git a/launchers/test-runner-icl b/launchers/test-runner-icl
321new file mode 100755
322index 0000000..a42da0d
323--- /dev/null
324+++ b/launchers/test-runner-icl
325@@ -0,0 +1,43 @@
326+#!/usr/bin/env checkbox-cli-wrapper
327+[launcher]
328+app_id = com.canonical.qa.intliotg:checkbox
329+launcher_version = 1
330+stock_reports = text, submission_files, certification
331+
332+[test plan]
333+unit = com.canonical.qa.intliotg::intliotg-desktop-22-04
334+filter = com.canonical.qa.intliotg::intliotg-desktop-22-04
335+ com.canonical.qa.intliotg::intliotg-desktop-22-04-manual
336+ com.canonical.qa.intliotg::intliotg-desktop-22-04-automated
337+ com.canonical.qa.intliotg::intliotg-desktop-22-04-stress
338+ com.canonical.qa.intliotg::intliotg-server-22-04
339+ com.canonical.qa.intliotg::intliotg-server-22-04-manual
340+ com.canonical.qa.intliotg::intliotg-server-22-04-automated
341+ com.canonical.qa.intliotg::intliotg-server-22-04-stress
342+
343+[manifest]
344+com.canonical.certification::has_audio_capture= false
345+com.canonical.certification::has_audio_loopback_connector= false
346+com.canonical.certification::has_audio_playback= false
347+com.canonical.certification::has_bt_adapter= false
348+com.canonical.certification::has_bt_smart= false
349+com.canonical.certification::has_card_reader= false
350+com.canonical.certification::has_edac_module= true
351+com.canonical.certification::has_ethernet_adapter= true
352+com.canonical.certification::has_fingerprint_reader= false
353+com.canonical.certification::has_hardware_watchdog= true
354+com.canonical.certification::has_i2c= true
355+com.canonical.certification::has_touchscreen= false
356+com.canonical.certification::has_thunderbolt3= false
357+com.canonical.certification::has_tpm2_chip= true
358+com.canonical.certification::has_usb_storage= true
359+com.canonical.certification::has_usb_type_c= false
360+com.canonical.certification::has_wlan_adapter= false
361+com.canonical.certification::has_wwan_module= false
362+com.canonical.qa.intliotg::has_eclite= false
363+com.canonical.qa.intliotg::has_ishtp= true
364+com.canonical.qa.intliotg::has_mei= true
365+com.canonical.qa.intliotg::has_qep= false
366+com.canonical.qa.intliotg::has_tsn= false
367+com.canonical.qa.intliotg::has_usb_dwc3_controller= false
368+com.canonical.qa.intliotg::has_va_api= true
369\ No newline at end of file
370diff --git a/launchers/test-runner-rpl b/launchers/test-runner-rpl
371new file mode 100755
372index 0000000..0f16fd9
373--- /dev/null
374+++ b/launchers/test-runner-rpl
375@@ -0,0 +1,49 @@
376+#!/usr/bin/env checkbox-cli-wrapper
377+[launcher]
378+app_id = com.canonical.qa.intliotg:checkbox
379+launcher_version = 1
380+stock_reports = text, submission_files, certification
381+
382+[test plan]
383+unit = com.canonical.qa.intliotg::intliotg-desktop-22-04
384+filter = com.canonical.qa.intliotg::intliotg-desktop-22-04
385+ com.canonical.qa.intliotg::intliotg-desktop-22-04-manual
386+ com.canonical.qa.intliotg::intliotg-desktop-22-04-automated
387+ com.canonical.qa.intliotg::intliotg-desktop-22-04-stress
388+ com.canonical.qa.intliotg::intliotg-server-22-04
389+ com.canonical.qa.intliotg::intliotg-server-22-04-manual
390+ com.canonical.qa.intliotg::intliotg-server-22-04-automated
391+ com.canonical.qa.intliotg::intliotg-server-22-04-stress
392+ com.canonical.qa.intliotg::intliotg-desktop-22-04-rt
393+ com.canonical.qa.intliotg::intliotg-desktop-22-04-manual-rt
394+ com.canonical.qa.intliotg::intliotg-desktop-22-04-automated-rt
395+ com.canonical.qa.intliotg::intliotg-desktop-22-04-stress-rt
396+ com.canonical.qa.intliotg::intliotg-server-22-04-rt
397+ com.canonical.qa.intliotg::intliotg-server-22-04-manual-rt
398+ com.canonical.qa.intliotg::intliotg-server-22-04-automated-rt
399+ com.canonical.qa.intliotg::intliotg-server-22-04-stress-rt
400+ com.canonical.qa.intliotg::rt-performance-tests-stress
401+
402+[manifest]
403+com.canonical.certification::has_audio_capture= true
404+com.canonical.certification::has_audio_playback= true
405+com.canonical.certification::has_bt_adapter= false
406+com.canonical.certification::has_bt_smart= false
407+com.canonical.certification::has_card_reader= false
408+com.canonical.certification::has_edac_module= true
409+com.canonical.certification::has_ethernet_adapter= true
410+com.canonical.certification::has_fingerprint_reader= false
411+com.canonical.certification::has_hardware_watchdog= true
412+com.canonical.certification::has_i2c= true
413+com.canonical.certification::has_touchscreen= false
414+com.canonical.certification::has_tpm2_chip= true
415+com.canonical.certification::has_usb_storage= true
416+com.canonical.certification::has_wlan_adapter= true
417+com.canonical.certification::has_wwan_module= false
418+com.canonical.qa.intliotg::has_eclite= false
419+com.canonical.qa.intliotg::has_ishtp= true
420+com.canonical.qa.intliotg::has_mei= true
421+com.canonical.qa.intliotg::has_qep= false
422+com.canonical.qa.intliotg::has_tsn= true
423+com.canonical.qa.intliotg::has_usb_dwc3_controller= false
424+com.canonical.qa.intliotg::has_va_api= true
425\ No newline at end of file
426diff --git a/launchers/test-runner-tgl b/launchers/test-runner-tgl
427new file mode 100755
428index 0000000..5562664
429--- /dev/null
430+++ b/launchers/test-runner-tgl
431@@ -0,0 +1,51 @@
432+#!/usr/bin/env checkbox-cli-wrapper
433+[launcher]
434+app_id = com.canonical.qa.intliotg:checkbox
435+launcher_version = 1
436+stock_reports = text, submission_files, certification
437+
438+[test plan]
439+unit = com.canonical.qa.intliotg::intliotg-desktop-22-04
440+filter = com.canonical.qa.intliotg::intliotg-desktop-22-04
441+ com.canonical.qa.intliotg::intliotg-desktop-22-04-manual
442+ com.canonical.qa.intliotg::intliotg-desktop-22-04-automated
443+ com.canonical.qa.intliotg::intliotg-desktop-22-04-stress
444+ com.canonical.qa.intliotg::intliotg-server-22-04
445+ com.canonical.qa.intliotg::intliotg-server-22-04-manual
446+ com.canonical.qa.intliotg::intliotg-server-22-04-automated
447+ com.canonical.qa.intliotg::intliotg-server-22-04-stress
448+ com.canonical.qa.intliotg::intliotg-desktop-22-04-rt
449+ com.canonical.qa.intliotg::intliotg-desktop-22-04-manual-rt
450+ com.canonical.qa.intliotg::intliotg-desktop-22-04-automated-rt
451+ com.canonical.qa.intliotg::intliotg-desktop-22-04-stress-rt
452+ com.canonical.qa.intliotg::intliotg-server-22-04-rt
453+ com.canonical.qa.intliotg::intliotg-server-22-04-manual-rt
454+ com.canonical.qa.intliotg::intliotg-server-22-04-automated-rt
455+ com.canonical.qa.intliotg::intliotg-server-22-04-stress-rt
456+ com.canonical.qa.intliotg::rt-performance-tests-stress
457+
458+[manifest]
459+com.canonical.certification::has_audio_capture= true
460+com.canonical.certification::has_audio_playback= true
461+com.canonical.certification::has_bt_adapter= true
462+com.canonical.certification::has_bt_smart= true
463+com.canonical.certification::has_card_reader= false
464+com.canonical.certification::has_edac_module= true
465+com.canonical.certification::has_ethernet_adapter= true
466+com.canonical.certification::has_fingerprint_reader= false
467+com.canonical.certification::has_hardware_watchdog= true
468+com.canonical.certification::has_i2c= true
469+com.canonical.certification::has_touchscreen= false
470+com.canonical.certification::has_thunderbolt3= true
471+com.canonical.certification::has_tpm2_chip= true
472+com.canonical.certification::has_usb_storage= true
473+com.canonical.certification::has_usb_type_c= true
474+com.canonical.certification::has_wlan_adapter= true
475+com.canonical.certification::has_wwan_module= false
476+com.canonical.qa.intliotg::has_eclite= false
477+com.canonical.qa.intliotg::has_ishtp= true
478+com.canonical.qa.intliotg::has_mei= true
479+com.canonical.qa.intliotg::has_qep= false
480+com.canonical.qa.intliotg::has_tsn= true
481+com.canonical.qa.intliotg::has_usb_dwc3_controller= false
482+com.canonical.qa.intliotg::has_va_api= true
483\ No newline at end of file
484diff --git a/launchers/wrapper_local b/launchers/wrapper_local
485new file mode 100755
486index 0000000..7a59da0
487--- /dev/null
488+++ b/launchers/wrapper_local
489@@ -0,0 +1,48 @@
490+#!/bin/bash
491+
492+case "$SNAP_ARCH" in
493+ "amd64") ARCH='x86_64-linux-gnu'
494+ ;;
495+ "i386") ARCH='i386-linux-gnu'
496+ ;;
497+ "arm64") ARCH='aarch64-linux-gnu'
498+ ;;
499+ "armhf") ARCH='arm-linux-gnueabihf'
500+ ;;
501+ *)
502+ echo "Unsupported architecture: $SNAP_ARCH"
503+ ;;
504+esac
505+
506+################################################
507+# Launcher common exports for any checkbox app #
508+################################################
509+
510+RUNTIME=/snap/checkbox22/current
511+if [ ! -d "$RUNTIME" ]; then
512+ echo "You need to install the checkbox22 snap."
513+ echo ""
514+ echo "You can do this with this command:"
515+ echo "snap install checkbox22"
516+ exit 1
517+fi
518+
519+export LC_ALL=C.UTF-8
520+PERL_VERSION=$(perl -e '$^V=~/^v(\d+\.\d+)/;print $1')
521+export PERL5LIB="$PERL5LIB:$SNAP/usr/lib/$ARCH/perl/$PERL_VERSION:$SNAP/usr/lib/$ARCH/perl5/$PERL_VERSION:$SNAP/usr/share/perl/$PERL_VERSION:$SNAP/usr/share/perl5"
522+export GI_TYPELIB_PATH=$SNAP/usr/lib/girepository-1.0:$SNAP/usr/lib/$ARCH/girepository-1.0
523+export PATH="$SNAP/usr/sbin:$SNAP/sbin:$SNAP/usr/bin:$SNAP/bin:/snap/bin:$PATH:/snap/checkbox-ce-oem/current/usr/bin/:/snap/checkbox-ce-oem/current/usr/sbin"
524+export ALSA_CONFIG_PATH=$SNAP/usr/share/alsa/alsa.conf:$SNAP/usr/share/alsa/pcm/default.conf
525+export PYTHONPATH="$SNAP/usr/lib/python3/dist-packages:$PYTHONPATH"
526+export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$SNAP/usr/bin:$SNAP/usr/lib:$SNAP/usr/lib/$ARCH:/snap/checkbox-ce-oem/current/usr/lib/aarch64-linux-gnu"
527+
528+if [ -e $RUNTIME/wrapper_common_classic ]; then
529+ . $RUNTIME/wrapper_common_classic
530+ # Append ce-oem provider
531+ export PROVIDERPATH="$PROVIDERPATH:/snap/checkbox-ce-oem/current/providers/checkbox-provider-ce-oem"
532+else
533+ echo "ERROR: no $RUNTIME/wrapper_common_classic found"
534+ exit 0
535+fi
536+
537+exec "$@"
538diff --git a/snap/hooks/configure b/snap/hooks/configure
539new file mode 100755
540index 0000000..f6d3331
541--- /dev/null
542+++ b/snap/hooks/configure
543@@ -0,0 +1,53 @@
544+#!/usr/bin/env python3
545+# Copyright 2017-2022 Canonical Ltd.
546+# All rights reserved.
547+
548+"""
549+This hook reads `config_vars` file from the root of a snap and reenters this
550+configuration using snapd's config facilities and rewrites the file to a
551+checkbox config format in `$SNAP_DATA/checkbox.conf`.
552+
553+config_vars should list all the configuration variables in a `key=value`
554+syntax. The line can list variable name only, if the variable should not have a
555+default value. All keys should comprise of CAPS, numbers and undescores (_).
556+E.g.:
557+
558+OPEN_N_SSID
559+OPEN_BG_SSID
560+STRESS_S3_WAIT_DELAY=60
561+
562+To change those values use the configure launcher.
563+E.g.
564+ $ checkbox-iiotg-classic.configure OPEN_N_SSID=my-wifi
565+
566+If you __really__ need to change those values using `snap set` command,
567+you need to change CAPS to lowercase and underscores to dashes (-).
568+
569+E.g.
570+ $ snap set checkbox-iiotg-classic open-n-ssid=my-wifi
571+"""
572+
573+import os
574+import sys
575+
576+sys.path.append(os.path.expandvars("$SNAP/usr/lib/python3/dist-packages"))
577+sitepkgpath = "$SNAP/lib/python3.10/site-packages"
578+sys.path.append(os.path.expandvars(sitepkgpath))
579+
580+sys.path.append(os.path.expandvars(
581+ "/snap/checkbox22/current/usr/lib/python3/dist-packages"))
582+runtimepath = "/snap/checkbox22/current/lib/python3.10/site-packages"
583+sys.path.append(os.path.expandvars(runtimepath))
584+
585+try:
586+ from checkbox_support.snap_utils.config import refresh_configuration
587+except ImportError:
588+ msg = """
589+checkbox-support not found!
590+You need to install the checkbox22 snap:
591+
592+snap install checkbox22
593+ """
594+ print(os.path.expandvars(msg), file=sys.stderr)
595+ sys.exit(1)
596+refresh_configuration()
597diff --git a/snap/hooks/install b/snap/hooks/install
598new file mode 100755
599index 0000000..8ddcb56
600--- /dev/null
601+++ b/snap/hooks/install
602@@ -0,0 +1,16 @@
603+#!/bin/sh
604+
605+set -e
606+snapctl set slave=enabled
607+
608+echo "$(id -un 1000 2>/dev/null || id -un 1001 2>/dev/null || echo ubuntu) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/checkbox
609+
610+mkdir -p /etc/polkit-1/localauthority/50-local.d
611+cat <<EOF > /etc/polkit-1/localauthority/50-local.d/com.canonical.certification.checkbox.pkla
612+[Checkbox]
613+Identity=unix-group:sudo
614+Action=org.freedesktop.NetworkManager.*
615+ResultAny=yes
616+ResultInactive=yes
617+ResultActive=yes
618+EOF
619diff --git a/snap/hooks/remove b/snap/hooks/remove
620new file mode 100755
621index 0000000..3360f53
622--- /dev/null
623+++ b/snap/hooks/remove
624@@ -0,0 +1,5 @@
625+#!/bin/sh
626+set -e
627+
628+rm -f /etc/sudoers.d/checkbox
629+rm -f /etc/polkit-1/localauthority/50-local.d/com.canonical.certification.checkbox.pkla || /bin/true
630diff --git a/snap/plugins/checkbox_provider.py b/snap/plugins/checkbox_provider.py
631new file mode 100644
632index 0000000..7d5232f
633--- /dev/null
634+++ b/snap/plugins/checkbox_provider.py
635@@ -0,0 +1,94 @@
636+# -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*-
637+#
638+# Copyright (C) 2016-2022 Canonical Ltd
639+#
640+# This program is free software: you can redistribute it and/or modify
641+# it under the terms of the GNU General Public License version 3 as
642+# published by the Free Software Foundation.
643+#
644+# This program is distributed in the hope that it will be useful,
645+# but WITHOUT ANY WARRANTY; without even the implied warranty of
646+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
647+# GNU General Public License for more details.
648+#
649+# You should have received a copy of the GNU General Public License
650+# along with this program. If not, see <http://www.gnu.org/licenses/>.
651+
652+import os
653+from textwrap import dedent
654+from typing import Any, Dict, List, Set
655+
656+from snapcraft.plugins.v2 import PluginV2
657+from snapcraft.project import Project, get_snapcraft_yaml
658+
659+
660+class PluginImpl(PluginV2):
661+ @classmethod
662+ def get_schema(cls) -> Dict[str, Any]:
663+ return {}
664+
665+ def __init__(self, *, part_name: str, options) -> None:
666+ super().__init__(part_name=part_name, options=options)
667+ self.project = Project(snapcraft_yaml_file_path=get_snapcraft_yaml())
668+ self.build_snaps = {"checkbox-provider-tools"}
669+
670+ def get_build_snaps(self) -> Set[str]:
671+ if self.project.info.base in (None, "core16"):
672+ self.build_snaps.add("checkbox")
673+ if self.project.info.base == "core18":
674+ self.build_snaps.add("checkbox18")
675+ if self.project.info.base == "core20":
676+ self.build_snaps.add("checkbox20")
677+ if self.project.info.base == "core22":
678+ self.build_snaps.add("checkbox22")
679+ return self.build_snaps
680+
681+ def get_build_packages(self) -> Set[str]:
682+ return set()
683+
684+ def get_build_environment(self) -> Dict[str, str]:
685+ provider_dirs = []
686+ provider_stage_dir = os.path.join(self.project.stage_dir, "providers")
687+ if os.path.exists(provider_stage_dir):
688+ provider_dirs += [
689+ os.path.join(provider_stage_dir, provider)
690+ for provider in os.listdir(provider_stage_dir)
691+ ]
692+ for snap_name in self.build_snaps:
693+ build_snap_provider_dir = os.path.join(
694+ "/snap", snap_name, "current", "providers")
695+ if os.path.exists(build_snap_provider_dir):
696+ provider_dirs += [
697+ os.path.join(build_snap_provider_dir, provider)
698+ for provider in os.listdir(build_snap_provider_dir)
699+ ]
700+ return {"PROVIDERPATH": ":".join(provider_dirs)}
701+
702+ def get_build_commands(self) -> List[str]:
703+ build_commands = [
704+ 'checkbox-provider-tools validate',
705+ 'checkbox-provider-tools build',
706+ 'checkbox-provider-tools install '
707+ '--layout=relocatable '
708+ '--prefix=/providers/{} '
709+ '--root="${{SNAPCRAFT_PART_INSTALL}}"'.format(self.name)
710+ ]
711+ # See https://github.com/snapcore/snapcraft/blob/master/snapcraft/plugins/v2/python.py
712+ # Now fix shebangs.
713+ # TODO: replace with snapcraftctl once the two scripts are consolidated
714+ # and use mangling.rewrite_python_shebangs.
715+ build_commands.append(
716+ dedent(
717+ """\
718+ for e in $(find "${SNAPCRAFT_PART_INSTALL}" -type f -executable)
719+ do
720+ if head -1 "${e}" | grep -q "python" ; then
721+ sed \\
722+ -r '1 s|#\\!.*python3?$|#\\!/usr/bin/env python3|' \\
723+ -i "${e}"
724+ fi
725+ done
726+ """
727+ )
728+ )
729+ return build_commands
730diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
731new file mode 100644
732index 0000000..1757c02
733--- /dev/null
734+++ b/snap/snapcraft.yaml
735@@ -0,0 +1,113 @@
736+name: checkbox-iiotg-classic
737+summary: Checkbox tests for the iiotg classic project
738+description: |
739+ Collection of tests to be run on devices that are part of the iiotg project
740+version: '0.1dev-jammy'
741+confinement: classic
742+grade: stable
743+
744+base: core22
745+
746+apps:
747+ checkbox-cli:
748+ command-chain: [bin/wrapper_local]
749+ command: bin/checkbox-cli-wrapper
750+ configure:
751+ command-chain: [bin/wrapper_local]
752+ command: bin/configure
753+ remote-slave:
754+ command-chain: [bin/wrapper_local]
755+ command: bin/checkbox-cli-wrapper slave
756+ daemon: simple
757+ restart-condition: on-failure
758+ shell:
759+ command-chain: [bin/wrapper_local]
760+ command: bin/shell-wrapper
761+ test-runner:
762+ command-chain: [bin/wrapper_local]
763+ command: bin/test-runner
764+ test-runner-ehl:
765+ command-chain: [bin/wrapper_local]
766+ command: bin/test-runner-ehl
767+ test-runner-tgl:
768+ command-chain: [bin/wrapper_local]
769+ command: bin/test-runner-tgl
770+ test-runner-icl:
771+ command-chain: [bin/wrapper_local]
772+ command: bin/test-runner-icl
773+ test-runner-adl:
774+ command-chain: [bin/wrapper_local]
775+ command: bin/test-runner-adl
776+ test-runner-rpl:
777+ command-chain: [bin/wrapper_local]
778+ command: bin/test-runner-rpl
779+
780+passthrough:
781+ hooks:
782+ configure:
783+ command-chain: [bin/wrapper_local]
784+
785+parts:
786+ checkbox-provider-intliotg:
787+ plugin: dump
788+ source: https://git.launchpad.net/~checkbox-dev/checkbox-iiotg/+git/checkbox-provider-intliotg
789+ source-type: git
790+ stage-packages:
791+ - nux-tools # required by Graphics tests
792+ - evemu-tools # required by Power Management CPU cstate (PMC)
793+ - msr-tools # required by Power Management CPU cstate (PMC)
794+ - ethtool # required by Time Sensitive Networking (TSN)
795+ - edac-utils # required by Error Detection And Correction Memory Controller (EDAC)
796+ - libva2
797+ - va-driver-all
798+ - vainfo
799+ - rt-tests # provides cyclictest for RT performance testing
800+ build-attributes: [no-patchelf]
801+ build-snaps:
802+ - checkbox22
803+ override-build: |
804+ export PYTHONPATH=/snap/checkbox22/current/lib/python3.10/site-packages/
805+ for path in $(find "/snap/checkbox22/current/providers/" -mindepth 1 -maxdepth 1 -type d); do export PROVIDERPATH=$path${PROVIDERPATH:+:$PROVIDERPATH}; done
806+ python3 manage.py validate
807+ python3 manage.py build
808+ python3 manage.py install --layout=relocatable --prefix=/providers/checkbox-provider-intliotg --root="$SNAPCRAFT_PART_INSTALL"
809+ build-packages:
810+ - python3-jinja2
811+ tsn-tools:
812+ plugin: nil
813+ build-packages:
814+ - gcc
815+ - libc6-dev
816+ override-build: |
817+ mkdir -p ${SNAPCRAFT_PART_INSTALL}/usr/bin
818+ gcc ${SNAPCRAFT_PROJECT_DIR}/parts/checkbox-provider-intliotg/src/src/tsn-talker.c -o ${SNAPCRAFT_PROJECT_DIR}/parts/checkbox-provider-intliotg/src/src/tsn-talker
819+ cp -v ${SNAPCRAFT_PROJECT_DIR}/parts/checkbox-provider-intliotg/src/src/tsn-talker ${SNAPCRAFT_PART_INSTALL}/usr/bin/
820+ gcc ${SNAPCRAFT_PROJECT_DIR}/parts/checkbox-provider-intliotg/src/src/tsn-listener.c -o ${SNAPCRAFT_PROJECT_DIR}/parts/checkbox-provider-intliotg/src/src/tsn-listener
821+ cp -v ${SNAPCRAFT_PROJECT_DIR}/parts/checkbox-provider-intliotg/src/src/tsn-listener ${SNAPCRAFT_PART_INSTALL}/usr/bin/
822+ gcc ${SNAPCRAFT_PROJECT_DIR}/parts/checkbox-provider-intliotg/src/src/udp_tai.c -o ${SNAPCRAFT_PROJECT_DIR}/parts/checkbox-provider-intliotg/src/src/udp_tai -lpthread
823+ cp -v ${SNAPCRAFT_PROJECT_DIR}/parts/checkbox-provider-intliotg/src/src/udp_tai ${SNAPCRAFT_PART_INSTALL}/usr/bin/
824+ parts-meta-info:
825+ plugin: nil
826+ build-attributes: [no-patchelf]
827+ override-build: |
828+ snapcraftctl build
829+ for p in `ls -d ../../*`; do
830+ if [ -d $p/src ]; then
831+ (cd $p/src
832+ if [ -d $p/src/.git ]; then
833+ (echo `basename $p`\: && git show --pretty=format:"%h%d %aN %ci%n%s%n" -q ; echo ) >> $SNAPCRAFT_PART_INSTALL/parts_meta_info
834+ fi # for additional `source-type` support, elif them here
835+ )
836+ fi
837+ done
838+ after: [checkbox-provider-intliotg]
839+ launchers:
840+ plugin: dump
841+ source: launchers/
842+ build-attributes: [no-patchelf]
843+ organize:
844+ '*': bin/
845+ config-variables:
846+ plugin: dump
847+ source: config/
848+ build-attributes: [no-patchelf]

Subscribers

People subscribed via source and target branches