zephyr/scripts
Ming Shao 94f2d2437f twister: refine the twister test plan generation
Due to the diverse coding styles and lack of preprocessing when
scanning for test cases, there were many unintended combinations
of yaml test scenarios and C test functions with the regex-based
test case discovery, which caused an inaccurate test plan and test
result stats.

As the new ztest fx is used, the test cases of a test instance can
be accurately determined via zephyr.symbols file.

Because the zephyr.symbols file is not available until after build,
test cases determination is placed right after the build stage of
the pipeline and before the runtime test collection.

For those test instances that don't go through the build stage,
such as those with "Skip filtered" (statically filtered) reason
before entering the pipeline, they are not affected.

This patch also adjust the stats logic because the zephyr.symbols
file is generated after build. So ExecutionCounter update is split
and some must be postponed until test execution pipeline is completed.

Some concepts:

A test instance = a yaml scenario + a platform
"Test instance" and "test config" are synonyms in twister, unfortunately
excessive IMHO...

A test instance can be filtered or skipped in 3 ways.
Let's define "runtime" as "after entering the execution pipeline".

1) statically filtered (before runtime)
   Such test instance is filtered by analyzing the yaml and never
   enters the execution pipeline.
2) cmake filtered (runtime)
   Such test instance enters pipeline and is filtered at cmake stage.
3) build skipped (also runtime)
   Such test instance enters pipeline and is skipped at build stage.

All the test instances that enter the execution pipeline will go
through the report stage, where ExecutionCounter is further updated.

The meaning of the fields of ExecutionCounter are:

 .skipped_configs = static filtered + cmake filtered + build skipped
 .skipped_runtime = cmake filtered + build skipped
 .skipped_filter = static filtered
 .done = instances that enter the execution pipeline
 .passed = instances that actually executed and passed

Definition of the overall stats:
total_complete = .done + .skipped_filter
total = yaml test scenario * applicable platforms
complete percentage = total_complete / total
pass rate = passed / (total - skipped_configs)

Signed-off-by: Ming Shao <ming.shao@intel.com>
2022-10-01 06:42:54 -04:00
..
build includes: prefer <zephyr/kernel.h> over <zephyr/zephyr.h> 2022-09-05 16:31:47 +02:00
checkpatch scripts: checkpatch: add Atmel Pwm typedef 2022-07-12 17:51:23 +02:00
ci scripts: ci: test_plan: Specify ZEPHYR_BASE for list_boards 2022-09-08 18:17:10 +09:00
coccinelle
coredump debug: coredump: add xtensa intel adsp, support toolchains 2022-06-23 15:44:45 -04:00
dts dtlib: error out on duplicate node names 2022-09-21 07:55:40 -07:00
footprint footprint: Add bt_hci_rpmsg with ISO for the nRF5340 netcore 2022-09-02 11:08:31 +00:00
gitlint scripts: gitlint: block Change-Id tags in commit message 2022-04-20 20:59:33 -04:00
kconfig scripts: kconfig: update size functions to convert bits to bytes 2022-09-21 15:22:36 +02:00
logging/dictionary scripts: dictionary: Initialise Colorama during module load 2022-05-24 09:00:16 -07:00
net
pylib/twister twister: refine the twister test plan generation 2022-10-01 06:42:54 -04:00
release scripts: release: strip title names 2022-09-27 16:51:45 -05:00
schemas/twister twister: add support for platform_type filter 2022-05-14 14:49:59 -04:00
support
tests twister: fix bug retrieving subtests 2022-08-12 17:39:35 +02:00
tracing scripts: tracing: Initialise Colorama during module load 2022-05-24 09:00:16 -07:00
utils scripts: migrate_includes: migrate zephyr.h to kernel.h 2022-09-05 16:31:47 +02:00
west_commands west: jlink: adding optional flash loader flag required for some boards 2022-09-21 09:33:42 -05:00
.gitignore
checkpatch.pl scripts: checkpatch: allow leading spaces in multi-lines macros 2022-06-17 10:18:37 +02:00
checkstack.pl
coccicheck
dump_bugs_pickle.py scripts: dump_bugs_pickle: strip bug titles 2022-09-27 16:51:45 -05:00
gen_gcov_files.py
get_maintainer.py
github_helpers.py scripts: add github_helpers.py 2022-05-24 18:48:03 +02:00
list_boards.py scripts: remove ZEPHYR_BASE as default root for board listing 2022-08-18 14:29:14 +02:00
make_bugs_pickle.py scripts: add make_bugs_pickle.py 2022-05-24 18:48:03 +02:00
requirements-base.txt requirements: bump pyelftools to >=0.27 2022-06-10 09:46:31 +02:00
requirements-build-test.txt
requirements-compliance.txt scripts: Upgrade to junitparser v2+ 2022-08-03 14:04:36 -04:00
requirements-doc.txt doc: Do not use Sphinx 5.2.0.post0 2022-09-25 10:37:32 +02:00
requirements-extras.txt scripts: requirements-extras: Request imgtool 1.9 for write-block-size > 8 2022-09-01 10:28:33 +02:00
requirements-run-test.txt soc: xtensa: tools: remove dependency of netifaces package 2022-08-16 22:51:53 -07:00
requirements.txt
series-push-hook.sh
set_assignees.py scripts: set_assignee: handle exceptions 2022-07-18 21:41:22 -04:00
spelling.txt
tags.sh
twister twister: Set stdin explicitly on stty calls 2022-08-26 12:51:28 +02:00
valgrind.supp
west-commands.yml west: Add completion support for zsh 2022-09-06 08:43:15 -07:00
zephyr_module.py scripts: modules: Mark the build as tainted if blobs present 2022-08-29 15:57:59 +02:00