Commit Graph

140 Commits

Author SHA1 Message Date
Chen Wang
d14daa6cb1 utest: ipc: move from examples to components/drivers/ipc
Also:
- Add "RT_" prefix for utest config options.
- Rename the case names to following the naming rule.

Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
2025-10-13 10:44:16 +08:00
Chen Wang
7499790140 utest: core: move perf testcase from example to src
Also:

- Add "RT_" prefix for the UTEST config options.
- Follow the naming rules to update the case name.

Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
2025-10-11 18:24:40 +08:00
Chen Wang
66448d9e96 utest: smp_call: move from example to components/drivers/smp_call
Also,
- Rename UTEST_SMP_CALL_FUNC to RT_UTEST_SMP_CALL_FUNC.
- Add depends on RT_USING_SMP in Kconfig for RT_UTEST_SMP_CALL_FUNC
- Follow the naming rules of utest case to update the cases' name.

Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
2025-10-11 16:20:38 +08:00
Chen Wang
3b97667323 utest: serial: move from examples to components/drivers/serial
Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
2025-10-11 15:38:45 +08:00
Chen Wang
ba795c6d65 utest: serial_v2: add depends on RT_USING_SERIAL_V2
Add dependent of RT_USING_SERIAL_V2 in Kconfig to
make sure utest for serial_v2 is only available
when RT_USING_SERIAL_V2 is enabled.

Otherwise menuconfig allow people enable UTEST_SERIAL_TC
but building of utestcases failed. It looks weird and
better to be fixed.

Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
2025-10-10 20:24:18 +08:00
Chen Wang
cc8b0d9f39 utest: serial: bypass: add depends on RT_USING_SERIAL_BYPASS
Add dependent of RT_USING_SERIAL_BYPASS in Kconfig to
make sure utest for serial-bypass is only available
when RT_USING_SERIAL_BYPASS is enabled.

