202 lines
6.5 KiB
Plaintext
202 lines
6.5 KiB
Plaintext
# 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"
|
|
depends on COVERAGE_GCOV
|
|
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
|
|
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
|