80 lines
3.8 KiB
Plaintext
80 lines
3.8 KiB
Plaintext
This test suite contains negative test cases for the Watchdog driver.
|
|
Test scenarios validate that invalid use of the watchdog driver
|
|
returns error code as described in the API documentation
|
|
(or Assertion Fail as explained below).
|
|
|
|
Ideally, the driver shall be fully compliant with the documentation.
|
|
However, it may happen that invalid function call results in
|
|
Assertion Fail instead of error code.
|
|
Since, main goal is to detect (and report) invalid use of the driver,
|
|
both error code and assertion fail set test result as passed.
|
|
See for example test_02_wdt_setup_before_setting_timeouts where
|
|
ztest_set_assert_valid(true);
|
|
is used to catch assertion fail.
|
|
|
|
These tests were written to increase test coverage for the Watchdog driver.
|
|
Since, coverage data is stored in the RAM, it is lost when watchdog fires.
|
|
Therefore, in all test cases watchdog shall NOT expire.
|
|
Use other sample to verify positive scenario for the watchdog driver.
|
|
|
|
These tests were prepared on a target that had a bug in the wdt_disable()
|
|
implementation. As a temporary remedy, order of tests was imposed.
|
|
Since, tests are executed alphabetically, order was set by starting
|
|
each test name with f.e. 'test_08b_...'.
|
|
|
|
|
|
Tests are based on the watchdog API documentation available here:
|
|
https://docs.zephyrproject.org/latest/hardware/peripherals/watchdog.html
|
|
|
|
|
|
Follow these guidelines when enabling test execution on a new target.
|
|
|
|
1. Although, code defines WDT_DISABLE_SUPPORTED but it was tested on a
|
|
target that supports disabling the watchdog.
|
|
Multiple tests call wdt_setup() which starts the watchdog.
|
|
Every test assumes that watchdog is disabled at startup.
|
|
As a result, executing this test suite on a target that doesn't
|
|
support wdt_disable() may require changes to the code.
|
|
When target supports wdt_disable() then extend WDT_TEST_FLAGS with:
|
|
#define WDT_TEST_FLAGS (... | WDT_DISABLE_SUPPORTED)
|
|
|
|
2. There are three watchdog flags that can be passed to wdt_install_timeout():
|
|
- WDT_FLAG_RESET_NONE - when watchdog expires, it's callback is serviced but
|
|
reset doesn't occur.
|
|
- WDT_FLAG_RESET_CPU_CORE - when watchdog expires, only one core is reset, while
|
|
other cores are not affected.
|
|
- WDT_FLAG_RESET_SOC - when watchdog expires, target as "a whole" is reset.
|
|
Support for these flags varies between vendors and products.
|
|
a) List all supported flags in
|
|
#define WDT_TEST_FLAGS (... | WDT_FLAG_RESET_NONE_SUPPORTED |
|
|
WDT_FLAG_RESET_CPU_CORE_SUPPORTED |
|
|
WDT_FLAG_RESET_SOC_SUPPORTED)
|
|
b) Set supported flag in
|
|
#define DEFAULT_FLAGS (WDT_FLAG_RESET_SOC)
|
|
This define will be used in wdt_install_timeout() "correct" test step.
|
|
|
|
3. These tests assume that watchdog driver supports multiple timeouts. Set
|
|
#define MAX_INSTALLABLE_TIMEOUTS (8)
|
|
|
|
4. When all watchdog timeouts must have exactly the same watchdog timeout value
|
|
then extend WDT_TEST_FLAGS with:
|
|
#define WDT_TEST_FLAGS (... | WDT_FLAG_ONLY_ONE_TIMEOUT_VALUE_SUPPORTED)
|
|
|
|
5. Set maximal allowed watchdog timeout value, f.e.:
|
|
#define WDT_WINDOW_MAX_ALLOWED (0xFFFFFFFFU)
|
|
Also, test assumes that minimal allowed watchdog timeout value must be zero.
|
|
|
|
6. There are two watchdog options that can be passed to wdt_setup():
|
|
- WDT_OPT_PAUSE_IN_SLEEP;
|
|
- WDT_OPT_PAUSE_HALTED_BY_DBG.
|
|
Support for these options varies between vendors and products.
|
|
a) List all supported options in
|
|
#define WDT_TEST_FLAGS (... | WDT_OPT_PAUSE_IN_SLEEP_SUPPORTED |
|
|
WDT_OPT_PAUSE_HALTED_BY_DBG_SUPPORTED)
|
|
b) Set supported option(s) in
|
|
#define DEFAULT_OPTIONS (WDT_OPT_PAUSE_IN_SLEEP | WDT_OPT_PAUSE_HALTED_BY_DBG)
|
|
This define will be used in wdt_setup() "correct" test step.
|
|
|
|
7. When wdt_feed() can stall, extend WDT_TEST_FLAGS with:
|
|
#define WDT_TEST_FLAGS (... | WDT_FEED_CAN_STALL)
|