docs(utest):Add standardized documentation for IPC Completion Test
Some checks failed
ToolsCI / Tools (push) Has been cancelled
RT-Thread BSP Static Build Check / 🔍 Summary of Git Diff Changes (push) Has been cancelled
doc_doxygen / doxygen_doc generate (push) Has been cancelled
pkgs_test / change (push) Has been cancelled
utest_auto_run / A9 :components/dfs.cfg (push) Has been cancelled
utest_auto_run / A9 :components/lwip.cfg (push) Has been cancelled
utest_auto_run / A9 :components/netdev.cfg (push) Has been cancelled
utest_auto_run / A9 :components/sal.cfg (push) Has been cancelled
utest_auto_run / A9 :cpp11/cpp11.cfg (push) Has been cancelled
utest_auto_run / AARCH64-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / A9-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / RISCV-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / XUANTIE-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / AARCH64 :default.cfg (push) Has been cancelled
utest_auto_run / A9 :default.cfg (push) Has been cancelled
utest_auto_run / A9-smp :default.cfg (push) Has been cancelled
utest_auto_run / RISCV :default.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/atomic_c11.cfg (push) Has been cancelled
utest_auto_run / RISCV :kernel/atomic_c11.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/ipc.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/kernel_basic.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/mem.cfg (push) Has been cancelled
RT-Thread BSP Static Build Check / ${{ matrix.legs.RTT_BSP }} (push) Has been cancelled
RT-Thread BSP Static Build Check / collect-artifacts (push) Has been cancelled
doc_doxygen / deploy (push) Has been cancelled
Weekly CI Scheduler / Trigger and Monitor CIs (push) Has been cancelled
Weekly CI Scheduler / Create Discussion Report (push) Has been cancelled

Signed-off-by: ChuanN-sudo <fjchuanil@gmail.com>
This commit is contained in:
Chuan
2025-11-16 15:46:24 +08:00
committed by R b b666
parent 7983d97738
commit 2fcdd86dbc
3 changed files with 57 additions and 26 deletions

View File

@@ -6,23 +6,40 @@
* Change Logs:
* Date Author Notes
* 2024-04-30 Shell init ver.
* 2025-11-16 ChuanN-sudo add standardized utest documentation block
*/
/**
* Test Case for rt_completion API
* Test Case Name: IPC Completion Basic Test
*
* The test simulates a producer-consumer interaction where a producer thread
* generates data, and a consumer thread consumes the data after waiting for its
* availability using rt_completion synchronization primitives.
* Test Objectives:
* - Validate rt_completion initialization, wait, and wake-up mechanisms.
* - Verify thread synchronization in producer-consumer model.
* - Test core APIs: rt_completion_init(), rt_completion_wait_flags(), rt_completion_wakeup()
*
* Test Criteria:
* - The producer should correctly increment the test data and signal
* completion.
* - The consumer should correctly wait for data update, consume it, and signal
* completion.
* Test Scenarios:
* - Producer thread generates incrementing data and notifies consumer.
* - Consumer thread waits for data updates and validates integrity.
* - Random delays simulate race conditions in synchronization.
*
* Verification Metrics:
* - The producer should correctly increment the test data and signal completion.
* - The consumer should correctly wait for data update, consume it, and signal completion.
* - Data integrity should be maintained between producer and consumer.
* - Synchronization is properly done so both can see consistent data.
* - Random latency is introduced to simulate racing scenarios.
*
* Dependencies:
* - Hardware requirements: QEMU emulator or any hardware platform that supports RT-Thread.
* - Software configuration:
* - RT_USING_UTEST must be enabled (select "RT-Thread Utestcases" in menuconfig).
* - RT_UTEST_COMPLETION must be enabled (enable via: RT-Thread Utestcases -> Kernel Components -> Drivers -> IPC Test -> IPC Completion Test).
* - Environmental Assumptions: System scheduler working normally.
*
* Expected Results:
* - Progress logs: "[ INFO ] components.drivers.ipc.rt_completion_basic: Summary:...Test times:..."
* - Final output: "[ PASSED ] [ result ] testcase (components.drivers.ipc.rt_completion_basic)"
* - No assertions triggered.
*/
#define TEST_LATENCY_TICK (1)

View File

@@ -6,29 +6,43 @@
* Change Logs:
* Date Author Notes
* 2024-04-30 Shell init ver.
* 2025-11-16 ChuanN-sudo add standardized utest documentation block
*/
/**
* Test Case for rt_completion API
* Test Case Name: IPC Completion Timeout Test
*
* The test simulates a producer-consumer interaction where a producer thread
* generates data, and a consumer thread consumes the data after waiting for its
* availability using rt_completion synchronization primitives.
* Test Objectives:
* - Validate rt_completion initialization, wait with timeout, and wake-up mechanisms.
* - Verify thread synchronization resilience in producer-consumer model under timing constraints.
* - Test core APIs: rt_completion_init(), rt_completion_wait_flags(), rt_completion_wakeup()
* - Verify proper handling of timeout and interrupt scenarios during synchronization.
*
* Test Criteria:
* Test Scenarios:
* - Producer thread generates incrementing data with small delays between productions.
* - Consumer thread waits for data with timeout flags (RT_INTERRUPTIBLE) to simulate real-world interruptions.
* - Test deliberately introduces random thread yields to simulate scheduling variations.
* - Producer-consumer synchronization loop runs for extended duration to expose timing issues.
* - System handles asynchronous interruptions during wait operations.
*
* Verification Metrics:
* - The producer produces data correctly and notifies the consumer thread.
* - The consumer receives data correctly and acknowledges receipt to the
* producer.
* - The consumer receives data correctly and acknowledges receipt to the producer.
* - The producer and consumer threads synchronize their operations effectively.
* - Verify the correctness of data production and consumption between producer
* and consumer threads.
* - The asynchronous woken of consumer thread was handled properly so the
* consumer don't lose woken from producer.
* - Verify the correctness of data production and consumption between producer and consumer threads.
* - The asynchronous wakeup of consumer thread was handled properly so the consumer don't lose wakeup from producer.
*
* Test APIs:
* - rt_completion_init()
* - rt_completion_wakeup()
* - rt_completion_wait_flags()
* Dependencies:
* - Hardware requirements: QEMU emulator or any hardware platform that supports RT-Thread.
* - Software configuration:
* - RT_USING_UTEST must be enabled (select "RT-Thread Utestcases" in menuconfig).
* - RT_UTEST_COMPLETION must be enabled (enable via: RT-Thread Utestcases -> Kernel Components -> Drivers -> IPC Test -> IPC Completion Test).
* - Environmental Assumptions: System clock interrupts and scheduler working normally.
*
* Expected Results:
* - Progress logs: "[ INFO ] components.drivers.ipc.rt_completion_timeout: Summary:...Test times:...Async interruption count:...".
* - Final output: "[ PASSED ] [ result ] testcase (components.drivers.ipc.rt_completion_timeout)".
* - No assertions triggered.
*/
#define TEST_LATENCY_TICK (1)

View File

@@ -42,8 +42,8 @@
*
* Expected Results:
* - Final output: "[ PASSED ] [ result ] testcase (components.drivers.ipc.workqueue_tc)"
* - No memory leaks or race condition detections in logs
* - No assertions triggered during test execution
* - No memory leaks or race condition detections in logs.
* - No assertions triggered during test execution.
*/
#include "rtthread.h"
#include "rtdevice.h"