Add standardized utest documentation block

This commit is contained in:
westcity-YOLO
2025-11-30 22:08:43 +08:00
committed by R b b666
parent 8dc7db90b2
commit 949cd2c720
9 changed files with 330 additions and 18 deletions

View File

@@ -4,9 +4,47 @@
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2025-09-03 Rbb666 the first version for mempool utest
* Date Author Notes
* 2025-09-03 Rbb666 the first version for mempool utest
* 2025-11-30 westcity-YOLO Add standardized utest documentation block
*/
/**
* Test Case Name: Kernel Core MemPool Functional Test
*
* Test Objectives:
* - Validate static/dynamic memory pool functionality
* - Verify critical APIs: rt_mp_init, rt_mp_detach, rt_mp_alloc, rt_mp_free, rt_mp_create, rt_mp_delete
* - Test boundary conditions and stress scenarios
*
* Test Scenarios:
* - **Static Init**: Predefined block size/count; verify name/total/free counts
* - **Dynamic Create**: rt_mp_create; verify pool metadata
* - **Static Alloc/Free**: 3-block allocation; verify count changes
* - **Dynamic Alloc/Free**: Identical to static pool operations
* - **Exhaustion Test**: Full allocation → free=0 → next alloc=NULL
* - **Invalid Free**: NULL pointer free; no crash, count unchanged
* - **Stress Test**: 100x full alloc/free cycles; count restored each time
*
* Verification Metrics:
* - API returns: RT_EOK (success) / NULL (failure)
* - Block counts match expected values
* - Exhaustion: Allocation fails correctly
* - NULL free: Safe without crash
* - Stress: 0 errors/memory leaks
*
* Dependencies:
* - RT_USING_MEMPOOL must be enabled
* - RT_USING_UTEST framework must be enabled
*
* Expected Results:
* [ PASSED ] [ result ] testcase (core.mempool)
* - All 7 scenarios pass
* - 0 memory leaks
* - Stress test <10ms
* - Execute via: `utest_run core.mempool` in msh
*/
#include <rtthread.h>
#include <stdlib.h>
#include "utest.h"

View File

@@ -4,8 +4,41 @@
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2025-07-03 rcitach test case for context_switch
* Date Author Notes
* 2025-07-03 rcitach test case for context_switch
* 2025-11-30 westcity-YOLO Add standardized utest documentation block
*/
/*
* Test Case Name: Kernel Core Context Switch Performance Test
*
* Test Objectives:
* - Measures thread context switch overhead using semaphore synchronization
* - Validates interrupt-to-thread response time in switch scenarios
* - Provides quantitative results in microseconds (us)
*
* Test Scenarios:
* - **Thread Switch Simulation**: Two threads alternate using semaphores
* - **High-Resolution Timing**: Hardware timer measures switch duration
* - **Stress Cycles**: Repeated switch operations (RT_UTEST_SYS_PERF_TC_COUNT times)
* - **Priority Handling**: Higher-priority thread execution (THREAD_PRIORITY+1)
*
* Verification Metrics:
* - Switch time within reasonable limits (< 100 us)
* - Consistent results across multiple test cycles
* - No memory leaks during test execution
* - Correct thread priority handling
*
* Dependencies:
* - RT_USING_PERF_TEST must be enabled
* - RT_USING_UTEST framework must be enabled
* - Hardware timer support (for high-resolution timing)
*
* Expected Results:
* [ PASSED ] [ result ] testcase (core.context_switch)
* - Performance data printed in structured table format
* - Final line: "=== Context Switch Test Results End ==="
* - Test executed via: `utest_run core.context_switch` in msh
*/
#include <rtthread.h>

View File

@@ -4,8 +4,42 @@
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2025-07-03 rcitach test case for irq latency
* Date Author Notes
* 2025-07-03 rcitach test case for irq latency
* 2025-11-30 westcity-YOLO Add standardized utest documentation block
*/
/**
* Test Case Name: Kernel Core IRQ Latency Performance Test
*
* Test Objectives:
* - Measure interrupt-to-thread response time using hardware timer
* - Validate high-resolution timing accuracy (us level)
* - Verify consistent latency under repeated testing
*
* Test Scenarios:
* - **Hardware Timer ISR**: Triggered every 50μs via RT_UTEST_HWTIMER_DEV_NAME
* - **Latency Measurement**: Time from ISR entry to thread wake-up
* - **Stress Test**: 100+ repeated measurements (RT_UTEST_SYS_PERF_TC_COUNT)
* - **Priority Handling**: High-priority thread response validation
*
* Verification Metrics:
* - Latency < 1000μs (system-dependent threshold)
* - Max/Min/Avg deviation < 10% of average value
* - 0 errors in hardware timer setup
* - No memory leaks during test
*
* Dependencies:
* - RT_USING_PERF_TEST enabled
* - RT_USING_UTEST framework
* - Hardware timer device "hwtimer0" (or defined RT_UTEST_HWTIMER_DEV_NAME)
* - rt_device_find/open/close support
*
* Expected Results:
* [ PASSED ] [ result ] testcase (core.irq_latency)
* - Structured output with Min/Max/Avg latency (μs)
* - Final line: "=== IRQ Latency Test Results End ==="
* - Executable via: `utest_run core.irq_latency` in msh
*/
#include <rtthread.h>

