2017-07-24 10:24:35 -07:00
|
|
|
#
|
|
|
|
# Schema to validate a YAML file describing a Zephyr test platform
|
|
|
|
#
|
|
|
|
# We load this with pykwalify
|
|
|
|
# (http://pykwalify.readthedocs.io/en/unstable/validation-rules.html),
|
|
|
|
# a YAML structure validator, to validate the YAML files that describe
|
|
|
|
# Zephyr test platforms
|
|
|
|
#
|
2021-01-13 12:08:34 -06:00
|
|
|
# The original spec comes from Zephyr's twister script
|
2017-07-24 10:24:35 -07:00
|
|
|
#
|
2024-01-15 20:23:53 -05:00
|
|
|
schema;scenario-schema:
|
|
|
|
type: map
|
|
|
|
# has to be not-required, otherwise the parser gets
|
|
|
|
# confused and things it never found it
|
|
|
|
required: false
|
|
|
|
mapping:
|
|
|
|
"arch_exclude":
|
|
|
|
type: any
|
|
|
|
required: false
|
|
|
|
"arch_allow":
|
|
|
|
type: any
|
|
|
|
required: false
|
2024-11-21 10:31:46 -05:00
|
|
|
"vendor_exclude":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
"vendor_allow":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
2024-01-15 20:23:53 -05:00
|
|
|
"testcases":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
"build_only":
|
|
|
|
type: bool
|
|
|
|
required: false
|
|
|
|
"build_on_all":
|
|
|
|
type: bool
|
|
|
|
required: false
|
|
|
|
"depends_on":
|
|
|
|
type: any
|
|
|
|
required: false
|
|
|
|
"extra_args":
|
|
|
|
type: any
|
|
|
|
required: false
|
|
|
|
"extra_configs":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
"extra_conf_files":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
"extra_overlay_confs":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
"extra_dtc_overlay_files":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
"extra_sections":
|
|
|
|
type: any
|
|
|
|
required: false
|
2025-04-05 10:20:02 +10:00
|
|
|
"expect_reboot":
|
|
|
|
type: bool
|
|
|
|
required: false
|
2024-01-15 20:23:53 -05:00
|
|
|
"required_snippets":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
"filter":
|
|
|
|
type: str
|
|
|
|
required: false
|
|
|
|
"levels":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
enum: ["smoke", "unit", "integration", "acceptance", "system", "regression"]
|
|
|
|
"integration_platforms":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
2024-12-05 10:16:03 -05:00
|
|
|
"integration_toolchains":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
2024-01-15 20:23:53 -05:00
|
|
|
"ignore_faults":
|
|
|
|
type: bool
|
|
|
|
required: false
|
|
|
|
"ignore_qemu_crash":
|
|
|
|
type: bool
|
|
|
|
required: false
|
|
|
|
"harness":
|
|
|
|
type: str
|
|
|
|
required: false
|
|
|
|
"harness_config":
|
|
|
|
type: map
|
|
|
|
required: false
|
|
|
|
mapping:
|
2025-02-17 16:03:46 +01:00
|
|
|
"power_measurements":
|
|
|
|
type: any
|
|
|
|
required: false
|
2025-02-11 15:28:45 +01:00
|
|
|
"shell_commands_file":
|
2025-02-02 10:29:54 -05:00
|
|
|
type: str
|
|
|
|
required: false
|
2025-02-11 15:28:45 +01:00
|
|
|
"shell_commands":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: map
|
|
|
|
mapping:
|
|
|
|
"command":
|
|
|
|
type: str
|
|
|
|
required: true
|
|
|
|
"expected":
|
|
|
|
type: str
|
2024-01-15 20:23:53 -05:00
|
|
|
"type":
|
|
|
|
type: str
|
|
|
|
required: false
|
|
|
|
"fixture":
|
|
|
|
type: str
|
|
|
|
required: false
|
|
|
|
"ordered":
|
|
|
|
type: bool
|
|
|
|
required: false
|
|
|
|
"pytest_root":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
"pytest_args":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
"pytest_dut_scope":
|
|
|
|
type: str
|
|
|
|
enum: ["function", "class", "module", "package", "session"]
|
|
|
|
required: false
|
2024-12-20 21:19:57 +01:00
|
|
|
"ctest_args":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
2024-01-15 20:23:53 -05:00
|
|
|
"regex":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
2024-06-19 21:00:58 +02:00
|
|
|
"robot_testsuite":
|
|
|
|
type: any
|
|
|
|
required: false
|
|
|
|
"robot_option":
|
|
|
|
type: any
|
2024-01-15 20:23:53 -05:00
|
|
|
required: false
|
|
|
|
"record":
|
|
|
|
type: map
|
|
|
|
required: false
|
|
|
|
mapping:
|
|
|
|
"regex":
|
2025-01-10 14:12:44 +01:00
|
|
|
type: seq
|
2024-01-15 20:23:53 -05:00
|
|
|
required: true
|
2025-01-10 14:12:44 +01:00
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
"merge":
|
|
|
|
type: bool
|
|
|
|
required: false
|
2024-05-29 16:57:35 +02:00
|
|
|
"as_json":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
2024-01-15 20:23:53 -05:00
|
|
|
"bsim_exe_name":
|
|
|
|
type: str
|
|
|
|
required: false
|
2024-11-19 12:13:54 +01:00
|
|
|
"ztest_suite_repeat":
|
|
|
|
type: int
|
|
|
|
required: false
|
|
|
|
"ztest_test_repeat":
|
|
|
|
type: int
|
|
|
|
required: false
|
|
|
|
"ztest_test_shuffle":
|
|
|
|
type: bool
|
|
|
|
required: false
|
2024-01-15 20:23:53 -05:00
|
|
|
"min_ram":
|
|
|
|
type: int
|
|
|
|
required: false
|
|
|
|
"min_flash":
|
|
|
|
type: int
|
|
|
|
required: false
|
|
|
|
"modules":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
"platform_exclude":
|
|
|
|
type: any
|
|
|
|
required: false
|
|
|
|
"platform_allow":
|
|
|
|
type: any
|
|
|
|
required: false
|
|
|
|
"platform_type":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
enum: ["mcu", "qemu", "sim", "unit", "native"]
|
|
|
|
"platform_key":
|
|
|
|
required: false
|
|
|
|
type: seq
|
|
|
|
matching: "all"
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
"simulation_exclude":
|
|
|
|
type: seq
|
|
|
|
required: false
|
|
|
|
sequence:
|
|
|
|
- type: str
|
|
|
|
enum:
|
|
|
|
[
|
|
|
|
"qemu",
|
|
|
|
"simics",
|
|
|
|
"xt-sim",
|
|
|
|
"renode",
|
|
|
|
"nsim",
|
|
|
|
"mdb-nsim",
|
|
|
|
"tsim",
|
|
|
|
"armfvp",
|
|
|
|
"native",
|
|
|
|
"custom",
|
|
|
|
]
|
|
|
|
"tags":
|
|
|
|
type: any
|
|
|
|
required: false
|
|
|
|
"timeout":
|
|
|
|
type: int
|
|
|
|
required: false
|
|
|
|
"toolchain_exclude":
|
|
|
|
type: any
|
|
|
|
required: false
|
|
|
|
"toolchain_allow":
|
|
|
|
type: any
|
|
|
|
required: false
|
|
|
|
"type":
|
|
|
|
type: str
|
|
|
|
enum: ["unit"]
|
|
|
|
"skip":
|
|
|
|
type: bool
|
|
|
|
required: false
|
|
|
|
"slow":
|
|
|
|
type: bool
|
|
|
|
required: false
|
|
|
|
"sysbuild":
|
|
|
|
type: bool
|
|
|
|
required: false
|
|
|
|
|
2017-07-24 10:24:35 -07:00
|
|
|
type: map
|
|
|
|
mapping:
|
2017-10-04 16:14:27 -04:00
|
|
|
"common":
|
2024-01-15 20:23:53 -05:00
|
|
|
include: scenario-schema
|
2017-07-24 10:24:35 -07:00
|
|
|
# The sample descriptor, if present
|
|
|
|
"sample":
|
|
|
|
type: map
|
2021-11-19 13:57:23 +08:00
|
|
|
required: false
|
2017-07-24 10:24:35 -07:00
|
|
|
mapping:
|
|
|
|
"name":
|
|
|
|
type: str
|
2021-11-19 13:57:23 +08:00
|
|
|
required: true
|
2017-07-24 10:24:35 -07:00
|
|
|
"description":
|
|
|
|
type: str
|
2021-11-19 13:57:23 +08:00
|
|
|
required: false
|
2017-07-24 10:24:35 -07:00
|
|
|
# The list of testcases -- IDK why this is a sequence of
|
|
|
|
# maps maps, shall just be a sequence of maps
|
|
|
|
# maybe it is just an artifact?
|
|
|
|
"tests":
|
2020-05-28 07:31:17 -04:00
|
|
|
type: map
|
2023-02-21 21:30:30 +00:00
|
|
|
required: true
|
2020-05-28 07:31:17 -04:00
|
|
|
matching-rule: "any"
|
|
|
|
mapping:
|
|
|
|
# The key for the testname is any, so
|
|
|
|
# regex;(([a-zA-Z0-9_]+)) for this to work, note below we
|
2021-11-19 13:57:23 +08:00
|
|
|
# make it required: false
|
2020-05-28 07:31:17 -04:00
|
|
|
regex;(([a-zA-Z0-9_]+)):
|
2024-01-15 20:23:53 -05:00
|
|
|
include: scenario-schema
|