zephyr/tests/kernel/test_timer/microkernel
Andy Ross 8d8b2acb26 k_timer: Don't allocate dynamic timers by default
Most apps run fine with static k_timer objects.  Don't pay the cost
for the timer pool if no one asks for it.

Also turn off the allocate/free API in the header if it can't possibly
work at runtime as it's an obviously-detectable error that would
otherwise be visible only at runtime.

Change-Id: I492e6e01c4213e3544f707247eea6e4bc601fefd
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2016-09-23 18:25:37 +00:00
..
src unified/test_timer: adapt for unified kernel 2016-09-13 17:12:55 -04:00
Makefile tests: remove duplicate kernel configs and usage of ARCH 2016-05-23 16:46:08 +00:00
prj.conf k_timer: Don't allocate dynamic timers by default 2016-09-23 18:25:37 +00:00
prj.mdef tests: move kernel tests to tests/ 2016-02-11 18:06:33 +00:00
README.txt tests: move kernel tests to tests/ 2016-02-11 18:06:33 +00:00
testcase.ini unified/tests: tag working some tests kernel as 'unified_capable' 2016-09-13 17:12:55 -04:00

Title: Low Resolution Timer

Description:

This test verifies the following low resolution microkernel timer APIs operate
as expected:
  task_timer_alloc (), task_timer_free()
  task_timer_start(), task_timer_restart(), task_timer_stop()
  sys_tick_delta(), sys_tick_get_32()

Also verifies the nanokernel timeouts can work alongside the microkernel timers.

--------------------------------------------------------------------------------

Building and Running Project:

This microkernel project outputs to the console.  It can be built and executed
on QEMU as follows:

    make qemu

--------------------------------------------------------------------------------

Troubleshooting:

Problems caused by out-dated project information can be addressed by
issuing one of the following commands then rebuilding the project:

    make clean          # discard results of previous builds
                        # but keep existing configuration info
or
    make pristine       # discard results of previous builds
                        # and restore pre-defined configuration info

--------------------------------------------------------------------------------

Sample Output:

Starting timer tests
===================================================================
Test the allocation of timers.
Test the one shot feature of a timer.
test nano_task_fifo_get with timeout > 0
nano_task_fifo_get timed out as expected
nano_task_fifo_get got fifo in time, as expected
testing timeouts of 5 fibers on same fifo
 got fiber (q order: 2, t/o: 10, fifo 00109134) as expected
 got fiber (q order: 3, t/o: 15, fifo 00109134) as expected
 got fiber (q order: 0, t/o: 20, fifo 00109134) as expected
 got fiber (q order: 4, t/o: 25, fifo 00109134) as expected
 got fiber (q order: 1, t/o: 30, fifo 00109134) as expected
testing timeouts of 9 fibers on different fifos
 got fiber (q order: 0, t/o: 10, fifo 00109140) as expected
 got fiber (q order: 5, t/o: 15, fifo 00109134) as expected
 got fiber (q order: 7, t/o: 20, fifo 00109134) as expected
 got fiber (q order: 1, t/o: 25, fifo 00109134) as expected
 got fiber (q order: 8, t/o: 30, fifo 00109140) as expected
 got fiber (q order: 2, t/o: 35, fifo 00109134) as expected
 got fiber (q order: 6, t/o: 40, fifo 00109134) as expected
 got fiber (q order: 4, t/o: 45, fifo 00109140) as expected
 got fiber (q order: 3, t/o: 50, fifo 00109140) as expected
testing 5 fibers timing out, but obtaining the data in time
(except the last one, which times out)
 got fiber (q order: 0, t/o: 20, fifo 00109134) as expected
 got fiber (q order: 1, t/o: 30, fifo 00109134) as expected
 got fiber (q order: 2, t/o: 10, fifo 00109134) as expected
 got fiber (q order: 3, t/o: 15, fifo 00109134) as expected
 got fiber (q order: 4, t/o: 25, fifo 00109134) as expected
===================================================================
PASS - test_fifo_timeout.
Test that a timer does not start.
Test the periodic feature of a timer
Test the stopping of a timer
Verifying the nanokernel timeouts worked
===================================================================
PROJECT EXECUTION SUCCESSFUL