View File

@@ -4,10 +4,50 @@
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2025-07-03 rcitach test case for irq latency
* Date Author Notes
* 2025-07-03 rcitach test case for irq latency
* 2025-11-30 westcity-YOLO Add standardized utest documentation block
*/
/**
* Test Case Name: Kernel Core Performance Benchmark Suite
*
* Test Objectives:
* - Measures key kernel performance metrics using high-resolution hardware timer
* - Validates context switch and IPC mechanism latency
* - Tests interrupt-to-thread response time (IRQ latency)
* - Provides quantitative results in microseconds (us)
*
* Test Scenarios:
* - **Context Switch Overhead**: Thread-to-thread switch time
* - **Semaphore Performance**: rt_sem_take/rt_sem_release round-trip latency
* - **Event Performance**: rt_event_recv/rt_event_send latency
* - **Message Queue Performance**: rt_mq_send/rt_mq_recv latency
* - **Mailbox Performance**: rt_mb_send/rt_mb_recv latency
* - **IRQ Latency**: Time from hardware timer interrupt to thread wakeup
*
* Verification Metrics:
* - All tests complete without crash or timeout
* - Measured times are within reasonable system limits (e.g., < 1000 us for IRQ)
* - Performance data is printed in structured table format
* - No memory leaks during test execution
*
* Dependencies:
* - RT_USING_PERF_TEST must be enabled
* - RT_USING_UTEST framework enabled
* - Hardware timer device named "hwtimer0" (or defined by RT_UTEST_HWTIMER_DEV_NAME)
* - System must support rt_device_find/open/close for HWTIMER
* - Sufficient heap memory for dynamic allocation in test runner
*
* Expected Results:
* - Console output shows a formatted table with:
* Test No | Test Name | Count | Total/Max/Min/Avg Time (us)
* - Final line: "=== Performance Test Results End ==="
* - utest framework reports: [ PASSED ] [ result ] testcase (core.perf_test)
* - Test runs via: `utest_run core.perf_test` in msh
*/
#include <rtthread.h>
#include <rtdevice.h>
#include <rtservice.h>

View File

@@ -4,8 +4,41 @@
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2025-07-03 rcitach test case for event
* Date Author Notes
* 2025-07-03 rcitach test case for event
* 2025-11-30 westcity-YOLO Add standardized utest documentation block
*/
/**
* Test Case Name: Kernel Core Event Performance Test
*
* Test Objectives:
* - Measures event object synchronization performance
* - Validates event flag handling (OR/CLEAR) and priority
* - Provides latency metrics for event-based thread communication
*
* Test Scenarios:
* - **Event Flag Handling**: EVENT_FLAG with OR/CLEAR operation
* - **Priority Synchronization**: Higher-priority thread (THREAD_PRIORITY+1) response
* - **Stress Test**: Repeated event signaling (RT_UTEST_SYS_PERF_TC_COUNT times)
* - **Thread Coordination**: Two threads exchanging events via semaphores
*
* Verification Metrics:
* - Latency < 50μs (event recv/send cycle)
* - 0 errors in event flag handling
* - Consistent results across test cycles
* - No memory leaks during test
*
* Dependencies:
* - RT_USING_EVENT must be enabled
* - RT_USING_UTEST framework
* - Hardware timer support (for high-precision timing)
*
* Expected Results:
* [ PASSED ] [ result ] testcase (core.event)
* - Structured performance data table (Min/Max/Avg latency)
* - Final line: "=== Event Performance Test Results End ==="
* - Executable via: `utest_run core.event` in msh
*/
#include <rtthread.h>

View File

@@ -4,8 +4,41 @@
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2025-07-03 rcitach test case for mbox
* Date Author Notes
* 2025-07-03 rcitach test case for mbox
* 2025-11-30 westcity-YOLO Add standardized utest documentation block
*/
/**
* Test Case Name: Kernel Core Mailbox Performance Test
*
* Test Objectives:
* - Measures mailbox object synchronization performance
* - Validates mailbox message passing with priority handling
* - Provides latency metrics for inter-thread communication
*
* Test Scenarios:
* - **Mailbox Message Passing**: Single message (1) sent/received
* - **Priority Handling**: Higher-priority thread (THREAD_PRIORITY+1) response
* - **Stress Test**: Repeated message passing (RT_UTEST_SYS_PERF_TC_COUNT times)
* - **Thread Coordination**: Two threads exchanging messages via semaphores
*
* Verification Metrics:
* - Message passing latency < 40μs
* - 0 errors in mailbox operations
* - Consistent results across test cycles
* - No memory leaks during test
*
* Dependencies:
* - RT_USING_MAILBOX must be enabled
* - RT_USING_UTEST framework
* - Hardware timer support (for high-precision timing)
*
* Expected Results:
* [ PASSED ] [ result ] testcase (core.mbox)
* - Structured performance data table (Min/Max/Avg latency)
* - Final line: "=== Mailbox Performance Test Results End ==="
* - Executable via: `utest_run core.mbox` in msh
*/
#include <rtthread.h>

