twister: add support for levels and test configuration

Add support test levels and the ability to assign a specific test to one
or more levels. Using command line options of twister it is then possible
to select a level and just execute the tests included in this level.

Additionally, a test configuration allows definiing level
dependencies and additional inclusion of tests into a specific level if
the test itself does not have this information already.

In the configuration file you can include complete components using
regular expressions and you can specify which test level to import from
the same file, making management of levels easier.

To help with testing outside of upstream CI infrastructure, additional
options are available in the configuration file, which can be hosted
locally. As of now, those options are available:

- Ability to ignore default platforms as defined in board definitions
  (Those are mostly emulation platforms used to run tests in upstream
  CI)
- Option to specify your own list of default platforms overriding what
  upstream defines.
- Ability to override build_onl_all options used in some testscases.
  This will treat tests or sample as any other just build for default
  platforms you specify in the configuation file or on the command line.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Anas Nashif 2022-11-21 15:17:21 -05:00 committed by Carles Cufí
commit 14d88f8425
9 changed files with 224 additions and 48 deletions

View file

@ -0,0 +1,44 @@
#
# Schema to validate a YAML file describing a Zephyr test configuration.
#
type: map
mapping:
"platforms":
type: map
required: false
mapping:
"override_default_platforms":
type: bool
required: false
"increased_platform_scope":
type: bool
required: false
"default_platforms":
type: seq
required: false
sequence:
- type: str
"levels":
type: seq
required: false
sequence:
- type: map
required: false
mapping:
"name":
type: str
required: true
"description":
type: str
required: false
"adds":
type: seq
required: false
sequence:
- type: str
"inherits":
type: seq
required: false
sequence:
- type: str

View file

@ -64,6 +64,12 @@ mapping:
"ignore_qemu_crash":
type: bool
required: false
"levels":
type: seq
required: false
sequence:
- type: str
enum: ["smoke", "unit", "integration", "acceptance", "system", "regression"]
"testcases":
type: seq
required: false
@ -237,6 +243,12 @@ mapping:
"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