blob: 3cd0df8b1d11a694ef3da79dc88e9584a016b59a [file] [log] [blame]
#!/usr/bin/env python3
""" lava_job_generator_configs.py:
Default configurations for lava job generator """
from __future__ import print_function
__copyright__ = """
/*
* SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
"""
__author__ = "tf-m@lists.trustedfirmware.org"
__project__ = "Trusted Firmware-M Open CI"
__version__ = "1.4.0"
import os
tf_downloads="https://downloads.trustedfirmware.org"
coverage_trace_plugin=tf_downloads + "/coverage-plugin/qa-tools/coverage-tool/coverage-plugin/coverage_trace.so"
# LAVA test-monitor definition for configs without regression tests.
# "Non-Secure system starting..." is expected to indicate
# that TF-M has been booted successfully.
no_reg_tests_monitors_cfg = {
'name': 'NS_SYSTEM_BOOTING',
'start': 'Non-Secure system',
'end': r'starting\\.{3}',
'pattern': r'Non-Secure system starting\\.{3}',
'fixup': {"pass": "!", "fail": ""},
}
# LAVA test-monitor definitions for configs with tests.
# Results of each test case is parsed separately, capturing test case id.
# Works across any test suites enabled.
mcuboot_tests_monitor_cfg = {
'name': 'mcuboot_suite',
'start': 'Execute test suites for the MCUBOOT area',
'end': 'End of MCUBOOT test suites',
'pattern': r"TEST: (?P<test_case_id>.+?) - (?P<result>(PASSED|FAILED|SKIPPED))",
'fixup': {"pass": "PASSED", "fail": "FAILED", "skip": "SKIPPED"},
}
s_reg_tests_monitors_cfg = {
'name': 'secure_regression_suite',
'start': 'Execute test suites for the Secure area',
'end': 'End of Secure test suites',
'pattern': r"TEST: (?P<test_case_id>.+?) - (?P<result>(PASSED|FAILED|SKIPPED))",
'fixup': {"pass": "PASSED", "fail": "FAILED", "skip": "SKIPPED"},
}
ns_reg_tests_monitors_cfg = {
'name': 'non_secure_regression_suite',
'start': 'Execute test suites for the Non-secure area',
'end': 'End of Non-secure test suites',
'pattern': r"TEST: (?P<test_case_id>.+?) - (?P<result>(PASSED|FAILED|SKIPPED))",
'fixup': {"pass": "PASSED", "fail": "FAILED", "skip": "SKIPPED"},
}
bl1_1_reg_tests_monitors_cfg = {
'name': 'BL1_1_regression_suite',
'start': 'Execute test suites for the BL1_1 area',
'end': 'End of BL1_1 test suites',
'pattern': r"TEST: (?P<test_case_id>.+?) - (?P<result>(PASSED|FAILED|SKIPPED))",
'fixup': {"pass": "PASSED", "fail": "FAILED", "skip": "SKIPPED"},
}
bl1_2_reg_tests_monitors_cfg = {
'name': 'BL1_2_regression_suite',
'start': 'Execute test suites for the BL1_2 area',
'end': 'End of BL1_2 test suites',
'pattern': r"TEST: (?P<test_case_id>.+?) - (?P<result>(PASSED|FAILED|SKIPPED))",
'fixup': {"pass": "PASSED", "fail": "FAILED", "skip": "SKIPPED"},
}
arch_tests_monitors_cfg = {
'name': 'psa_api_suite',
'start': 'Running..',
'end': 'Entering standby..',
'pattern': r" DESCRIPTION: +(?P<test_case_id>.+?)\r?\n"
r".+?"
r"TEST RESULT: (?P<result>(PASSED|FAILED|SKIPPED|SIM ERROR))",
'fixup': {"pass": "PASSED", "fail": "FAILED", "skip": "SKIPPED", "sim_error": "SIM ERROR"},
}
# Group related monitors into same list to simplify the code
no_reg_tests_monitors = [no_reg_tests_monitors_cfg]
reg_tests_monitors = [] + \
([mcuboot_tests_monitor_cfg] if "RegBL2" in os.getenv("TEST_REGRESSION") and os.getenv("BL2") == "True" else []) + \
([s_reg_tests_monitors_cfg] if "RegS" in os.getenv("TEST_REGRESSION") else []) + \
([ns_reg_tests_monitors_cfg] if "RegNS" in os.getenv("TEST_REGRESSION") else []) + \
([bl1_1_reg_tests_monitors_cfg] if "RegBL1_1" in os.getenv("TEST_REGRESSION") else []) + \
([bl1_2_reg_tests_monitors_cfg] if "RegBL1_2" in os.getenv("TEST_REGRESSION") else [])
arch_tests_monitors = [arch_tests_monitors_cfg]
# MPS2 with BL2 bootloader for AN521
# IMAGE0ADDRESS: 0x10000000
# IMAGE0FILE: \Software\bl2.bin ; BL2 bootloader
# IMAGE1ADDRESS: 0x10080000
# IMAGE1FILE: \Software\tfm_s_ns_signed.bin ; TF-M example application binary blob
tfm_mps2_sse_200 = {
"templ": "mps2.jinja2",
"job_name": "mps2_an521_bl2",
"device_type": "mps",
"job_timeout": 15,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 10,
"monitor_timeout": 15,
"poweroff_timeout": 1,
"recovery_store_url": "https://ci.trustedfirmware.org/userContent/",
"platforms": {"arm/mps2/an521": "mps2_sse200_an512_new.tar.gz"},
"binaries": {
# Run script references to test_.*/.*.bin
# These files will be saved under folders: test_firmware and test_bootloader
"test_firmware": {
"data": "nspe/tfm_s_ns_signed.bin"
},
"test_bootloader": {
"data": "spe/bin/bl2.bin"
}
},
"monitors": {
'no_reg_tests': no_reg_tests_monitors,
# FPU test on FPGA not supported yet
'reg_tests': (reg_tests_monitors if 'FPON' not in os.getenv("EXTRA_PARAMS") else [mcuboot_tests_monitor_cfg]),
# FF test on FPGA not supported in LAVA yet
'arch_tests': (arch_tests_monitors if os.getenv("TEST_PSA_API") != "IPC" else []),
}
}
# FVP with BL2 bootloader for Corstone300
# firmware <-> ns <-> application: --application cpu0=bl2.axf
# bootloader <-> s <-> data: --data cpu0=tfm_s_ns_signed.bin@0x01000000
fvp_mps3_cs300_bl2 = {
"templ": "fvp_mps3.jinja2",
"job_name": "fvp_mps3_cs300_bl2",
"device_type": "fvp",
"job_timeout": 15,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 10,
"monitor_timeout": 15,
"poweroff_timeout": 1,
"platforms": {"arm/mps3/corstone300/fvp": ""},
"binaries": {
"bl2": {
"application": "spe/bin/bl2.axf"
},
"tfm_s_ns_img": {
"data": "nspe/tfm_s_ns_signed.bin",
"offset": "0x38000000",
}
},
"monitors": {
'no_reg_tests': no_reg_tests_monitors,
'reg_tests': reg_tests_monitors,
}
}
# FVP with BL1 and BL2 bootloader for Corstone315
fvp_mps4_cs315_bl1_bl2 = {
"templ": "fvp_mps4_cs315.jinja2",
"job_name": "fvp_mps4_cs315_bl1_bl2",
"device_type": "fvp",
"job_timeout": 15,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 10,
"monitor_timeout": 15,
"poweroff_timeout": 1,
"platforms": {"arm/mps4/corstone315": ""},
"binaries": {
"bl1": {
"data": "spe/bin/bl1_1.bin",
"offset": "0x11000000",
},
"bl2": {
"data": "spe/bin/bl2_signed.bin",
"offset": "0x12031400",
},
"cm_prov": {
"data": "spe/bin/cm_provisioning_bundle.bin",
"offset": "0x12024000",
},
"dm_prov": {
"data": "spe/bin/dm_provisioning_bundle.bin",
"offset": "0x1202aa00",
},
"tfm_s_ns_img": {
"data": "nspe/tfm_s_ns_signed.bin",
"offset": "0x38000000",
}
},
"monitors": {
'no_reg_tests': no_reg_tests_monitors,
'reg_tests': reg_tests_monitors,
}
}
# FVP with BL1 and BL2 bootloader for Corstone320
fvp_mps4_cs320_bl1_bl2 = {
"templ": "fvp_mps4_cs320.jinja2",
"job_name": "fvp_mps4_cs320_bl1_bl2",
"device_type": "fvp",
"job_timeout": 15,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 10,
"monitor_timeout": 15,
"poweroff_timeout": 1,
"platforms": {"arm/mps4/corstone320": ""},
"binaries": {
"bl1": {
"data": "spe/bin/bl1_1.bin",
"offset": "0x11000000",
},
"bl2": {
"data": "spe/bin/bl2_signed.bin",
"offset": "0x12031400",
},
"cm_prov": {
"data": "spe/bin/cm_provisioning_bundle.bin",
"offset": "0x12024000",
},
"dm_prov": {
"data": "spe/bin/dm_provisioning_bundle.bin",
"offset": "0x1202aa00",
},
"tfm_s_ns_img": {
"data": "nspe/tfm_s_ns_signed.bin",
"offset": "0x38000000",
}
},
"monitors": {
'no_reg_tests': no_reg_tests_monitors,
'reg_tests': reg_tests_monitors,
}
}
# FVP with BL1 and BL2 bootloader for Corstone1000
fvp_corstone1000 = {
"templ": "fvp_corstone1000.jinja2",
"job_name": "fvp_corstone1000",
"device_type": "fvp",
"job_timeout": 15,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 10,
"monitor_timeout": 15,
"poweroff_timeout": 1,
"platforms": {"arm/corstone1000": ""},
"binaries": {
"bl1": {
"application": "spe/bin/bl1.bin"
},
"tfm_s_ns_img": {
"data": "spe/bin/cs1000.bin",
"offset": "0x68000000",
}
},
"monitors": {
'reg_tests': reg_tests_monitors if "FVP" in os.getenv('EXTRA_PARAMS') else [],
}
}
# FVP with BL2 bootloader for AN521
# application: --application cpu0=bl2.axf
# data: --data cpu0=tfm_s_ns_signed.bin@0x10080000
fvp_mps2_an521_bl2 = {
"templ": "fvp_mps2.jinja2",
"job_name": "fvp_mps2_an521_bl2",
"device_type": "fvp",
"job_timeout": 15,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 10,
"monitor_timeout": 15,
"poweroff_timeout": 1,
"platforms": {"arm/mps2/an521": ""},
"binaries": {
"bl2": {
"application": "spe/bin/bl2.axf"
},
"tfm_s_ns_img": {
"data": "nspe/tfm_s_ns_signed.bin",
"offset": "0x10080000",
}
},
"monitors": {
'no_reg_tests': no_reg_tests_monitors,
'reg_tests': reg_tests_monitors,
'arch_tests': arch_tests_monitors,
}
}
# FVP with BL2 bootloader for AN519
# application: --application cpu0=bl2.axf
# data: --data cpu0=tfm_s_ns_signed.bin@0x10080000
fvp_mps2_an519_bl2 = {
"templ": "fvp_mps2.jinja2",
"job_name": "fvp_mps2_an519_bl2",
"device_type": "fvp",
"job_timeout": 15,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 10,
"monitor_timeout": 15,
"poweroff_timeout": 1,
"platforms": {"arm/mps2/an519": ""},
"cpu0_baseline": 1,
"binaries": {
"bl2": {
"application": "spe/bin/bl2.axf"
},
"tfm_s_ns_img": {
"data": "nspe/tfm_s_ns_signed.bin",
"offset": "0x10080000",
}
},
"monitors": {
'no_reg_tests': no_reg_tests_monitors,
'reg_tests': reg_tests_monitors,
}
}
# RSE on TC3 FVP
fvp_rse_tc3 = {
"templ": "fvp_rse_tc3.jinja2",
"job_name": "fvp_rse_tc3",
"device_type": "fvp",
"job_timeout": 15,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 10,
"monitor_timeout": 15,
"poweroff_timeout": 1,
"platforms": {"arm/rse/tc/tc3": ""},
"binaries": {
"rom": {
"data": "spe/bin/rom.bin"
},
"combined_provisioning_message": {
"data": "spe/bin/provisioning/combined_provisioning_message.bin"
},
"flash": {
"data": "spe/bin/host_flash.bin"
}
},
"monitors": {
'no_reg_tests': no_reg_tests_monitors,
'reg_tests': reg_tests_monitors,
}
}
# RSE on TC4 FVP
fvp_rse_tc4 = {
"templ": "fvp_rse_tc4.jinja2",
"job_name": "fvp_rse_tc4",
"device_type": "fvp",
"job_timeout": 15,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 10,
"monitor_timeout": 15,
"poweroff_timeout": 1,
"platforms": {"arm/rse/tc/tc4": ""},
"binaries": {
"rom": {
"data": "spe/bin/rom.bin"
},
"combined_provisioning_message": {
"data": "spe/bin/provisioning/combined_provisioning_message.bin"
},
"flash": {
"data": "spe/bin/host_flash.bin"
}
},
"monitors": {
'no_reg_tests': no_reg_tests_monitors,
'reg_tests': reg_tests_monitors,
}
}
# QEMU for AN521 with BL2 bootloader
qemu_mps2_bl2 = {
"templ": "qemu_mps2_bl2.jinja2",
"job_name": "qemu_mps2_bl2",
"device_type": "qemu",
"job_timeout": 30,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 20,
"monitor_timeout": 20,
"poweroff_timeout": 1,
"platforms": {"arm/mps2/an521": ""},
"binaries": {
"mcuboot": {
"data": "spe/bin/bl2.bin",
"offset": "0x10000000"
},
"tfm": {
"data": "nspe/tfm_s_ns_signed.bin",
"offset": "0x10080000"
}
},
"monitors": {
# FPU test on AN521 qemu not supported yet
'reg_tests': (reg_tests_monitors if 'FPON' not in os.getenv("EXTRA_PARAMS") else [mcuboot_tests_monitor_cfg]),
}
}
# Musca-B1 with BL2 bootloader
# unified hex file comprising of both bl2.bin and tfm_s_ns_signed.bin
# srec_cat bin/bl2.bin -Binary -offset 0xA000000 bin/tfm_s_ns_signed.bin -Binary -offset 0xA020000 -o tfm.hex -Intel
musca_b1_bl2 = {
"templ": "musca_b1.jinja2",
"job_name": "musca_b1_bl2",
"device_type": "musca-b",
"job_timeout": 40,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 20,
"monitor_timeout": 10,
"poweroff_timeout": 5,
"platforms": {"arm/musca_b1": ""},
"binaries": {
"test_binary": {
"data": "spe/bin/tfm.hex" # firmware
}
},
"monitors": {
'no_reg_tests': no_reg_tests_monitors,
'reg_tests': reg_tests_monitors,
}
}
# STM32L562E-DK
stm32l562e_dk = {
"templ": "stm32l562e_dk.jinja2",
"job_name": "stm32l562e_dk",
"device_type": "stm32l562e-dk",
"job_timeout": 24,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 15,
"monitor_timeout": 15,
"poweroff_timeout": 5,
"platforms": {"stm/stm32l562e_dk": ""},
"binaries": {
"tarball": {
"data": "spe/api_ns/bin/stm32l562e-dk-tfm.tar.bz2"
}
},
"monitors": {
'reg_tests': reg_tests_monitors,
}
}
# STM32U5 B-U585I-IOT02A
b_u585i_iot02a = {
"templ": "b_u585i_iot02a.jinja2",
"job_name": "b_u585i_iot02a",
"device_type": "b-u585i-iot02a",
"job_timeout": 5,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 3,
"monitor_timeout": 3,
"poweroff_timeout": 2,
"platforms": {"stm/b_u585i_iot02a": ""},
"binaries": {
"tarball": {
"data": "spe/api_ns/bin/b_u585i_iot02a-tfm.tar.bz2"
}
},
"monitors": {
'reg_tests': reg_tests_monitors,
}
}
# STM32H5 STM32H573I-DK
stm32h573i_dk = {
"templ": "stm32h573i_dk.jinja2",
"job_name": "stm32h573i_dk",
"device_type": "stm32h573i-dk",
"job_timeout": 5,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 3,
"monitor_timeout": 3,
"poweroff_timeout": 2,
"platforms": {"stm/stm32h573i_dk": ""},
"binaries": {
"tarball": {
"data": "spe/api_ns/bin/stm32h573i_dk-tfm.tar.bz2"
}
},
"monitors": {
'reg_tests': reg_tests_monitors,
}
}
# LPCxpresso55S69
lpcxpresso55s69 = {
"templ": "lpcxpresso55s69.jinja2",
"job_name": "lpcxpresso55s69",
"device_type": "lpcxpresso55s69",
"job_timeout": 24,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 15,
"monitor_timeout": 15,
"poweroff_timeout": 5,
"platforms": {"nxp/lpcxpresso55s69": ""},
"binaries": {
"tarball": {
"data": "nspe/bin/lpcxpresso55s69-tfm.tar.bz2"
}
},
"monitors": {
'no_reg_tests': no_reg_tests_monitors,
'reg_tests': reg_tests_monitors,
}
}
# Cypress PSoC64
psoc64 = {
"templ": "psoc64.jinja2",
"job_name": "psoc64",
"device_type": "cy8ckit-064s0s2-4343w",
"job_timeout": 30,
"notification_email": "tf-m-ci-notifications@lists.trustedfirmware.org",
"action_timeout": 20,
"monitor_timeout": 20,
"poweroff_timeout": 5,
"platforms": {"cypress/psoc64": ""},
"binaries": {
"spe": {
"data": "spe/bin/tfm_s_signed.hex"
},
"nspe": {
"data": "nspe/tfm_ns_signed.hex"
}
},
"monitors": {
'reg_tests': reg_tests_monitors,
}
}
# All configurations should be mapped here
# Configs need bl2
lava_gen_config_map_bl2 = {
"mps2_an521_bl2": tfm_mps2_sse_200,
"fvp_mps3_cs300_bl2": fvp_mps3_cs300_bl2,
"fvp_mps2_an521_bl2": fvp_mps2_an521_bl2,
"fvp_mps2_an519_bl2": fvp_mps2_an519_bl2,
"fvp_mps4_cs315_bl1_bl2": fvp_mps4_cs315_bl1_bl2,
"fvp_mps4_cs320_bl1_bl2": fvp_mps4_cs320_bl1_bl2,
"fvp_corstone1000": fvp_corstone1000,
"fvp_rse_tc3": fvp_rse_tc3,
"fvp_rse_tc4": fvp_rse_tc4,
"qemu_mps2_bl2": qemu_mps2_bl2,
"musca_b1": musca_b1_bl2,
"stm32l562e_dk": stm32l562e_dk,
"b_u585i_iot02a": b_u585i_iot02a,
"stm32h573i_dk": stm32h573i_dk
}
# Configs without bl2
lava_gen_config_map_nobl2 = {
"lpcxpresso55s69": lpcxpresso55s69,
"psoc64": psoc64,
}
lavagen_config_sort_order = [
"templ",
"job_name",
"device_type",
"job_timeout",
"action_timeout",
"monitor_timeout",
"recovery_store_url",
"platforms",
"monitors"
]
lava_gen_monitor_sort_order = [
'name',
'start',
'end',
'pattern',
'fixup',
]