blob: 86181dd812bfb4d6f6d72954898b02402da8f67c [file] [log] [blame]
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +01001#!/usr/bin/env python3
2
3""" lava_job_generator_configs.py:
4
5 Default configurations for lava job generator """
6
7from __future__ import print_function
8
9__copyright__ = """
10/*
11 * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
12 *
13 * SPDX-License-Identifier: BSD-3-Clause
14 *
15 */
16 """
17__author__ = "Minos Galanakis"
18__email__ = "minos.galanakis@linaro.org"
19__project__ = "Trusted Firmware-M Open CI"
20__status__ = "stable"
Minos Galanakisea421232019-06-20 17:11:28 +010021__version__ = "1.1"
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +010022
23
24def lava_gen_get_config_subset(config,
25 default=True,
26 core=True,
27 regression=True):
28 """ Allow dynamic generation of configuration combinations by subtracking
29 undesired ones """
30
31 from copy import deepcopy
32 cfg = deepcopy(config)
33 tests = deepcopy(config["tests"])
34
35 # Remove all configs not requests by the caller
36 if not default:
37 tests.pop("Default")
Minos Galanakisea421232019-06-20 17:11:28 +010038 if not core:
39 tests.pop("CoreIPC")
40 tests.pop("CoreIPCTfmLevel2")
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +010041 if not regression:
42 tests.pop("Regression")
43
44 cfg["tests"] = tests
45 return cfg
46
47
48tfm_mps2_sse_200 = {
49 "templ": "template_tfm_mps2_sse_200.jinja2",
50 "job_name": "mps2plus-arm-tfm",
Minos Galanakisafb43152019-09-25 14:17:39 +010051 "device_type": "mps",
Minos Galanakis8da148a2019-10-18 17:26:40 +010052 "job_timeout": 180,
Minos Galanakisea421232019-06-20 17:11:28 +010053 "action_timeout": 90,
54 "monitor_timeout": 90,
Minos Galanakis8da148a2019-10-18 17:26:40 +010055 "poweroff_timeout": 5,
Minos Galanakisea421232019-06-20 17:11:28 +010056 "recovery_store_url": "%(jenkins_url)s/"
57 "job/%(jenkins_job)s",
58 "artifact_store_url": "%(jenkins_url)s/"
59 "job/%(jenkins_job)s",
Minos Galanakis329cf102019-09-24 15:58:25 +010060 "platforms": {"AN521": "mps2_an521_v3.0.tar.gz"},
61 "compilers": ["GNUARM"],
Minos Galanakisea421232019-06-20 17:11:28 +010062 "build_types": ["Debug", "Release"],
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +010063 "boot_types": ["BL2"],
64 "tests": {
65 'Default': {
66 "binaries": {
Minos Galanakisea421232019-06-20 17:11:28 +010067 "firmware": "tfm_sign.bin",
68 "bootloader": "mcuboot.bin"
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +010069 },
70 "monitors": [
71 {
72 'name': 'Secure_Test_Suites_Summary',
Minos Galanakis8da148a2019-10-18 17:26:40 +010073 'start': '[Sec Thread]',
Matthew Hartfb6fd362020-03-04 21:03:59 +000074 'end': 'system starting',
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +010075 'pattern': r'\x1b\\[1;34m\\[Sec Thread\\] '
76 r'(?P<test_case_id>Secure image '
77 r'initializing)(?P<result>!)',
78 'fixup': {"pass": "!", "fail": ""},
79 'required': ["secure_image_initializing"]
80 } # Monitors
81 ]
82 }, # Default
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +010083 'Regression': {
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +010084 "binaries": {
Minos Galanakisea421232019-06-20 17:11:28 +010085 "firmware": "tfm_sign.bin",
86 "bootloader": "mcuboot.bin"
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +010087 },
88 "monitors": [
89 {
90 'name': 'Secure_Test_Suites_Summary',
91 'start': 'Secure test suites summary',
92 'end': 'End of Secure test suites',
93 'pattern': r"[\x1b]\\[37mTest suite '(?P<"
Dean Birchf1b727a2019-05-17 17:39:24 +010094 r"test_case_id>[^\n]+)' has [\x1b]\\[32m "
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +010095 r"(?P<result>PASSED|FAILED)",
96 'fixup': {"pass": "PASSED", "fail": "FAILED"},
97 'required': [
Minos Galanakis8305a6e2019-04-04 15:55:40 +010098 ("psa_protected_storage_"
99 "s_interface_tests_tfm_sst_test_2xxx_"),
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +0100100 "sst_reliability_tests_tfm_sst_test_3xxx_",
Minos Galanakis8305a6e2019-04-04 15:55:40 +0100101 "sst_rollback_protection_tests_tfm_sst_test_4xxx_",
TudorCretu8b138472019-08-30 10:51:05 +0100102 ("psa_internal_trusted_storage_"
103 "s_interface_tests_tfm_its_test_2xxx_"),
104 "its_reliability_tests_tfm_its_test_3xxx_",
Minos Galanakis8305a6e2019-04-04 15:55:40 +0100105 ("audit_"
106 "logging_secure_interface_test_tfm_audit_test_1xxx_"),
107 "crypto_secure_interface_tests_tfm_crypto_test_5xxx_",
108 ("initial_attestation_service_"
109 "secure_interface_tests_tfm_attest_test_1xxx_"),
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +0100110 ]
111 },
112 {
113 'name': 'Non_Secure_Test_Suites_Summary',
114 'start': 'Non-secure test suites summary',
115 'end': r'End of Non-secure test suites',
116 'pattern': r"[\x1b]\\[37mTest suite '(?P"
Dean Birchf1b727a2019-05-17 17:39:24 +0100117 r"<test_case_id>[^\n]+)' has [\x1b]\\[32m "
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +0100118 r"(?P<result>PASSED|FAILED)",
119 'fixup': {"pass": "PASSED", "fail": "FAILED"},
120 'required': [
Minos Galanakis8305a6e2019-04-04 15:55:40 +0100121 ("psa_protected_storage"
122 "_ns_interface_tests_tfm_sst_test_1xxx_"),
TudorCretu8b138472019-08-30 10:51:05 +0100123 ("psa_internal_trusted_storage"
124 "_ns_interface_tests_tfm_its_test_1xxx_"),
Minos Galanakis8305a6e2019-04-04 15:55:40 +0100125 ("auditlog_"
126 "non_secure_interface_test_tfm_audit_test_1xxx_"),
127 ("crypto_"
128 "non_secure_interface_test_tfm_crypto_test_6xxx_"),
129 ("initial_attestation_service_"
Minos Galanakisf0dae4e2019-05-20 10:56:57 +0100130 "non_secure_interface_tests_tfm_attest_test_2xxx_"),
Minos Galanakis8305a6e2019-04-04 15:55:40 +0100131 "core_non_secure_positive_tests_tfm_core_test_1xxx_"
132 ]
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +0100133 }
134 ] # Monitors
135 }, # Regression
Minos Galanakisea421232019-06-20 17:11:28 +0100136 'CoreIPC': {
137 "binaries": {
138 "firmware": "tfm_sign.bin",
139 "bootloader": "mcuboot.bin"
140 },
141 "monitors": [
142 {
143 'name': 'Secure_Test_Suites_Summary',
Minos Galanakis8da148a2019-10-18 17:26:40 +0100144 'start': '[Sec Thread]',
Matthew Hartfb6fd362020-03-04 21:03:59 +0000145 'end': 'system starting',
Minos Galanakisea421232019-06-20 17:11:28 +0100146 'pattern': r'\x1b\\[1;34m\\[Sec Thread\\] '
147 r'(?P<test_case_id>Secure image '
148 r'initializing)(?P<result>!)',
149 'fixup': {"pass": "!", "fail": ""},
150 'required': ["secure_image_initializing"]
151 } # Monitors
152 ]
153 }, # CoreIPC
154 'CoreIPCTfmLevel2': {
155 "binaries": {
156 "firmware": "tfm_sign.bin",
157 "bootloader": "mcuboot.bin"
158 },
159 "monitors": [
160 {
161 'name': 'Secure_Test_Suites_Summary',
Minos Galanakis8da148a2019-10-18 17:26:40 +0100162 'start': '[Sec Thread]',
Minos Galanakisea421232019-06-20 17:11:28 +0100163 'end': '\\x1b\\\[0m',
164 'pattern': r'\x1b\\[1;34m\\[Sec Thread\\] '
165 r'(?P<test_case_id>Secure image '
166 r'initializing)(?P<result>!)',
167 'fixup': {"pass": "!", "fail": ""},
168 'required': ["secure_image_initializing"]
169 } # Monitors
170 ]
171 }, # CoreIPCTfmLevel2
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +0100172 } # Tests
173}
174
Dean Bircha6ede7e2020-03-13 14:00:33 +0000175
Matthew Hartfb6fd362020-03-04 21:03:59 +0000176tfm_mps2_fvp_bl2 = {
Dean Bircha6ede7e2020-03-13 14:00:33 +0000177 "templ": "template_tfm_mps2_fvp.jinja2",
Matthew Hartfb6fd362020-03-04 21:03:59 +0000178 "job_name": "mps2plus-arm-tfm-fvp",
Dean Bircha6ede7e2020-03-13 14:00:33 +0000179 "device_type": "fvp",
Matthew Hartfb6fd362020-03-04 21:03:59 +0000180 "job_timeout": 5,
181 "action_timeout": 2,
182 "monitor_timeout": 2,
183 "poweroff_timeout": 1,
Dean Bircha6ede7e2020-03-13 14:00:33 +0000184 "recovery_store_url": "%(jenkins_url)s/"
185 "job/%(jenkins_job)s",
186 "artifact_store_url": "%(jenkins_url)s/"
187 "job/%(jenkins_job)s",
Matthew Hartfb6fd362020-03-04 21:03:59 +0000188 "platforms": {"AN521": "mps2_an521_v3.0.tar.gz"},
189 "compilers": ["GNUARM", "ARMCLANG"],
Dean Bircha6ede7e2020-03-13 14:00:33 +0000190 "build_types": ["Debug", "Release"],
191 "boot_types": ["BL2"],
Matthew Hartfb6fd362020-03-04 21:03:59 +0000192 "data_bin_offset": "0x10080000",
193 "tests": {
194 'Default': {
195 "binaries": {
196 "firmware": "mcuboot.axf",
197 "bootloader": "tfm_s_ns_signed.bin"
198 },
199 "monitors": [
200 {
201 'name': 'Secure_Test_Suites_Summary',
202 'start': r'[Sec Thread]',
203 'end': r'system starting',
204 'pattern': r'\x1b\\[1;34m\\[Sec Thread\\] '
205 r'(?P<test_case_id>Secure image '
206 r'initializing)(?P<result>!)',
207 'fixup': {"pass": "!", "fail": ""},
208 'required': ["secure_image_initializing"]
209 } # Monitors
210 ]
211 }, # Default
212 'Regression': {
213 "binaries": {
214 "firmware": "mcuboot.axf",
215 "bootloader": "tfm_s_ns_signed.bin"
216 },
217 "monitors": [
218 {
219 'name': 'Secure_Test_Suites_Summary',
220 'start': 'Secure test suites summary',
221 'end': 'End of Secure test suites',
222 'pattern': r"[\x1b]\\[37mTest suite '(?P<"
223 r"test_case_id>[^\n]+)' has [\x1b]\\[32m "
224 r"(?P<result>PASSED|FAILED)",
225 'fixup': {"pass": "PASSED", "fail": "FAILED"},
226 'required': [
227 ("psa_protected_storage_"
228 "s_interface_tests_tfm_sst_test_2xxx_"),
229 "sst_reliability_tests_tfm_sst_test_3xxx_",
230 "sst_rollback_protection_tests_tfm_sst_test_4xxx_",
231 ("psa_internal_trusted_storage_"
232 "s_interface_tests_tfm_its_test_2xxx_"),
233 "its_reliability_tests_tfm_its_test_3xxx_",
234 ("audit_"
235 "logging_secure_interface_test_tfm_audit_test_1xxx_"),
236 "crypto_secure_interface_tests_tfm_crypto_test_5xxx_",
237 ("initial_attestation_service_"
238 "secure_interface_tests_tfm_attest_test_1xxx_"),
239 ]
240 },
241 {
242 'name': 'Non_Secure_Test_Suites_Summary',
243 'start': 'Non-secure test suites summary',
244 'end': r'End of Non-secure test suites',
245 'pattern': r"[\x1b]\\[37mTest suite '(?P"
246 r"<test_case_id>[^\n]+)' has [\x1b]\\[32m "
247 r"(?P<result>PASSED|FAILED)",
248 'fixup': {"pass": "PASSED", "fail": "FAILED"},
249 'required': [
250 ("psa_protected_storage"
251 "_ns_interface_tests_tfm_sst_test_1xxx_"),
252 ("psa_internal_trusted_storage"
253 "_ns_interface_tests_tfm_its_test_1xxx_"),
254 ("auditlog_"
255 "non_secure_interface_test_tfm_audit_test_1xxx_"),
256 ("crypto_"
257 "non_secure_interface_test_tfm_crypto_test_6xxx_"),
258 ("initial_attestation_service_"
259 "non_secure_interface_tests_tfm_attest_test_2xxx_"),
260 "core_non_secure_positive_tests_tfm_core_test_1xxx_"
261 ]
262 }
263 ] # Monitors
264 }, # Regression
265 'CoreIPC': {
266 "binaries": {
267 "firmware": "mcuboot.axf",
268 "bootloader": "tfm_s_ns_signed.bin"
269 },
270 "monitors": [
271 {
272 'name': 'Secure_Test_Suites_Summary',
273 'start': r'[Sec Thread]',
274 'end': r'system starting',
275 'pattern': r'\x1b\\[1;34m\\[Sec Thread\\] '
276 r'(?P<test_case_id>Secure image '
277 r'initializing)(?P<result>!)',
278 'fixup': {"pass": "!", "fail": ""},
279 'required': ["secure_image_initializing"]
280 } # Monitors
281 ]
282 }, # CoreIPC
283 'CoreIPCTfmLevel2': {
284 "binaries": {
285 "firmware": "mcuboot.axf",
286 "bootloader": "tfm_s_ns_signed.bin"
287 },
288 "monitors": [
289 {
290 'name': 'Secure_Test_Suites_Summary',
291 'start': r'[Sec Thread]',
292 'end': r'system starting',
293 'pattern': r'\x1b\\[1;34m\\[Sec Thread\\] '
294 r'(?P<test_case_id>Secure image '
295 r'initializing)(?P<result>!)',
296 'fixup': {"pass": "!", "fail": ""},
297 'required': ["secure_image_initializing"]
298 } # Monitors
299 ]
300 }, # CoreIPCTfmLevel2
301 } # Tests
302}
303
304
305tfm_mps2_fvp_nobl2 = {
306 "templ": "template_tfm_mps2_fvp.jinja2",
307 "job_name": "mps2plus-arm-tfm-fvp",
308 "device_type": "fvp",
309 "job_timeout": 5,
310 "action_timeout": 2,
311 "monitor_timeout": 2,
312 "poweroff_timeout": 1,
313 "recovery_store_url": "%(jenkins_url)s/"
314 "job/%(jenkins_job)s",
315 "artifact_store_url": "%(jenkins_url)s/"
316 "job/%(jenkins_job)s",
317 "platforms": {"AN521": "mps2_an521_v3.0.tar.gz"},
318 "compilers": ["GNUARM", "ARMCLANG"],
319 "build_types": ["Debug", "Release"],
320 "boot_types": ["NOBL2"],
321 "data_bin_offset": "0x00100000",
Dean Bircha6ede7e2020-03-13 14:00:33 +0000322 "tests": {
323 'Default': {
324 "binaries": {
325 "firmware": "tfm_s.axf",
326 "bootloader": "tfm_ns.bin"
327 },
328 "monitors": [
329 {
330 'name': 'Secure_Test_Suites_Summary',
Matthew Hartfb6fd362020-03-04 21:03:59 +0000331 'start': r'[Sec Thread]',
332 'end': r'system starting',
Dean Bircha6ede7e2020-03-13 14:00:33 +0000333 'pattern': r'\x1b\\[1;34m\\[Sec Thread\\] '
334 r'(?P<test_case_id>Secure image '
335 r'initializing)(?P<result>!)',
336 'fixup': {"pass": "!", "fail": ""},
337 'required': ["secure_image_initializing"]
Matthew Hartfb6fd362020-03-04 21:03:59 +0000338 }
Dean Bircha6ede7e2020-03-13 14:00:33 +0000339 ]
340 }, # Default
341 'Regression': {
342 "binaries": {
343 "firmware": "tfm_s.axf",
344 "bootloader": "tfm_ns.bin"
345 },
346 "monitors": [
347 {
348 'name': 'Secure_Test_Suites_Summary',
349 'start': 'Secure test suites summary',
350 'end': 'End of Secure test suites',
351 'pattern': r"[\x1b]\\[37mTest suite '(?P<"
352 r"test_case_id>[^\n]+)' has [\x1b]\\[32m "
353 r"(?P<result>PASSED|FAILED)",
354 'fixup': {"pass": "PASSED", "fail": "FAILED"},
355 'required': [
356 ("psa_protected_storage_"
357 "s_interface_tests_tfm_sst_test_2xxx_"),
358 "sst_reliability_tests_tfm_sst_test_3xxx_",
359 "sst_rollback_protection_tests_tfm_sst_test_4xxx_",
360 ("psa_internal_trusted_storage_"
361 "s_interface_tests_tfm_its_test_2xxx_"),
362 "its_reliability_tests_tfm_its_test_3xxx_",
363 ("audit_"
364 "logging_secure_interface_test_tfm_audit_test_1xxx_"),
365 "crypto_secure_interface_tests_tfm_crypto_test_5xxx_",
366 ("initial_attestation_service_"
367 "secure_interface_tests_tfm_attest_test_1xxx_"),
368 ]
369 },
370 {
371 'name': 'Non_Secure_Test_Suites_Summary',
372 'start': 'Non-secure test suites summary',
373 'end': r'End of Non-secure test suites',
374 'pattern': r"[\x1b]\\[37mTest suite '(?P"
375 r"<test_case_id>[^\n]+)' has [\x1b]\\[32m "
376 r"(?P<result>PASSED|FAILED)",
377 'fixup': {"pass": "PASSED", "fail": "FAILED"},
378 'required': [
379 ("psa_protected_storage"
380 "_ns_interface_tests_tfm_sst_test_1xxx_"),
381 ("psa_internal_trusted_storage"
382 "_ns_interface_tests_tfm_its_test_1xxx_"),
383 ("auditlog_"
384 "non_secure_interface_test_tfm_audit_test_1xxx_"),
385 ("crypto_"
386 "non_secure_interface_test_tfm_crypto_test_6xxx_"),
387 ("initial_attestation_service_"
388 "non_secure_interface_tests_tfm_attest_test_2xxx_"),
389 "core_non_secure_positive_tests_tfm_core_test_1xxx_"
390 ]
391 }
392 ] # Monitors
393 }, # Regression
394 'CoreIPC': {
395 "binaries": {
396 "firmware": "tfm_s.axf",
397 "bootloader": "tfm_ns.bin"
398 },
399 "monitors": [
400 {
401 'name': 'Secure_Test_Suites_Summary',
Matthew Hartfb6fd362020-03-04 21:03:59 +0000402 'start': r'[Sec Thread]',
403 'end': r'system starting',
Dean Bircha6ede7e2020-03-13 14:00:33 +0000404 'pattern': r'\x1b\\[1;34m\\[Sec Thread\\] '
405 r'(?P<test_case_id>Secure image '
406 r'initializing)(?P<result>!)',
407 'fixup': {"pass": "!", "fail": ""},
408 'required': ["secure_image_initializing"]
409 } # Monitors
410 ]
411 }, # CoreIPC
412 'CoreIPCTfmLevel2': {
413 "binaries": {
414 "firmware": "tfm_s.axf",
415 "bootloader": "tfm_ns.bin"
416 },
417 "monitors": [
418 {
419 'name': 'Secure_Test_Suites_Summary',
Matthew Hartfb6fd362020-03-04 21:03:59 +0000420 'start': r'[Sec Thread]',
421 'end': r'system starting',
Dean Bircha6ede7e2020-03-13 14:00:33 +0000422 'pattern': r'\x1b\\[1;34m\\[Sec Thread\\] '
423 r'(?P<test_case_id>Secure image '
424 r'initializing)(?P<result>!)',
425 'fixup': {"pass": "!", "fail": ""},
426 'required': ["secure_image_initializing"]
427 } # Monitors
428 ]
429 }, # CoreIPCTfmLevel2
430 } # Tests
431}
432
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +0100433# All configurations should be mapped here
Dean Bircha6ede7e2020-03-13 14:00:33 +0000434lava_gen_config_map = {"tfm_mps2_sse_200": tfm_mps2_sse_200,
Matthew Hartfb6fd362020-03-04 21:03:59 +0000435 "tfm_mps2_fvp_bl2": tfm_mps2_fvp_bl2,
436 "tfm_mps2_fvp_nobl2": tfm_mps2_fvp_nobl2}
Minos Galanakisf4ca6ac2017-12-11 02:39:21 +0100437lavagen_config_sort_order = [
438 "templ",
439 "job_name",
440 "device_type",
441 "job_timeout",
442 "action_timeout",
443 "monitor_timeout",
444 "recovery_store_url",
445 "artifact_store_url",
446 "platforms",
447 "compilers",
448 "build_types",
449 "boot_types",
450 "tests"
451]
452
453lava_gen_monitor_sort_order = [
454 'name',
455 'start',
456 'end',
457 'pattern',
458 'fixup',
459]
460
461if __name__ == "__main__":
462 import os
463 import sys
464 from lava_helper import sort_lavagen_config
465 try:
466 from tfm_ci_pylib.utils import export_config_map
467 except ImportError:
468 dir_path = os.path.dirname(os.path.realpath(__file__))
469 sys.path.append(os.path.join(dir_path, "../"))
470 from tfm_ci_pylib.utils import export_config_map
471
472 if len(sys.argv) == 2:
473 if sys.argv[1] == "--export":
474 export_config_map(lava_gen_config_map)
475 if len(sys.argv) == 3:
476 if sys.argv[1] == "--export":
477 export_config_map(sort_lavagen_config(lava_gen_config_map),
478 sys.argv[2])