zephyr/tests/kernel/timer/starve
Marc Herbert debade9121 tests: make find_package(Zephyr...) REQUIRED
... because it is (required).

This makes a difference when building with CMake and forgetting
ZEPHYR_BASE or not registering Zephyr in the CMake package registry.

In this particular case, REQUIRED turns this harmless looking log
statement:

-- Could NOT find Zephyr (missing: Zephyr_DIR)
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- ...
-- ...
-- ...
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:8 (target_sources):
  Cannot specify sources for target "app" which is not built by
  this project.

... into this louder, clearer, faster and (last but not least) final
error:

CMake Error at CMakeLists.txt:5 (find_package):
  Could not find a package configuration file provided by "Zephyr" with
  any of the following names:

    ZephyrConfig.cmake
    zephyr-config.cmake

  Add the installation prefix of "Zephyr" to CMAKE_PREFIX_PATH or set
  "Zephyr_DIR" to a directory containing one of the above files.  If
  "Zephyr" provides a separate development package or SDK, be sure it
  has been installed.

-- Configuring incomplete, errors occurred!

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2020-05-29 10:47:25 +02:00
..
src
CMakeLists.txt tests: make find_package(Zephyr...) REQUIRED 2020-05-29 10:47:25 +02:00
Kconfig
README.txt
prj.conf
testcase.yaml

README.txt

Title: Timer Starvation test

The purpose of the test is to detect whether the timer implementation
correctly handles situations where only one timeout is present, and that
timeout is repeatedly rescheduled before it has a chance to fire.  In
some implementations this may prevent the timer interrupt handler from
ever being invoked, which in turn prevents an announcement of ticks.
Lack of tick announcement propagates into a monotonic increase in the
value returned by z_clock_elapsed().

This test is not run in automatic test suites because it generally takes
minutes, hours, or days to fail, depending on the hardware clock rate
and the tick rate.  By default the test passes if one hour passes
without detecting a failure.

Failure will occur when some counter wraps around.  This may be a
hardware timer counter, a timer driver internal calculation of
unannounced cycles, or the Zephyr measurement of unannounced ticks.

For example a system that uses a 32768-Hz internal timer counter with
24-bit resolution and determines elapsed time by a 24-bit unsigned
difference between the current and last-recorded counter value will fail
at 512 s when the updated counter value is observed to be less than the
last recorded counter.

Systems that use a 32-bit counter of 80 MHz ticks would fail after
53.687 s.