zephyr/tests/kernel/workq/work_queue
Peter Bigot 057e4cbc5d tests: kernel: work_queue: remove unpassable tests
The original implementation of resubmitting a delayed work item
removed the item not only from the schedule, but also from the work
queue if it was already in the work queue.  This is not the semantics
of the new implementation, which will leave the work item in the queue
if the previous deadline had elapsed and the work item was submitted.

The new semantics is preferred, as it improves consistency with SMP
targets where once an item has been submitted to a queue it can be run
at any time, and scheduling it again doesn't magically reverse the
submission.  The original test would never have passed on an SMP
target, and passes now on qemu_x86 only because the timing granularity
prevents the work item from being both scheduled and queued at the
same time.

The problematic test application is the one developed for the original
implementation.  Correct functioning of the new implementation is
fully verified by the sibling work test.  That the legacy API does not
precisely preserve the original behavior where it was not consistent
between SMP and uniprocessor targets is regrettable, but unavoidable.

Remove the tests that cannot pass reliably.

Also fix a missing reset() after a test.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2021-03-10 06:10:59 -05:00
..
src tests: kernel: work_queue: remove unpassable tests 2021-03-10 06:10:59 -05:00
CMakeLists.txt
README.txt
prj.conf
testcase.yaml

README.txt

Title: Test workqeue APIs

Description:

A simple application verifying the workqueue API

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

Building and Running Project:

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

    make run

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

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

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


***** BOOTING ZEPHYR OS vxxxx - BUILD: xxxxx *****
Starting sequence test
 - Initializing test items
 - Submitting test items
 - Submitting work 1 from preempt thread
 - Running test item 1
 - Submitting work 2 from coop thread
 - Submitting work 3 from preempt thread
 - Submitting work 4 from coop thread
 - Running test item 2
 - Submitting work 5 from preempt thread
 - Submitting work 6 from coop thread
 - Waiting for work to finish
 - Running test item 3
 - Running test item 4
 - Running test item 5
 - Running test item 6
 - Checking results
Starting resubmit test
 - Submitting work
 - Waiting for work to finish
 - Resubmitting work
 - Resubmitting work
 - Resubmitting work
 - Resubmitting work
 - Resubmitting work
 - Checking results
Starting delayed test
 - Initializing delayed test items
 - Submitting delayed test items
 - Submitting delayed work 1 from preempt thread
 - Submitting delayed work 3 from preempt thread
 - Submitting delayed work 5 from preempt thread
 - Waiting for delayed work to finish
 - Submitting delayed work 2 from coop thread
 - Submitting delayed work 4 from coop thread
 - Submitting delayed work 6 from coop thread
 - Running delayed test item 1
 - Running delayed test item 2
 - Running delayed test item 3
 - Running delayed test item 4
 - Running delayed test item 5
 - Running delayed test item 6
 - Checking results
Starting delayed resubmit test
 - Submitting delayed work
 - Waiting for work to finish
 - Resubmitting delayed work
 - Resubmitting delayed work
 - Resubmitting delayed work
 - Resubmitting delayed work
 - Resubmitting delayed work
 - Checking results
Starting delayed resubmit from coop thread test
 - Resubmitting delayed work with 1 ms
 - Resubmitting delayed work with 1 ms
 - Resubmitting delayed work with 1 ms
 - Resubmitting delayed work with 1 ms
 - Resubmitting delayed work with 1 ms
 - Resubmitting delayed work with 1 ms
 - Waiting for work to finish
 - Running delayed test item 1
 - Checking results
Starting delayed cancel test
 - Cancel delayed work from preempt thread
 - Cancel delayed work from coop thread
 - Cancel pending delayed work from coop thread
 - Waiting for work to finish
 - Checking results
===================================================================
PASS - main.
===================================================================
PROJECT EXECUTION SUCCESSFUL