You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
201 lines
6.5 KiB
201 lines
6.5 KiB
# Copyright (c) 2016 Intel Corporation |
|
# SPDX-License-Identifier: Apache-2.0 |
|
|
|
menu "Testing" |
|
|
|
source "subsys/testsuite/ztest/Kconfig" |
|
|
|
config TEST |
|
bool "Mark project as a test" |
|
# For tests, store thread names in binary and dump them on crash to |
|
# ease debugging. |
|
select THREAD_NAME |
|
help |
|
Mark a project or an application as a test. This will enable a few |
|
test defaults. |
|
|
|
config TEST_EXTRA_STACK_SIZE |
|
int "Test function extra thread stack size" |
|
default 2048 if COVERAGE_GCOV |
|
default 768 if XTENSA |
|
default 0 |
|
depends on TEST |
|
help |
|
Additional stack for tests on some platform where default is not |
|
enough. |
|
|
|
config HAS_COVERAGE_SUPPORT |
|
bool |
|
help |
|
The code coverage report generation is only available on boards |
|
with enough spare RAM to buffer the coverage data, or on boards |
|
based on the POSIX ARCH. |
|
|
|
config COVERAGE |
|
bool "Create coverage data" |
|
depends on HAS_COVERAGE_SUPPORT |
|
help |
|
This option will build your application with the -coverage option |
|
which will generate data that can be used to create coverage reports. |
|
For more information see |
|
https://docs.zephyrproject.org/latest/guides/coverage.html |
|
|
|
choice |
|
prompt "Coverage mode" |
|
default COVERAGE_NATIVE_GCOV if NATIVE_BUILD |
|
default COVERAGE_GCOV if !NATIVE_BUILD |
|
depends on COVERAGE |
|
|
|
config COVERAGE_NATIVE_GCOV |
|
bool "Host compiler gcov based code coverage" |
|
depends on NATIVE_BUILD |
|
help |
|
Build natively with the compiler standard `--coverage` options, |
|
that is with gcov/GCC-compatible coverage |
|
|
|
config COVERAGE_NATIVE_SOURCE |
|
bool "Host compiler source based code coverage" |
|
depends on NATIVE_BUILD |
|
depends on "${ZEPHYR_TOOLCHAIN_VARIANT}" = "llvm" |
|
help |
|
Build natively with the compiler source based coverage options. |
|
Today this is only supported with LLVM |
|
|
|
config COVERAGE_GCOV |
|
bool "Create Coverage data from hardware platform" |
|
depends on !NATIVE_BUILD |
|
help |
|
This option will select the custom gcov library. The reports will |
|
be available over serial. This serial dump can be passed to |
|
gen_gcov_files.py which creates the required .gcda files. These |
|
can be read by gcov utility. For more details see gcovr.com . |
|
|
|
endchoice |
|
|
|
config COVERAGE_GCOV_HEAP_SIZE |
|
int "Size of heap allocated for gcov coverage data dump" |
|
default 32768 if X86 || SOC_SERIES_MPS2 |
|
default 16384 |
|
help |
|
This option configures the heap size allocated for gcov coverage |
|
data to be dumped over serial. If the value is 0, no buffer will be used, |
|
data will be dumped directly over serial. |
|
|
|
config COVERAGE_DUMP |
|
bool "Dump coverage data on exit" |
|
depends on COVERAGE_GCOV |
|
help |
|
Dump collected coverage information to console on exit. |
|
|
|
config FORCE_COVERAGE |
|
bool "Force coverage" |
|
select HAS_COVERAGE_SUPPORT |
|
help |
|
Regardless of platform support, it will enable coverage data production. |
|
If the platform does not support coverage by default, setting this config |
|
does not guarantee that coverage data will be gathered. |
|
Application may not fit memory or crash at runtime. |
|
|
|
config TEST_USERSPACE |
|
bool "Indicate that this test exercises user mode" |
|
help |
|
This option indicates that a test case puts threads in user mode, |
|
and that the build system will [override and] enable USERSPACE |
|
if the platform supports it. It should be set in a .conf file on |
|
a per-test basis and is not meant to be used outside test cases. |
|
Tests with this option should also have the "userspace" filtering |
|
tag in their testcase.yaml file. |
|
|
|
The userspace APIs are no-ops if userspace is not enabled, so it is |
|
OK to enable this even if the test will run on platforms which do |
|
not support userspace. The test should still run on those platforms, |
|
just with all threads in supervisor mode. |
|
|
|
If a test *requires* that userspace be enabled in order to |
|
pass, CONFIG_ARCH_HAS_USERSPACE should be filtered in its |
|
testcase.yaml. |
|
|
|
config TEST_LOGGING_DEFAULTS |
|
bool "Test case logging defaults" |
|
depends on TEST |
|
select LOG |
|
select LOG_DEFAULT_MINIMAL |
|
default y |
|
help |
|
Option which implements default policy of enabling logging in |
|
minimal mode for all test cases. For tests that need alternate |
|
logging configuration, or no logging at all, disable this |
|
in the project-level defconfig. |
|
|
|
config TEST_ENABLE_USERSPACE |
|
bool |
|
depends on TEST_USERSPACE |
|
depends on ARCH_HAS_USERSPACE |
|
imply USERSPACE |
|
imply DYNAMIC_OBJECTS |
|
default y |
|
help |
|
This hidden option implements the TEST_USERSPACE logic. It turns on |
|
USERSPACE when CONFIG_ARCH_HAS_USERSPACE is set and the test |
|
case itself indicates that it exercises user mode via |
|
CONFIG_TEST_USERSPACE. |
|
|
|
config TEST_USERSPACE_WITHOUT_HW_STACK_PROTECTION |
|
bool "Run User Mode tests without additionally enabling stack protection" |
|
depends on TEST_ENABLE_USERSPACE |
|
default y if SOC_SERIES_KINETIS_KE1XF || SOC_SERIES_S32K1 |
|
help |
|
A HW platform might not have sufficient MPU/MMU capabilities to support |
|
running all test cases with User Mode and HW Stack Protection features |
|
simultaneously enabled. For this platforms we execute the User Mode- |
|
related tests without enabling HW stack protection. |
|
|
|
config TEST_HW_STACK_PROTECTION |
|
bool "Hardware-based stack overflow detection if available" |
|
depends on ARCH_HAS_STACK_PROTECTION |
|
depends on TEST |
|
select HW_STACK_PROTECTION |
|
default y if !TEST_USERSPACE_WITHOUT_HW_STACK_PROTECTION |
|
help |
|
This option will enable hardware-based stack protection by default |
|
for all test cases if the hardware supports it. |
|
|
|
config TEST_FLASH_DRIVERS |
|
bool "Test flash drivers" |
|
depends on BOARD_QEMU_X86 |
|
select FLASH_HAS_DRIVER_ENABLED |
|
select FLASH_HAS_PAGE_LAYOUT |
|
help |
|
This option will help test the flash drivers. This should be enabled |
|
only when using qemu_x86. |
|
|
|
config TEST_ARM_CORTEX_M |
|
bool |
|
depends on CPU_CORTEX_M |
|
depends on TEST |
|
default y |
|
select ARM_SECURE_BUSFAULT_HARDFAULT_NMI if ARM_SECURE_FIRMWARE |
|
help |
|
ARM Cortex-M configuration required when testing. |
|
|
|
This option is used to select stack sizes and enable features for |
|
testing. |
|
|
|
This option is also used to force routing |
|
BusFault, HardFault, and NMI exceptions to Secure State, |
|
when building a Secure ARMv8-M firmware. This will allow |
|
the testing suite to utilize these exceptions, in tests. |
|
Note that by default, when building with ARM_SECURE_FIRMWARE |
|
set, these exceptions are set to target the Non-Secure state. |
|
|
|
config TEST_BUSY_SIM |
|
bool "Busy simulator" |
|
depends on TEST |
|
select ENTROPY_GENERATOR |
|
select RING_BUFFER if !XOSHIRO_RANDOM_GENERATOR |
|
select COUNTER |
|
help |
|
It simulates cpu load by using counter device to generate interrupts |
|
with random intervals and random busy looping in the interrupt. |
|
|
|
endmenu
|
|
|