Otherwise building of utestcases failed when UTEST_SERIAL_BYPASS
is enabled.

Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
2025-10-10 20:23:40 +08:00
Yuqiang Wang
36393c61be improve[ci]: integrate utest run ci (#10748) 2025-09-28 16:08:51 +08:00
Chen Wang
6e51a8405f utest: move core tesetcases under to directiry "src"
Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
2025-09-26 09:59:05 +08:00
Chen Wang
495c8cfc25 utest: remove RT_UTEST_USING_ALL_CASES
Many modules' utests currently don't support enabling all
tests at once. Furthermore, some modules' tests are complex,
for example due to their numerous dependencies on other
modules. This makes it nearly impossible to enable all
tests with a single global switch. Consequently, the
previously defined `RT_UTEST_USING_ALL_CASES` has lost
its original meaning.

We recommend deprecating this configuration switch. If a
module needs to enable a group of functional tests through
its own configuration, this local enable all switch should
be implemented by the module itself, and a global RTT enable
switch will no longer be provided.

If such a requirement arises in the future, we recommend
careful design, especially considering how to ensure that
turning on a single switch enables all dependencies for
all involved modules for ease of use.

Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
2025-09-26 09:57:54 +08:00
Yonggang Luo
19451d9bb7 RT_TIMER_CTRL_SET_TIME and RT_TIMER_CTRL_GET_TIME should both use rt_tick_t 2025-09-24 18:12:36 +08:00
Rbb666
db1779e239 [utest][cpp]add cpp-smartptr testcase. 2025-09-23 10:55:47 +08:00
Rbb666
618516ef94 [utest][cpp]add cpp-lambda testcase. 2025-09-23 10:55:47 +08:00
Rbb666
c300b00470 [utest][cpp]add cpp-auto testcase. 2025-09-23 10:55:47 +08:00
Rbb666
d848e7321b [utest][cpp]add cpp-mutex testcase. 2025-09-23 10:55:47 +08:00
Rbb666
a4e5ae7bed [utest][cpp]add cpp-atomic testcase. 2025-09-23 10:55:47 +08:00
Rbb666
e4586d48cb [utest][cpp]rename thread_tc.cpp to tc_thread.cpp. 2025-09-23 10:55:47 +08:00
Rbb666
e1c1a07c48 [add][thread]Add api:rt_thread_suspend_force allow suspend other threads. 2025-09-09 13:08:30 +08:00
Rbb666
8cca8d6a39 fix ci problem. 2025-09-07 07:52:08 +08:00
Rbb666
ae8782bc7f [add][testcase]add mempool tc. 2025-09-07 07:52:08 +08:00
Chen Wang
c0142c786e utest/utest: intergare testcases into utest framework (#10665)
* utest: move testcases of Utest from example to Utest folder

Create unit-test-cases for the Utest framework subsystem
according to "How to add utest cases into RT-Thread for your module." [1]

Link:
https://rt-thread.github.io/rt-thread/page_component_utest.html#autotoc_md804
[1]

The original `components/utilities/utest` directory already has unit
testcases, which are more comprehensive than the testcases in
`examples/utest/testcases/utest/`. Therefore, simply deleted
the test cases in `examples` and used the existing testcases
in the utest framework.

Signed-off-by: Chen Wang <unicorn_wang@outlook.com>

* utest/utest: rename name and add license text

Signed-off-by: Chen Wang <unicorn_wang@outlook.com>

---------

Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
2025-09-02 18:48:07 +08:00
Rbb666
3c17851fe2 [Add][kernel/thread]Add thread overflow hook and testcases:thread_overflow_tc.c. 2025-09-02 16:46:55 +08:00
Chen Wang
06c5cc0846 utest: move entry from examples to utest
Change the entry of utest's Kconfig from
'examples/utest/testcases/Kconfig' to
'Kconfig.utestcases'.

Modified the build scripts where the path name
is "examples/utest/testcases/Kconfig" and changed
it to 'Kconfig.utestcases', otherwise build
operations such 'scons --dist' may fail.

In the future, the testcase source code of
utest will be placed in each module for
maintenance, but the entry of Kconfig will all
be placed in Kconfig.utestcases for unified
maintenance. In this way, when executing menuconfig,
people can enter and configure from one place,
avoiding searching for utest configuration switches
here and there in the menuconfig interface.

For each module, you can maintain unit-test
in a unified manner in the following way:
- Create a subdirectory named 'utest' in the
  directory where your module is located.
- Store the following files in the utest subdirectory:
  - Unit test case program source code files for this
    module.
  - Kconfig file, add configuration options for the
    unit test files of this module, the recommended
    option is named RT_UTEST_TC_USING_XXXX, XXXX is the
    global unique module name of this module.
  - SConscript file, note that when adding src files,
    in addition to relying on RT_UTEST_TC_USING_XXXX,
    you must also rely on RT_UTEST_USING_ALL_CASES, the
    two dependencies are in an "or" relationship. The
    role of RT_UTEST_USING_ALL_CASES is that once this
    option is turned on, all unit tests will be enabled
    to avoid selecting one by one.

After completing the above steps, add the path of the
Kconfig file of utest of this module to the
Kconfig.utestcases file.

Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
2025-08-26 10:26:47 +08:00
RyanCW
e0243e87c0 [component][drivers][serial_v2] 优化serial_v2 (#10603)
* [bsp][stm32][drv_usart_v2] uart_isr不再使用链式调用,RXNE内循环读空,一些细节优化

* [componnents][drivers][serial_v2] 增加获取config接口,使用rt_tick_get_delta替代内部的时间绕回判断,写满丢弃策略rx接收数据错乱修复,clang-tidy和cppcheck审查优化

* [utest][drivers][serial_v2] 测试例程进行优化

* [bsp][stm32][drv_usart_v2] 撤回DMAMUX1修改

* [componnents][drivers][serial_v2] read和write不再返回-RT_ETIMEOUT改为已发送或读取的字节数,细节优化

* [utest][drivers][serial_v2] 增加单独的timeout测试,减少测试中的硬延时

* [utest][drivers][serial_v2] 漏提交的posix下标志位

* [utest][drivers][serial_v2] 优化测试例程

* [bsp][stm32][drv_usart_v2] transmit返回错误值,RXNE增加超时逻辑

* [componnents][drivers][serial_v2] 增加transmit错误处理,增加超时退出机制显式的避免死循环

* [componnents][drivers][serial_v2] 适配serial_v2和posix非libc标准库下的console和shell
2025-08-16 11:51:57 +08:00
Yuqiang Wang
62f3fb4ce5 fix(kernel)/improve(utest):fix the legacy issue related to the length of the object name version #10537 2025-07-30 10:58:49 +08:00
kurisaw
ece19e961a kernel/testcase: fixed buffer overflow vulnerability in object 2025-07-18 20:15:53 +08:00
rcitach
2cb69c8e08 testcase: add system performance testcase (#10452)
* add  sys pref frameworks

* add context switch test code

* add irq latency test code

* add  thread sem test code

* add  thread event test code

* add  thread mbox test code

* add  thread mq test code

* Adding a Test Documentation Note

* Modification of text description
2025-07-16 12:55:54 +08:00
ryancw
ac8fba0129 [drivers][serial_v2]允许阻塞接收超过rx缓冲区大小的数据、增加超时时间、flush、获取缓冲区数据长度命令、数据溢出逻辑修复、稳定性细节优化、添加更多serial_v2测试用例
[components][serial_v2] 优化txflush逻辑、对tx的activated做中断保护

[components][at] at_client适配新版serial_v2

[components][at] at_server适配新版serial_v2

[components][serial_v2] 测试用例增加循环调用,format测试用例

[components][serial_v2] poll模式判断逻辑错误

[components][serial_v2] 测试用例去掉一些非必要延时

[components][serial_v2] 测试例程使用menuconfig进行配置,更新readme

[components][at_client] at_client_getchar返回值错误、at_client解析线程优先级错误设置

[components][at] 错误码应该返回负值

[components][serial_v2] TCFLSH和FIONREAD完善、control函数增加错误返回值

[components][serial_v2] RT_SERIAL_CTRL_GET_RX_DATA_LEN更改为RT_SERIAL_CTRL_GET_UNREAD_BYTES_COUNT

[utest][serial_v2] TC_UART_SEND_TIMES替换为RT_SERIAL_TC_SEND_ITERATIONS

[components][serial_v2] FIONREAD参数应该是无符号类型

[utest][serial_v2] 完善测试用例

[components][serial_v2] 避免使用三目运算符

[components][serial_v2] 使用clang-format格式化代码

[components][serial_v2] 添加get超时时间命令

[components][serial_v2] 完善posix接口

[components][serial_v2] 阻塞接口添加阻塞时间为0时的处理逻辑、优化RX阻塞接收逻辑

[components][serial_v2] 设置超时时间命令的参数改为指针形式

[components][serial_v2] nbuf发送添加超时时间为0时的逻辑

[components][serial_v2] 完善添加测试用例

[utest][serial_v2] 修复依赖关系

[components][serial_v2] 非阻塞模式下tx_flush错误修复

[components][serial_v2] activated使用原子API

[components][serial_v2] 优化DMA逻辑、没使能DMA时屏蔽DMA逻辑节约资源

[components][serial_v2] 提供写满时丢弃新数据和覆盖旧数据策略,写满丢弃策略效率更高

[components][serial_v2] 部分平台适配写满时两种策略功能

[components][serial_v2] DMA模式暂不支持丢弃新数据策略

[utest][serial_v2] 优化测试代码

[components][serial_v2] DMA模式下使用乒乓缓冲、DMA模式支持丢弃新数据策略

[utest][serial_v2] 适配DMA乒乓缓冲

[bsp][serial_v2] 部分bsp适配DMA下乒乓缓冲

[components][serial_v2] 使用spinlock替换中断,对部分结构体变量使用原子操作

[utest][serial_v2] 更新测试用例

[components][at] 适配new serialv2不再判断RTT版本号

[components][at] 删除多余的中文注释

[utest][serial_v2] 添加交叉echo示例,qemu环境下专用

[bsp][qemu] 适配串口v2并开启fifo

[components][at] 修复合并导致的错误

[bsp][n32] 适配serial_v2,没有经过测试

[components][serial_v2] 格式化代码

[utest][serial_v2] 删除无意义的打印
2025-05-16 09:42:11 +08:00
Rbb666
22612ae48c [utest][wq]add workqueue_tc (#9850)
* [utest][wq]add workqueue_tc.

* [action][ci]ci添加wq测试用例
2025-01-01 21:53:43 +08:00
zhujiale
e4760364f1 [serial] add bypass testcase in utest 2024-12-17 11:08:14 +08:00
Shell
a573ea06b7 🚚 renaming: move smp to smp_call 2024-11-03 10:08:45 +08:00
Shell
81a35861fd utest: smp_call: add smoke test cases
Signed-off-by: Shell <smokewood@qq.com>
2024-11-03 10:08:45 +08:00
zhujiale
58055e7584 smp_ipi 2024-09-24 09:56:30 +08:00
zhujiale
d8956e415e smp 2024-09-24 09:56:30 +08:00
zhujiale
8ce405f739 smp 2024-09-24 09:56:30 +08:00
zhujiale
244cf61af6 SMP 2024-09-24 09:56:30 +08:00
zhujiale
5f83c51347 SMP 2024-09-24 09:56:30 +08:00
zhujiale
45bc5a721f smp_call 2024-09-24 09:56:30 +08:00
zhujiale
d1865d0d93 smp_call 2024-09-24 09:56:30 +08:00
zms123456
0edd2e7766 [utest]fix race in mutex tc & add recurse lock tc 2024-09-11 18:04:41 -04:00
zms123456
9631f04abe [utest]add mutex_pi_tc
* add mutex_pi
* fix assertion error when thread wakeup while waiting mutex
2024-09-06 17:44:02 -04:00
Yaochenger
5d4f8193aa [add] 修改线程栈大小为UTEST_THR_STACK_SIZE 2024-09-03 14:03:21 +08:00
Yaochenger
f33312abe0 [utest] add smp testcases 2024-09-03 14:03:21 +08:00
Shell
e726b93016 [utest] feat: print progress on testing
This is required so the user will not be confused on waiting for test to complete.

Changes:

- notify user that the test is not corrupted
- expand waiting tick on timed mtx test, for compatibility on different hw.

Signed-off-by: Shell <smokewood@qq.com>
2024-07-22 11:55:11 +08:00
latercomer
d58c29d23e 除了bsp之外的Kconfig使用rsource替代source 2024-06-20 14:40:42 +08:00
zms123456
59193dfeeb [timer]add all soft timer config (#9048)
* add all soft timer

* update wq

* add timer test

* shield LOG_D
2024-06-20 04:20:38 +08:00
zhuzhuzhu
1869c543a6 [fix]fix tmpfs bug (#8970)
* first

* second

* thrid

* Update SConscript

* tmpfs testcase default n

* Update dfs_tmpfs.c

* format document

---------

Co-authored-by: zhujiale <zhujiale@rt-thread.com>
2024-06-13 08:54:02 +08:00
Shell
f00db6381a [mm] precise & readable mm fault type (#9047)
* [smart] fixup: precise mm fault type

Also, fixup arm64 read access fault

* arm64: using meaningful macro on trap

* fixup: renaming macro
2024-06-07 21:34:03 +08:00
Shell
e82c53559b [utest] add device find (#8959)
* [utest] add device find

Signed-off-by: Shell <smokewood@qq.com>

* fixup: add test

* fixup: ptr aliasing

* quality: meaning parameter

---------

Signed-off-by: Shell <smokewood@qq.com>
2024-05-21 08:56:35 +08:00
Shell
e25fc8b511 [libcpu/arm64] add C11 atomic ticket spinlock (#8882)
* [libcpu/arm64] add C11 atomic ticket spinlock

Replace the former implementation of flag-based spinlock which is unfair

Besides, C11 atomic implementation is more readable (it's C anyway),
and maintainable. Cause toolchain can use their builtin optimization and
tune for different micro-architectures. For example armv8.5 introduces a
better instruction. The compiler can help with that when it knows your
target platform in support of it.

Signed-off-by: Shell <smokewood@qq.com>

* fixup: RT_CPUS_NR

---------

Signed-off-by: Shell <smokewood@qq.com>
2024-05-16 15:45:12 +08:00
Shell
48bd0e49f2 [ipc] support of lockless rt_completion (#8887)
* [ipc] lockless rt_completion implementation

The new rt_completion implemented by lockless algorithm can improve timer resolution for up to ~12%, compare to sem IPC.

Signed-off-by: Shell <smokewood@qq.com>

* fixup: error

* remove useless changes

---------

Signed-off-by: Shell <smokewood@qq.com>
2024-05-08 09:25:57 +08:00