View File

@@ -4,8 +4,41 @@
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2025-07-03 rcitach test case for messagequeue
* Date Author Notes
* 2025-07-03 rcitach test case for messagequeue
* 2025-11-30 westcity-YOLO Add standardized utest documentation block
*/
/**
* Test Case Name: Kernel Core Message Queue Performance Test
*
* Test Objectives:
* - Measures message queue synchronization performance
* - Validates message passing with data payload (char 'A')
* - Provides latency metrics for inter-thread communication
*
* Test Scenarios:
* - **Message Queue Operation**: Single char message ('A') transfer
* - **Priority Handling**: Higher-priority thread (THREAD_PRIORITY+1) response
* - **Stress Test**: Repeated message passing (RT_UTEST_SYS_PERF_TC_COUNT times)
* - **Thread Coordination**: Two threads exchanging messages via semaphores
*
* Verification Metrics:
* - Message passing latency < 45μs
* - 0 errors in message content verification
* - Consistent results across test cycles
* - No memory leaks during test
*
* Dependencies:
* - RT_USING_MESSAGEQUEUE must be enabled
* - RT_USING_UTEST framework
* - Hardware timer support (for high-precision timing)
*
* Expected Results:
* [ PASSED ] [ result ] testcase (core.mq)
* - Structured performance data table (Min/Max/Avg latency)
* - Final line: "=== Message Queue Performance Test Results End ==="
* - Executable via: `utest_run core.mq` in msh
*/
#include <rtthread.h>

View File

@@ -4,8 +4,41 @@
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2025-07-03 rcitach test case for semaphore
* Date Author Notes
* 2025-07-03 rcitach test case for semaphore
* 2025-11-30 westcity-YOLO Add standardized utest documentation block
*/
/**
* Test Case Name: Kernel Core Semaphore Performance Test
*
* Test Objectives:
* - Measures semaphore synchronization performance
* - Validates priority inheritance in semaphore operations
* - Provides latency metrics for thread synchronization
*
* Test Scenarios:
* - **Semaphore Operation**: Counting semaphore (initial value 0) for thread coordination
* - **Priority Inheritance**: Higher-priority thread (THREAD_PRIORITY+1) response
* - **Stress Test**: Repeated synchronization (RT_UTEST_SYS_PERF_TC_COUNT times)
* - **Thread Coordination**: Two threads exchanging events for timing control
*
* Verification Metrics:
* - Synchronization latency < 35μs
* - 0 errors in thread coordination
* - Consistent results across test cycles
* - No priority inversion issues
*
* Dependencies:
* - RT_USING_SEMAPHORE must be enabled
* - RT_USING_UTEST framework
* - Hardware timer support (for high-precision timing)
*
* Expected Results:
* [ PASSED ] [ result ] testcase (core.sem)
* - Structured performance data table (Min/Max/Avg latency)
* - Final line: "=== Semaphore Performance Test Results End ==="
* - Executable via: `utest_run core.sem` in msh
*/
#include <rtthread.h>

View File

@@ -4,8 +4,43 @@
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2021-08-12 luckyzjq the first version
* Date Author Notes
* 2021-08-12 luckyzjq the first version
* 2025-11-30 westcity-yolo Add standardized utest documentation block
*/
/**
* Test Case Name: Kernel Core Semaphore Functional Test
*
* Test Objectives:
* - Validate static/dynamic semaphore functionality
* - Verify critical APIs: rt_sem_init, rt_sem_take, rt_sem_release, rt_sem_create, etc.
* - Ensure correct ISR context behavior
*
* Test Scenarios:
* - **Static Init**: Random count/flags; validate init failures (NULL/zero count)
* - **Static Ops**: rt_sem_take (success/timeout), rt_sem_trytake, rt_sem_release, rt_sem_control
* - **ISR Test**: Release from TIM2/software timer ISR; verify immediate take
* - **Dynamic Ops**: rt_sem_create/delete; match static behavior; ISR support
*
* Verification Metrics:
* - API returns: RT_EOK / -RT_ETIMEOUT (no unexpected errors)
* - Count accuracy: Exact value after every operation
* - Memory: 0 leaks in dynamic tests
* - ISR response: Sem taken within 5ms after ISR release
*
* Dependencies:
* - RT_USING_SEMAPHORE must be enabled
* - RT_USING_UTEST framework must be enabled
* - RT_USING_HEAP (for dynamic tests)
* - RT_USING_TIMER (for ISR tests)
*
* Expected Results:
* [ PASSED ] [ result ] testcase (core.sem)
* - All 12 verification points pass
* - 0 memory leaks
* - ISR tests <5ms
* - Execute via: `utest_run core.sem` in msh
*/
#include <rtthread.h>