Files

4.6 KiB
Raw Permalink Blame History

兼容性测试覆盖详情

更新日期:2026-06-17 测试环境:openEuler RISC-V10.20.237.192:12055 共 1 个测试套(ltp_posix),10 个 POSIX 分类,188 个接口测试用例 最终结果:570 PASS / 36 FAIL / 20 SKIPgcc 修复 + sudo 验证) 旧模版测试已移除,每个 POSIX 接口独立为一个测试用例

一览表

分类 用例数 PASS FAIL SKIP 状态
pthread 95 286 13 0
signal 22 46 0 18
filesystem 16 24 0 0
mqueue 10 42 0 2
semaphore 9 26 7 0 ⚠️
sched 8 23 11 0 ⚠️
mmap 8 42 2 0
aio 8 21 3 0
clocks 7 32 0 0
timer 5 28 0 0
合计 188 570 36 20

SKIP 已通过 -std=gnu11 + -Wno-error=incompatible-pointer-types 修复至 20(剩余为 POSIX 废弃函数 sighold/sigignore 等)。

测试原理

本兼容性测试基于 LTP (Linux Test Project)open_posix_testsuite,验证 openEuler RISC-V 系统对 POSIX 1003.1-2001 标准的兼容性。

测试方式

  • Shell 脚本测试 (.sh):直接执行 LTP 中的测试脚本
  • C 源码测试 (.c):使用 gcc 现场编译(链接 lib/common.c 测试框架)后执行

目录结构

tests/compatibility/ltp_posix/
├── main.fmf                    # 测试套件元数据
├── setup.sh                    # 环境准备(安装依赖、clone LTP
├── teardown.sh                 # 环境清理
├── helper.sh                   # 公共辅助函数(编译+运行)
├── test.sh                     # 主测试脚本(聚合全部 188 个用例)
├── pthread/                    # pthread 多线程(95 个用例)
│   ├── test_ltp_posix_pthread_create/
│   ├── test_ltp_posix_pthread_mutex_init/
│   └── ...
├── signal/                     # 信号(22 个用例)
│   ├── test_ltp_posix_signal_sigaction/
│   └── ...
├── filesystem/                 # 文件系统(16 个用例)
├── mqueue/                     # 消息队列(10 个用例)
├── semaphore/                  # 信号量(9 个用例)
├── sched/                      # 调度(8 个用例)
├── mmap/                       # 内存映射(8 个用例)
├── aio/                        # 异步 I/O8 个用例)
├── clocks/                     # 时钟(7 个用例)
└── timer/                      # 定时器(5 个用例)

分类详情

pthread

95 个测试用例,覆盖全部 pthread_* POSIX 接口:线程创建/销毁、互斥锁、条件变量、读写锁、屏障、自旋锁、线程属性、线程局部存储、取消、信号掩码等。

signal

22 个测试用例,覆盖信号处理接口:sigaction、sigprocmask、sigwait、sigqueue、sigtimedwait、sigpending、sigsuspend、kill、raise 等。

filesystem

16 个测试用例,覆盖文件系统及基础 C 库接口:access、fork、fsync、getpid、strchr、strcpy、strlen、strftime、time、asctime 等。

mqueue

10 个测试用例,覆盖 POSIX 消息队列接口:mq_open、mq_close、mq_send、mq_receive、mq_notify、mq_getattr、mq_setattr、mq_timedreceive、mq_timedsend、mq_unlink。

semaphore

9 个测试用例,覆盖 POSIX 信号量接口:sem_init、sem_open、sem_close、sem_wait、sem_post、sem_timedwait、sem_getvalue、sem_destroy、sem_unlink。

sched

8 个测试用例,覆盖调度接口:sched_get_priority_max/min、sched_getparam、sched_setparam、sched_getscheduler、sched_setscheduler、sched_yield、sched_rr_get_interval。

mmap

8 个测试用例,覆盖内存映射接口:mmap、munmap、mlock、mlockall、munlock、munlockall、shm_open、shm_unlink。

aio

8 个测试用例,覆盖异步 I/O 接口:aio_read、aio_write、aio_error、aio_return、aio_suspend、aio_cancel、aio_fsync、lio_listio。

clocks

7 个测试用例,覆盖时钟接口:clock_getres、clock_gettime、clock_settime、clock_nanosleep、clock_getcpuclockid、clock、nanosleep。

timer

5 个测试用例,覆盖定时器接口:timer_create、timer_delete、timer_getoverrun、timer_gettime、timer_settime。