ltp-testcase

testcase目录分析

子目录名 用途说明
commands/ 包含对系统命令行工具(如 ls、cp、grep 等)的功能与健壮性测试,验证其在异常输入或边界条件下的行为。
cve/ 针对已公开的 CVE(Common Vulnerabilities and Exposures)漏洞编写复现性测试,用于验证内核或用户空间组件是否受特定安全缺陷影响。
kernel/ 覆盖 Linux 内核核心子系统的测试,包括调度器、内存管理、进程控制、中断处理等,确保内核行为符合预期规范。
lib/ 提供对 C 标准库及其他系统库(如 libc、libpthread)接口的单元测试,验证库函数在不同平台上的正确性与一致性。
misc/ 存放无法归入其他明确类别的通用测试用例,通常涉及系统整体行为、环境变量处理、信号机制等跨领域功能。
network/ 实现网络协议栈与相关系统调用的测试,涵盖 TCP/UDP、socket API、netfilter、IPv4/IPv6 等,支持本地与远程通信场景。
open_posix_testsuite/ 集成 Open POSIX Test Suite,用于验证系统对 IEEE Std 1003.1(POSIX.1)标准的合规性,包括文件 I/O、线程、信号等接口。
realtime/ 专注于实时性能测试,验证 SCHED_FIFO、SCHED_RR 调度策略、高精度定时器(如 clock_gettime)、优先级继承等实时特性是否正常工作。

commands目录分析

子目录名 用途说明 测试原理 验收标准
ar/ 对归档工具ar进行测试,验证创建、修改和提取归档文件等功能在各种情况下的正确性和稳定性 使用ar命令创建归档文件,插入文件,移动文件等操作,验证归档文件的完整性和正确性 ar命令能够正确创建、修改和提取归档文件,操作结果符合预期
cp/ 测试文件复制命令cp的各种选项和场景,包括普通文件、目录、符号链接等不同类型文件的复制行为 创建目录树结构,使用cp命令进行文件和目录复制,验证复制结果的完整性和正确性 cp命令能够正确复制各种类型的文件和目录,保持原有属性和结构
cpio/ 验证cpio归档工具的功能,测试其在打包和解包文件时的行为及数据完整性保证 使用cpio命令创建归档文件并解包,验证数据完整性和命令功能 cpio命令能够正确打包和解包文件,数据保持完整一致
df/ 对磁盘空间查看命令df进行测试,验证其在不同文件系统和各种选项下的输出准确性 在各种文件系统上运行df命令的不同选项(-P、-a、-i、-k、-t、-T、-v、-h、-H、-m、--version等),验证输出格式和数据准确性 df命令能够正确显示各种文件系统的磁盘空间使用情况,输出格式符合预期
du/ 测试目录空间使用情况查看命令du,确保其能准确统计文件和目录的磁盘使用量 创建具有已知大小的文件和目录结构,运行du命令并验证输出结果 du命令能够准确计算和显示文件及目录的磁盘使用量
file/ 验证file命令识别文件类型的能力,测试其对各种文件格式的正确识别率 准备多种类型的测试文件(如C源文件、Perl脚本、Python脚本、Shell脚本等),使用file命令识别文件类型并与预期结果对比 file命令能够正确识别各种文件类型的格式
gdb/ 对GNU调试器gdb进行功能测试,验证其调试程序、设置断点、查看变量等核心调试功能 使用gdb调试测试程序,设置断点,检查变量值,验证调试功能的正确性 gdb能够正确加载程序,设置断点,调试程序并显示正确的变量值
gzip/ 测试gzip压缩工具及其对应的gunzip解压工具,验证压缩解压功能及递归处理能力 创建目录结构和文件,使用gzip进行压缩,再用gunzip解压,验证压缩和解压的正确性 gzip和gunzip能够正确压缩和解压文件,递归处理目录结构
insmod/ 验证内核模块加载命令insmod的功能,测试模块正确加载及错误处理机制 尝试加载有效的和无效的内核模块,验证insmod命令的加载功能和错误处理 insmod能够正确加载有效模块,对无效模块给出适当错误信息
keyctl/ 测试Linux密钥管理工具keyctl,验证内核密钥保留服务接口的正确性 使用keyctl命令操作内核密钥保留服务,测试潜在的未初始化变量问题 keyctl命令能够正确操作内核密钥服务,不会因为未初始化变量导致内核崩溃
ld/ 对链接器ld进行测试,验证目标文件链接生成可执行文件过程的正确性 使用ld链接器将多个目标文件链接成可执行文件,验证链接过程的正确性 ld链接器能够正确将目标文件链接成可执行文件
ldd/ 测试动态库依赖查看工具ldd,验证其显示程序共享库依赖的准确性 使用ldd命令查看测试程序的共享库依赖,验证输出结果的准确性 ldd能够正确显示程序所依赖的共享库
ln/ 验证链接创建命令ln,测试硬链接和符号链接的创建及行为差异 使用ln命令创建硬链接和符号链接,验证链接文件的创建和行为 ln命令能够正确创建硬链接和符号链接,链接行为符合预期
lsmod/ 测试内核模块列表查看命令lsmod,验证其显示当前加载模块信息的准确性 运行lsmod命令查看当前加载的内核模块,验证输出信息的准确性 lsmod能够正确显示当前加载的内核模块信息
mkdir/ 对目录创建命令mkdir进行测试,验证各级目录创建及权限设置功能 使用mkdir命令创建目录,测试各种选项和错误情况处理 mkdir能够正确创建目录,处理各种选项和错误情况
mkfs/ 测试文件系统创建工具mkfs,验证在不同设备上创建文件系统的可靠性 在测试设备上使用mkfs创建不同类型的文件系统,验证创建过程和结果 mkfs能够在设备上成功创建指定类型的文件系统
mkswap/ 验证交换分区创建工具mkswap,测试创建和启用交换空间的功能 使用mkswap在设备上创建交换空间,验证创建过程和结果 mkswap能够正确创建交换空间,系统可以正常使用该交换空间
mv/ 测试文件移动和重命名命令mv,验证文件位置变更和名称修改的正确性 使用mv命令移动文件和目录,测试各种移动场景 mv命令能够正确移动和重命名文件及目录
nm/ 对目标文件符号查看工具nm进行测试,验证其显示二进制文件符号表的能力 使用nm命令查看目标文件和归档文件的符号表,验证输出结果 nm命令能够正确显示目标文件中的符号信息
shell/ 测试shell的基本功能和特性,包括管道、重定向等核心shell功能 通过管道向shell脚本传递数据,验证shell的基本功能 shell能够正确处理管道和其他基本功能
sysctl/ 验证系统内核参数调整命令sysctl,测试运行时修改内核参数的功能 使用sysctl命令修改内核参数,验证修改结果和系统行为 sysctl能够正确修改内核参数,系统按预期响应
tar/ 测试tar归档工具的各种功能,验证文件打包和解包的完整性和正确性 使用tar创建、列出和提取普通、gzip和bzip格式的归档文件,验证操作结果 tar能够正确处理各种格式的归档文件
tpm-tools/ 对可信平台模块工具集进行测试,验证TPM相关安全功能的操作接口 使用TPM工具执行相关安全操作,验证工具功能 TPM工具能够正确执行安全相关操作
unshare/ 测试命名空间隔离命令unshare,验证进程执行环境隔离的有效性 使用unshare命令创建隔离环境,验证命名空间隔离功能 unshare能够正确创建和隔离不同的命名空间环境
unzip/ 验证ZIP格式解压工具unzip,测试处理各种ZIP压缩文件的能力 使用unzip解压测试ZIP文件,验证解压结果 unzip能够正确解压ZIP格式的压缩文件
vmcp/ 对虚拟机控制程序命令vmcp进行测试,验证与虚拟机监控器交互功能 使用vmcp命令与虚拟机监控器交互,验证命令功能 vmcp能够正确与虚拟机监控器通信
wc/ 测试文件内容统计命令wc,验证对文件行数、字数、字符数统计的准确性 创建测试文件,使用wc命令统计文件内容,验证统计结果 wc命令能够准确统计文件的行数、字数和字符数
which/ 验证命令路径查找工具which,测试其在PATH环境变量中定位命令的准确性 设置PATH环境变量,使用which命令查找命令路径,验证查找结果 which能够正确在PATH中定位命令的完整路径

cve目录分析

针对已公开的 CVE(Common Vulnerabilities and Exposures)漏洞编写复现性测试,用于验证内核或用户空间组件是否受特定安全缺陷影响

子目录名 用途说明 文件组成及作用
cve/ 针对已公开的 CVE(Common Vulnerabilities and Exposures)漏洞编写复现性测试,用于验证内核或用户空间组件是否受特定安全缺陷影响 详见下表

cve目录分析

文件名 用途说明 测试原理 验收标准
cve-2014-0196.c 测试Netlink套接字中由于skb克隆处理不当导致的空指针解引用漏洞 利用CVE-2014-0196描述的竞争条件,通过pty设备和ioctl操作尝试造成缓冲区溢出,检测内核是否会立即崩溃、重启或冻结 系统不应出现崩溃、重启或冻结现象,内核应正确处理缓冲区溢出情况
cve-2015-3290.c 测试内核中NX漏洞,通过抢占信号处理程序绕过内核的SMEP保护机制 通过构造嵌套NMI场景,测试NMI堆栈状态是否会被破坏,验证内核是否能正确处理NMI返回时的espfix64机制 系统应正确处理NMI返回,不会因堆栈状态损坏导致安全绕过
cve-2016-10044.c 测试在gethostbyname()函数中使用的DNS解析器的缓冲区溢出问题 检查是否可以通过READ_IMPLIES_EXEC人格特征隐式地将AIO映射标记为可执行 AIO映射不应被标记为可执行,系统应阻止此类安全绕过
cve-2016-7042.c 测试KEYCTL_READ命令中可能发生的双重释放漏洞 通过添加密钥并读取/proc/keys文件,测试是否存在sprintf缓冲区过短导致的双重释放问题 系统不应发生双重释放,密钥信息应正确显示
cve-2016-7117.c 测试recvfrom、recvmmsg和recvmsg系统调用中refcount_t类型的使用错误 通过在recvmmsg()和close()之间制造竞争条件,测试文件描述符释放和错误字段设置的时序问题 系统应正确处理并发操作,不会因竞争条件导致空指针异常
cve-2017-2671.c 测试ping套接字中因锁机制不正确而导致的竞争条件漏洞 在两个线程中分别正确连接ping套接字和使用AF_UNSPEC连接,触发ping_unhashed()函数的竞争条件 系统应正确处理并发连接操作,不会因锁机制问题导致崩溃
cve-2017-16939.c 测试XFRM框架中的空指针解引用漏洞 通过创建多个线程并发执行xfrm_dump_policy()操作,测试是否存在空指针解引用问题 系统应正确处理并发策略转储操作,不会出现空指针异常
cve-2017-17052.c 测试AF_PACKET套接字实现中的信息泄漏问题 通过反复fork进程并访问/proc/self/exe文件描述符,测试是否存在use-after-free漏洞 系统不应发生内存释放后继续使用的情况,避免信息泄露
cve-2017-17053.c 测试AF_PACKET套接字中的竞争条件漏洞 通过并发修改LDT(本地描述符表)并调用modify_ldt系统调用,测试是否存在use-after-free问题 系统应正确处理并发LDT操作,不会出现内存释放后继续使用的情况
cve-2022-4378.c 测试蓝牙子系统中的越界写入漏洞 向/proc/sys文件写入大量空白字符,测试是否会导致内核堆栈溢出 系统应正确处理大量空白字符输入,不会发生堆栈溢出
cve-2025-21756.c 测试较新的内核漏洞(可能是未来将披露的CVE) 待补充 待补充
cve-2025-38236.c 测试较新的内核漏洞(可能是未来将披露的CVE) 待补充 待补充
meltdown.c 测试著名的熔断(Meltdown)漏洞(CVE-2017-5754),检测处理器推测执行机制的安全问题 利用侧信道攻击技术,测试是否能绕过内核内存保护读取敏感数据 系统应正确隔离用户空间和内核空间内存,防止推测执行攻击
stack_***.c 测试堆栈冲突(Stack ***)漏洞,验证内核是否正确设置了堆栈保护间隙 通过mmap区域接近栈顶并在栈上分配内存直到触发保护机制,测试是否有足够的堆栈保护间隙 系统应提供至少256页大小的堆栈保护间隙,防止堆栈冲突攻击
icmp_rate_limit01.c 测试ICMP速率限制中的随机化问题(CVE-2020-25705),防止DNS缓存投毒攻击 发送多批次数据包到关闭的UDP端口并统计ICMP错误数量,验证速率限制是否随机化 ICMP速率限制应具备随机化特性,防止被用于DNS缓存投毒攻击
tcindex01.c 测试tcindex分类器中的UAF(Use After Free)漏洞(CVE-2023-1829) 通过创建和删除特定参数的tcindex流量过滤器,测试是否存在释放后使用漏洞 系统应正确管理tcindex过滤器内存,不会出现释放后继续使用的情况

每个文件测试多少漏洞?

通过分析发现,每个CVE测试文件通常测试一个特定的CVE漏洞:

  1. 一对一映射:绝大多数情况下,一个测试文件对应一个CVE漏洞,文件名通常就是CVE编号
  2. 完整测试:每个文件都包含完整的测试逻辑,包括漏洞原理说明、测试环境准备、漏洞触发过程和结果判定
  3. 独立运行:每个测试都是独立的,可以单独执行,互不影响
  4. 元数据标记:每个测试文件都在代码末尾通过.tags字段标明对应的CVE编号

为什么只有这些CVE测试?

通过分析发现,LTP项目中CVE测试的选择遵循以下原则:

  1. 社区贡献驱动:CVE测试主要由社区成员贡献,特别是那些对特定漏洞有深入了解的安全研究人员和厂商。

  2. 可测试性:只有那些能够可靠重现且不会对系统造成不可接受风险的漏洞才会被加入测试套件。

  3. 重要性考量:优先选择影响较大、危害较严重的漏洞进行测试。

  4. 维护成本:并非所有公开的CVE都会被纳入测试,LTP团队需要平衡测试覆盖范围和维护成本。

  5. 逐步完善:CVE测试集会随着时间推移不断完善,新增的测试用例反映了最新的安全威胁。

总体特点

cve目录专门收集和维护针对已知安全漏洞的测试用例,具有以下特点:

  1. 针对性强:每个测试都针对一个特定的CVE漏洞,代码注释详细说明漏洞原理和修复方式
  2. 实战导向:测试用例多来源于实际的漏洞利用PoC,经过适当修改后用于回归测试
  3. 覆盖广泛:涵盖了从网络子系统、内存管理到硬件漏洞等多个层面的安全问题
  4. 及时更新:随着新漏洞的披露,不断增加新的测试用例
  5. 验证修复:主要用于验证系统是否已修补相关漏洞,防止漏洞重新引入

kernel目录分析

子目录名 用途说明 文件组成及作用
kernel/ 覆盖 Linux 内核核心子系统的测试,包括调度器、内存管理、进程控制、中断处理等,确保内核行为符合预期规范 详见下表

kernel目录子目录详细说明

子目录名 作用说明
connectors/ 测试内核连接器接口,用于用户空间和内核空间之间的通信机制
containers/ 测试Linux容器相关功能,包括控制组(cgroups)等容器技术
controllers/ 测试各种控制器功能,如设备控制器、资源控制器等
crypto/ 测试内核加密子系统,包括各种加密算法和哈希函数的正确性
device-drivers/ 测试设备驱动框架和具体设备驱动的功能
firmware/ 测试固件加载和管理机制
fs/ 测试各种文件系统功能,包括ext系列、proc、sysfs等文件系统
hotplug/ 测试热插拔事件处理机制
include/ 包含内核测试所需的头文件
input/ 测试输入子系统,包括键盘、鼠标、触摸屏等输入设备
io/ 测试输入输出相关功能,包括DMA、PIO等I/O操作
ipc/ 测试进程间通信机制,包括消息队列、信号量、共享内存等
irq/ 测试中断处理机制
kvm/ 测试内核虚拟机(KVM)功能
lib/ 测试内核库函数
logging/ 测试内核日志系统
mce-test/ 测试机器检查异常(Machine Check Exception)处理
mem/ 测试内存管理功能,包括内存分配、释放、映射等
numa/ 测试非统一内存访问(NUMA)架构相关功能
power_management/ 测试电源管理功能,包括休眠、待机等节能机制
pty/ 测试伪终端(PTY)功能
sched/ 测试进程调度器,包括各种调度策略和调度算法
security/ 测试安全相关功能,如SELinux、SMACK等安全模块
sound/ 测试音频子系统
syscalls/ 测试系统调用接口,包含376个系统调用测试
tracing/ 测试内核跟踪机制
uevents/ 测试用户事件处理机制
watchqueue/ 测试观察队列功能

总体特点

kernel目录包含了Linux内核各个子系统的测试用例,具有以下特点:

  1. 覆盖面广:几乎涵盖了内核的所有主要子系统
  2. 层次清晰:按功能模块划分,便于管理和维护
  3. 重点突出:对关键子系统如syscalls、memory management等有大量测试
  4. 可选构建:部分测试如KVM可通过配置选项启用或禁用
  5. 平台适配:某些测试可在特定平台(如Android)上过滤掉不适用的部分

该目录为Linux内核的稳定性和正确性提供了全面的测试保障。

connectors目录分析

子目录名 用途说明 测试原理 备注
connectors/ 测试内核连接器接口,用于用户空间和内核空间之间的通信机制 通过netlink套接字监听内核发送的进程事件,验证fork、exec、exit、uid/gid变更等事件的正确传递
pec/ 测试进程事件连接器功能 使用netlink套接字建立用户空间与内核的连接,监听并验证进程生命周期事件的传递 包含cn_pec.sh主测试脚本、event_generator.c事件生成器和pec_listener.c事件监听器

containers目录分析

子目录名 用途说明 测试原理 备注
containers/ 测试Linux容器相关功能,包括控制组(cgroups)等容器技术 创建不同的命名空间实例,验证进程在隔离环境中的运行效果
mountns/ 测试挂载命名空间功能 创建独立的挂载命名空间,验证文件系统挂载点的隔离性
mqns/ 测试消息队列命名空间功能 在不同消息队列命名空间中创建POSIX消息队列,验证隔离性
netns/ 测试网络命名空间功能 创建独立的网络命名空间,验证网络设备和协议栈的隔离性
pidns/ 测试PID命名空间功能 创建嵌套的PID命名空间,验证PID空间隔离和可见性
sysvipc/ 测试System V IPC命名空间功能 在不同命名空间中创建共享内存、消息队列和信号量,验证隔离性
timens/ 测试时间命名空间功能 设置不同的时间偏移量,验证进程看到的时间差异
userns/ 测试用户命名空间功能 映射用户和组ID,验证权限隔离机制
utsname/ 测试UTS命名空间功能 设置不同的主机名和域名,验证UTS信息的隔离性

controllers目录分析

子目录名 用途说明 测试原理 备注
controllers/ 测试各种控制器功能,如设备控制器、资源控制器等 利用控制组(Control Groups)机制,对CPU、内存、I/O等资源进行分配和限制
cgroup/ 测试控制组基本功能 创建、配置和删除控制组,验证基本的控制组管理功能
cgroup_fj/ 测试控制组fork和join功能 测试进程在控制组之间迁移和子进程继承控制组关系
cgroup_xattr/ 测试控制组扩展属性功能 设置和读取控制组的扩展属性,验证xattr接口
cpuacct/ 测试CPU记账控制器 监控控制组的CPU使用情况,验证CPU时间统计准确性
cpuctl/ 测试CPU控制器 设置CPU带宽限制,验证CPU资源控制功能
cpuctl_fj/ 测试CPU控制器fork和join功能 测试进程在CPU控制器间的迁移和继承
cpuset/ 测试CPU集控制器 分配CPU和内存节点给控制组,验证CPU和内存亲和性
freezer/ 测试冻结控制器 冻结和恢复控制组中的进程,验证进程状态控制
io/ 测试I/O控制器 限制控制组的I/O带宽,验证I/O资源控制
libcontrollers/ 控制器测试库 提供通用的控制器测试函数和工具
memcg/ 测试内存控制器 设置内存使用上限,验证内存资源限制功能
memctl/ 测试内存控制器功能 测试内存压力下的控制组行为
pids/ 测试PID控制器 限制控制组内的进程数量,验证进程计数功能

crypto目录分析

子目录名 用途说明 测试原理 备注
crypto/ 测试内核加密子系统,包括各种加密算法和哈希函数的正确性 使用AF_ALG套接字接口和内核加密API,对各种加密算法进行加解密测试

device-drivers目录分析

子目录名 用途说明 测试原理 备注
device-drivers/ 测试设备驱动框架和具体设备驱动的功能 加载和卸载各种设备驱动模块,验证设备探测、初始化和管理功能
acpi/ 测试ACPI设备驱动 检查ACPI设备节点和相关功能接口
agp/ 测试AGP设备驱动 验证AGP图形加速端口的初始化和配置
base/ 测试设备模型基础功能 测试设备注册、注销和设备模型核心功能
block/ 测试块设备驱动 执行块设备I/O操作,验证块层功能
cpufreq/ 测试CPU频率调节驱动 调节CPU频率,验证动态频率调整功能
dev_sim_framework/ 测试设备模拟框架 使用设备模拟框架测试驱动程序
drm/ 测试DRM设备驱动 验证Direct Rendering Manager相关功能
locking/ 测试设备驱动锁定机制 测试各种同步原语在设备驱动中的使用
misc_modules/ 测试杂项设备模块 加载和测试各种杂项设备驱动
nls/ 测试本地语言支持 验证字符编码转换和本地化支持
pci/ 测试PCI设备驱动 检测和配置PCI设备,验证PCI子系统
rcu/ 测试RCU机制 验证Read-Copy-Update同步机制在设备驱动中的应用
rtc/ 测试RTC设备驱动 访问实时时钟设备,验证时间和日期功能
tbio/ 测试测试I/O功能 执行各种I/O操作测试
uaccess/ 测试用户空间访问 验证用户空间内存访问的安全性和正确性
usb/ 测试USB设备驱动 检测和操作USB设备,验证USB子系统
v4l/ 测试视频设备驱动 访问视频设备,验证Video for Linux接口
zram/ 测试ZRAM压缩块设备 配置和使用压缩交换设备,验证内存压缩功能

firmware目录分析

子目录名 用途说明 测试原理 备注
firmware/ 测试固件加载和管理机制 触发固件加载请求,验证内核和用户空间协同加载固件的机制
fw_load_kernel/ 测试内核固件加载 直接从内核请求固件,验证内核固件加载路径
fw_load_user/ 测试用户空间固件加载 通过用户空间守护进程协助加载固件,验证用户空间固件加载路径

fs目录分析

子目录名 用途说明 测试原理 备注
fs/ 测试各种文件系统功能,包括ext系列、proc、sysfs等文件系统 创建、挂载和操作各种文件系统,验证文件系统功能和稳定性
acl/ 测试访问控制列表 设置和验证文件ACL权限,测试细粒度访问控制
binfmt_misc/ 测试二进制格式识别 注册和测试杂项二进制格式解释器
doio/ 测试I/O操作 执行各种文件I/O操作,验证I/O子系统
fs_bind/ 测试文件系统绑定挂载 创建绑定挂载,验证挂载传播和隔离
fs_di/ 测试文件系统目录项 操作目录项,验证目录项缓存和操作
fs_fill/ 测试文件系统填充 填充文件系统至极限,测试空间不足处理
fs_inod/ 测试文件系统inode 操作inode,验证inode分配和管理
fs_maim/ 测试文件系统损坏 模拟文件系统损坏,验证错误处理和恢复
fs_perms/ 测试文件系统权限 设置和验证文件权限,测试访问控制
fs_readonly/ 测试只读文件系统 挂载只读文件系统,验证只读行为
fsplough/ 测试文件系统压力 施加文件系统压力,验证稳定性
fsstress/ 测试文件系统压力 并发执行多种文件操作,测试文件系统压力下的表现
fsx-linux/ 测试文件系统扩展 执行复杂文件操作序列,测试文件系统一致性
ftest/ 测试文件操作 执行各种文件操作,验证文件系统功能
inode/ 测试inode操作 创建和删除inode,验证inode管理
iso9660/ 测试ISO9660文件系统 挂载和访问ISO9660文件系统,验证光盘文件系统支持
lftest/ 测试长文件名 创建和操作长文件名,验证文件名长度支持
linktest/ 测试链接操作 创建和操作硬链接和符号链接,验证链接功能
openfile/ 测试文件打开操作 执行文件打开和关闭操作,验证文件描述符管理
proc/ 测试proc文件系统 访问proc文件系统,验证虚拟文件系统功能
quota_remount/ 测试配额重新挂载 设置和测试文件系统配额功能
racer/ 测试文件系统竞态 并发访问文件系统,测试竞态条件处理
read_all/ 测试全文件读取 读取大文件,验证大文件处理能力
squashfs/ 测试squashfs文件系统 挂载和访问squashfs文件系统,验证压缩只读文件系统支持
stream/ 测试流式I/O 执行流式数据读写,验证顺序访问性能

hotplug目录分析

子目录名 用途说明 测试原理 备注
hotplug/ 测试热插拔事件处理机制 模拟CPU和内存热插拔,验证系统资源动态调整能力
cpu_hotplug/ 测试CPU热插拔 在线和离线CPU核心,验证CPU热插拔功能
memory_hotplug/ 测试内存热插拔 在线和离线内存区域,验证内存热插拔功能

input目录分析

子目录名 用途说明 测试原理 备注
input/ 测试输入子系统,包括键盘、鼠标、触摸屏等输入设备 模拟输入事件,验证输入子系统事件处理和传递机制

io目录分析

子目录名 用途说明 测试原理 备注
io/ 测试输入输出相关功能,包括DMA、PIO等I/O操作 执行异步I/O、直接I/O等高级I/O操作,验证I/O子系统功能
aio/ 测试异步I/O 使用异步I/O接口执行文件操作,验证异步I/O功能
direct_io/ 测试直接I/O 绕过页面缓存执行直接I/O操作,验证直接I/O功能
ltp-aiodio/ 测试异步I/O 多线程环境下执行异步I/O操作,验证并发异步I/O功能
writetest/ 测试写操作 执行各种写操作,验证文件写入功能

ipc目录分析

子目录名 用途说明 测试原理 备注
ipc/ 测试进程间通信机制,包括消息队列、信号量、共享内存等 创建和使用各种IPC机制,验证进程间通信功能
pipeio/ 测试管道I/O 使用管道进行进程间通信,验证管道功能

irq目录分析

子目录名 用途说明 测试原理 备注
irq/ 测试中断处理机制 调整中断分配和处理,验证中断子系统功能

kvm目录分析

子目录名 用途说明 测试原理 备注
kvm/ 测试内核虚拟机(KVM)功能 创建和运行虚拟机,验证硬件虚拟化支持

lib目录分析

子目录名 用途说明 测试原理 备注
lib/ 测试内核库函数 调用内核库函数,验证库函数实现

logging目录分析

子目录名 用途说明 测试原理 备注
logging/ 测试内核日志系统 写入和读取内核日志,验证日志系统功能
kmsg/ 测试内核消息 访问/proc/kmsg,验证内核消息缓冲区功能

mce-test目录分析

子目录名 用途说明 测试原理 备注
mce-test/ 测试机器检查异常(Machine Check Exception)处理 模拟硬件错误,验证MCE检测和处理机制

mem目录分析

子目录名 用途说明 测试原理 备注
mem/ 测试内存管理功能,包括内存分配、释放、映射等 执行各种内存操作,验证内存管理子系统
cpuset/ 测试CPU集功能 设置CPU和内存节点亲和性,验证资源分配功能
hugetlb/ 测试大页功能 分配和使用大页内存,验证大页支持
ksm/ 测试内存合并功能 创建相同页面,验证内核相同页合并功能
mem/ 测试内存操作 执行基本内存操作,验证内存管理功能
mmapstress/ 测试内存映射压力 创建大量内存映射,测试内存映射子系统压力下的表现
mtest01/ 测试内存功能 执行内存分配和释放,验证基本内存管理功能
mtest05/ 测试内存功能 测试内存保护机制
mtest06/ 测试内存功能 测试内存映射功能
mtest07/ 测试内存功能 测试内存共享功能
oom/ 测试内存溢出处理 消耗系统内存触发OOM,验证OOM killer功能
page/ 测试页面管理 操作内存页面,验证页面分配和回收功能
shmt/ 测试共享内存 创建和使用共享内存,验证共享内存功能
swapping/ 测试交换功能 触发内存交换,验证交换子系统功能
thp/ 测试透明大页 使用透明大页,验证透明大页功能
tunable/ 测试内存调优参数 调整内存子系统参数,验证调优功能
vma/ 测试虚拟内存区域 操作VMA,验证虚拟内存区域管理
vmtests/ 测试虚拟内存 执行虚拟内存操作,验证虚拟内存子系统

numa目录分析

子目录名 用途说明 测试原理 备注
numa/ 测试非统一内存访问(NUMA)架构相关功能 在NUMA系统上分配和访问内存,验证NUMA优化

power_management目录分析

子目录名 用途说明 测试原理 备注
power_management/ 测试电源管理功能,包括休眠、待机等节能机制 执行系统休眠和唤醒,验证电源管理功能

pty目录分析

子目录名 用途说明 测试原理 备注
pty/ 测试伪终端(PTY)功能 创建和使用伪终端,验证终端子系统功能

sched目录分析

子目录名 用途说明 测试原理 备注
sched/ 测试进程调度器,包括各种调度策略和调度算法 创建不同调度策略的进程,验证调度器功能
autogroup/ 测试自动分组调度 使用自动分组功能,验证任务分组调度
cfs-scheduler/ 测试完全公平调度器 运行多个任务,验证CFS调度算法
clisrv/ 测试客户端服务器调度 模拟客户端服务器模型,验证调度策略
hyperthreading/ 测试超线程调度 在超线程环境中运行任务,验证调度优化
nptl/ 测试Native POSIX Thread Library 使用NPTL创建线程,验证线程库功能
pthreads/ 测试POSIX线程 创建和管理POSIX线程,验证线程功能
sched_stress/ 测试调度器压力 在高负载下运行调度器,验证稳定性
sysctl/ 测试调度器sysctl接口 调整调度器参数,验证配置接口
tool/ 测试调度工具 使用调度相关工具,验证工具功能

security目录分析

子目录名 用途说明 测试原理 备注
security/ 测试安全相关功能,如SELinux、SMACK等安全模块 启用各种安全机制,验证系统安全功能
aslr/ 测试地址空间布局随机化 检查进程内存布局,验证地址随机化功能
cap_bound/ 测试能力边界 设置进程能力边界,验证权限限制功能
dirtyc0w/ 测试脏牛漏洞 尝试利用写时复制漏洞,验证漏洞修复情况
dirtypipe/ 测试脏管道漏洞 尝试利用管道缓冲区漏洞,验证漏洞修复情况
filecaps/ 测试文件能力 设置和检查文件关联能力,验证文件能力功能
integrity/ 测试完整性子系统 验证文件完整性测量和验证功能
kallsyms/ 测试内核符号表 访问内核符号表,验证符号表访问控制
mmc_security/ 测试MMC安全功能 使用MMC安全特性,验证存储安全功能
prot_hsymlinks/ 测试受保护符号链接 创建和访问受保护符号链接,验证符号链接保护机制
securebits/ 测试安全位 设置安全位标志,验证安全位控制功能
smack/ 测试SMACK安全模块 启用SMACK强制访问控制,验证安全策略实施
umip/ 测试用户模式指令预防 执行受保护指令,验证用户模式指令防护功能

sound目录分析

子目录名 用途说明 测试原理 备注
sound/ 测试音频子系统 访问音频设备,验证音频子系统功能

syscalls目录分析

子目录名 用途说明 测试原理 备注
syscalls/ 测试系统调用接口,包含376个系统调用测试 调用各种系统调用,验证系统调用接口功能和边界条件

tracing目录分析

子目录名 用途说明 测试原理 备注
tracing/ 测试内核跟踪机制 启用各种跟踪机制,验证内核调试和跟踪功能
dynamic_debug/ 测试动态调试 启用动态调试功能,验证调试信息输出
ftrace_test/ 测试ftrace跟踪器 使用ftrace跟踪内核函数,验证跟踪功能
pt_test/ 测试页面表跟踪 跟踪页面表变化,验证内存管理跟踪

uevents目录分析

子目录名 用途说明 测试原理 备注
uevents/ 测试用户事件处理机制 触发和处理用户事件,验证uevent机制

watchqueue目录分析

子目录名 用途说明 测试原理 备注
watchqueue/ 测试观察队列功能 使用观察队列监控文件状态变化,验证通知机制

lib目录分析

文件名 用途说明 测试原理 备注
cmdlib.sh 提供shell脚本所需的基本函数和变量集合 定义通用的shell函数库,为其他shell脚本提供基础功能支持 包含调试开关设置等功能
daemonlib.sh 提供守护进程相关的函数库 检测系统服务管理工具(systemctl)和系统日志守护进程的存在 支持不同的系统服务管理方式
net_cmdlib.sh 网络命令的扩展函数库 基于cmdlib.sh,提供网络相关的命令支持 支持IPv4和IPv6测试
run_tests.sh 测试执行脚本 定义测试用例列表并执行相应的测试 分类管理不同结果类型的测试
test.sh LTP shell测试库 提供LTP测试框架的核心功能,包括测试结果记录和计数等 定义测试结果变量和基本功能
tst_ansi_color.sh ANSI颜色支持 为终端输出提供颜色支持功能 使测试结果更直观
tst_cgctl.c 控制组控制工具 提供控制组(control group)管理功能 用于资源限制和隔离测试
tst_check_drivers.c 驱动检查工具 检查系统中特定驱动是否存在 验证硬件驱动支持情况
tst_check_kconfigs.c 内核配置检查工具 检查内核配置选项是否启用 验证内核功能支持情况
tst_checkpoint.c 检查点同步工具 提供进程间同步机制 用于多进程测试协调
tst_device.c 设备管理工具 管理测试用的设备资源 支持设备分配和清理
tst_env.sh 测试环境设置 初始化测试环境变量和基本设置 为测试提供统一环境
tst_fsfreeze.c 文件系统冻结工具 提供文件系统冻结和解冻功能 用于文件系统相关测试
tst_get_free_pids.c PID获取工具 获取系统中可用的进程ID 支持进程相关测试
tst_get_median.c 中位数计算工具 计算一组数值的中位数 用于性能测试数据分析
tst_get_unused_port.c 端口获取工具 获取系统中未使用的网络端口 支持网络测试
tst_getconf.c 系统配置获取工具 获取系统配置信息 用于系统环境检查
tst_hexdump.c 十六进制转储工具 以十六进制格式显示数据 用于数据调试和分析
tst_kvcmp.c 内核版本比较工具 比较内核版本号 支持内核版本相关判断
tst_loader.sh 测试加载器 提供测试用例加载功能 简化测试脚本编写
tst_lockdown_enabled.c 锁定状态检查工具 检查内核锁定(Lockdown)状态 验证安全功能状态
tst_net.sh 网络测试库 提供网络测试专用功能和配置 支持IPv4/IPv6测试
tst_net_iface_prefix.c 网络接口前缀工具 处理网络接口名称前缀 支持网络接口管理
tst_net_ip_prefix.c IP地址前缀工具 处理IP地址前缀 支持网络地址管理
tst_net_vars.c 网络变量定义 定义网络测试相关变量 提供网络测试基础配置
tst_ns_common.h 命名空间公共头文件 定义命名空间相关公共数据结构 支持容器相关测试
tst_ns_create.c 命名空间创建工具 创建各种Linux命名空间 用于容器隔离测试
tst_ns_exec.c 命名空间执行工具 在指定命名空间中执行命令 支持命名空间功能测试
tst_ns_ifmove.c 网络接口移动工具 将网络接口移动到指定命名空间 支持网络命名空间测试
tst_random.c 随机数生成工具 生成随机数序列 用于测试数据生成
tst_res_.c 测试结果记录工具 记录和报告测试结果 LTP测试框架核心组件
tst_rod.c 只读数据支持 提供只读数据处理功能 支持特定测试需求
tst_run.sh 测试运行器 执行测试用例的主控脚本 测试执行入口
tst_run_shell.c shell测试运行器 运行shell脚本测试用例 支持shell测试执行
tst_secureboot_enabled.c 安全启动检查工具 检查系统安全启动状态 验证安全启动功能
tst_security.sh 安全相关功能 提供安全测试相关功能 支持安全特性测试
tst_sleep.c 睡眠工具 提供精确的睡眠控制功能 支持测试时序控制
tst_supported_fs.c 文件系统支持检查工具 检查系统支持的文件系统类型 用于文件系统测试准备
tst_test.sh 测试框架主库 LTP shell测试框架的主要实现 核心测试功能库
tst_timeout_kill.c 超时终止工具 在超时后终止测试进程 防止测试 hang 住

tests目录分析

文件名 用途说明 测试原理 备注
shell_c_child.c C语言子进程测试 验证C程序中调用shell脚本的功能 展示混合编程测试方式
shell_loader.sh shell测试加载器示例 演示如何使用shell测试加载器 最简单的shell测试示例
shell_loader_all_filesystems.sh 全文件系统测试加载器 在所有支持的文件系统上运行测试 验证文件系统兼容性
shell_loader_brk_cleanup.sh 中断清理测试加载器 测试测试中断时的清理功能 验证资源清理机制
shell_loader_c_child.sh C子进程测试加载器 演示如何从shell调用C程序 展示混合测试方式
shell_loader_cleanup.sh 清理功能测试加载器 测试测试结束后的清理功能 验证资源释放机制
shell_loader_filesystems.sh 文件系统测试加载器 在特定文件系统上运行测试 验证文件系统相关功能
shell_loader_invalid_block.sh 无效块测试加载器 测试处理无效测试块的情况 验证错误处理机制
shell_loader_invalid_metadata.sh 无效元数据测试加载器 测试处理无效元数据的情况 验证元数据校验
shell_loader_kconfigs.sh 内核配置测试加载器 测试基于内核配置的测试条件 验证内核功能依赖
shell_loader_no_metadata.sh 无元数据测试加载器 测试缺少元数据时的行为 验证容错能力
shell_loader_setup_cleanup.sh 设置清理测试加载器 测试测试设置和清理流程 验证完整测试周期
shell_loader_supported_archs.sh 架构支持测试加载器 测试特定CPU架构的支持情况 验证平台兼容性
shell_loader_tags.sh 标签测试加载器 测试基于标签的测试选择机制 验证测试分类功能
shell_loader_tcnt.sh 测试计数加载器 测试测试用例计数功能 验证测试管理功能
shell_loader_wrong_metadata.sh 错误元数据测试加载器 测试处理错误元数据的情况 验证错误处理机制
shell_test01.c shell测试示例01 演示C程序调用shell脚本的测试方式 C-shell混合测试示例
shell_test02.c shell测试示例02 演示另一种C程序调用shell脚本的方式 C-shell混合测试示例
shell_test03.c shell测试示例03 演示第三种C程序调用shell脚本的方式 C-shell混合测试示例
shell_test04.c shell测试示例04 演示第四种C程序调用shell脚本的方式 C-shell混合测试示例
shell_test05.c shell测试示例05 演示第五种C程序调用shell脚本的方式 C-shell混合测试示例
shell_test06.c shell测试示例06 演示第六种C程序调用shell脚本的方式 C-shell混合测试示例
shell_test_brk.sh 中断测试脚本 测试测试中断处理功能 验证异常处理机制
shell_test_check_argv.sh 参数检查测试脚本 测试命令行参数处理功能 验证参数解析
shell_test_checkpoint.sh 检查点测试脚本 测试进程间同步功能 验证同步机制
shell_test_pass.sh 通过测试脚本 最简单的通过测试示例 基础测试示例

misc目录分析

子目录 用途说明 测试原理 验收标准
crash/ 系统健壮性测试 通过生成随机字节串并跳转执行,以及生成随机系统调用和随机数据执行,测试操作系统在面对无效或恶意代码时的稳定性 系统不应崩溃或死机,应能正确处理异常情况并保持运行
f00f/ CPU缺陷测试 测试Intel Pentium处理器的F00F缺陷,这是一个硬件级别的bug,可能导致系统挂起 系统应正确处理F00F指令,不会出现挂起现象
lvm/ 逻辑卷管理测试 准备和清理LVM环境,测试逻辑卷管理功能 LVM相关操作应能正常执行,环境准备和清理无错误
math/ 数学函数测试 测试各种数学库函数的正确性和边界情况处理,包括绝对值函数(abs)、字符串转浮点数(atof)以及各类浮点运算函数 数学函数计算结果应符合预期,边界情况处理正确,误差在可接受范围内

crash子目录详情

文件名 用途说明 测试原理 验收标准
crash01.c 随机代码执行测试 生成随机字节串并尝试执行,测试系统对非法指令的处理能力 系统应捕获异常并妥善处理,不导致内核崩溃
crash02.c 随机系统调用测试 生成随机系统调用和随机参数执行,测试系统调用接口的健壮性 系统调用应返回适当错误码而非导致系统崩溃

math子目录详情

子目录 用途说明 测试原理 验收标准
abs/ 绝对值函数测试 测试abs()函数对整数求绝对值的正确性 abs()函数返回正确的绝对值结果
atof/ 字符串转浮点数测试 测试atof()函数将字符串转换为浮点数的准确性 atof()函数能正确解析各种格式的数字字符串
float/ 浮点运算测试 测试各种浮点数学函数,包括贝塞尔函数、指数对数函数、双曲函数、幂函数和三角函数等 各类浮点函数计算结果应在精度范围内正确

network目录分析

busy_poll

文件名 用途说明 测试原理 备注
busy_poll01.sh 忙轮询功能测试 测试网络接口的忙轮询(busy poll)功能 验证网络性能优化机制
busy_poll02.sh 忙轮询配置测试 测试忙轮询相关内核参数配置 验证参数设置功能
busy_poll03.sh 忙轮询边界条件测试 测试忙轮询在边界条件下的行为 验证异常处理机制
busy_poll_lib.sh 忙轮询测试库 提供忙轮询测试的公共函数 支持其他忙轮询测试

can

文件名 用途说明 测试原理 备注
can_bcm01.c CAN BCM漏洞测试 测试CAN广播管理命令(CAN BCM)中的竞争条件漏洞(CVE-2021-3609) 验证内核漏洞修复情况
filter-tests/ CAN过滤器测试 测试CAN协议过滤器功能 验证CAN消息过滤机制

dhcp

文件名 用途说明 测试原理 备注
dhcp_lib.sh DHCP测试库 提供DHCP测试的基础功能和工具函数 支持DHCP相关测试
dhcpd_tests.sh DHCP服务器测试 测试DHCP服务器功能 验证DHCP服务实现
dnsmasq_tests.sh DNSmasq测试 测试DNSmasq轻量级DNS/DHCP服务器 验证DNS/DHCP组合服务

iproute

文件名 用途说明 测试原理 备注
ip_tests.sh IP路由工具测试 测试ip命令(IP Route2包)的基本功能 验证网络配置工具

iptables

文件名 用途说明 测试原理 备注
iptables01.sh iptables基础测试 测试iptables防火墙规则基础功能 验证防火墙实现
iptables_lib.sh iptables测试库 提供iptables测试的公共函数和工具 支持复杂的防火墙测试
nft01.sh nftables测试 测试nftables下一代防火墙框架 验证新防火墙架构
nft02.c nftables漏洞测试 测试nftables中的特定漏洞修复情况 验证安全补丁

lib6

文件名 用途说明 测试原理 备注
asapi_01.c IPv6地址解析API测试 测试IPv6地址解析相关API功能 验证IPv6地址处理
asapi_02.c IPv6地址解析API测试 测试IPv6地址解析相关API功能的另一部分 验证IPv6地址处理
asapi_03.c IPv6地址解析API测试 测试IPv6地址解析相关API功能的第三部分 验证IPv6地址处理
getaddrinfo_01.c 地址信息获取测试 测试getaddrinfo函数获取网络地址信息功能 验证地址解析功能
in6_01.c IPv6地址处理测试 测试IPv6地址相关函数 验证IPv6地址操作
in6_02.c IPv6地址处理测试 测试IPv6地址相关函数的另一部分 验证IPv6地址操作

mpls

文件名 用途说明 测试原理 备注
mpls01.sh MPLS基础测试 测试多协议标签交换(MPLS)基础功能 验证MPLS实现
mpls02.sh MPLS路由测试 测试MPLS路由功能 验证MPLS路由机制
mpls03.sh MPLS标签测试 测试MPLS标签处理功能 验证标签操作
mpls04.sh MPLS转发测试 测试MPLS数据包转发功能 验证转发机制
mpls_lib.sh MPLS测试库 提供MPLS测试的公共函数和配置 支持MPLS相关测试

multicast

文件名 用途说明 测试原理 备注
mc_cmds/ 组播命令测试 测试IP组播相关命令接口的稳定性和准确性 验证组播命令实现
mc_cmds/mc_cmds.sh 组播命令综合测试 测试IP组播命令级别接口的变化和添加 验证组播命令接口
mc_commo/ 组播通信测试 测试组播通信功能 验证组播通信机制
mc_member/ 组播成员测试 测试组播成员管理功能 验证IGMP协议实现
mc_opts/ 组播选项测试 测试组播套接字选项 验证套接字选项处理

nfs

文件名 用途说明 测试原理 备注
nfs_stress/ NFS压力测试 对网络文件系统(NFS)进行压力测试 验证NFS在高负载下稳定性
nfs_stress/nfs_lib.sh NFS测试库 提供NFS测试的基础功能和配置 支持NFS相关测试
nfslock01/ NFS锁测试 测试NFS文件锁定机制 验证分布式文件锁
nfsstat01/ NFS状态测试 测试NFS状态收集和报告功能 验证NFS监控机制

nfsv4

文件名 用途说明 测试原理 备注
acl/ NFSv4 ACL测试 测试NFSv4访问控制列表功能 验证细粒度访问控制
locks/ NFSv4锁测试 测试NFSv4锁机制 验证文件锁定功能

packet

文件名 用途说明 测试原理 备注
fanout01.c 数据包扇出测试 测试PACKET_FANOUT套接字选项中的竞争条件漏洞(CVE-2017-15649) 验证网络数据包处理安全

rpc

文件名 用途说明 测试原理 备注
basic_tests/ RPC基础测试 测试远程过程调用(RPC)基础功能 验证RPC实现
rpc-tirpc/ TI-RPC测试 测试传输无关RPC库功能 验证TI-RPC实现

sctp

文件名 用途说明 测试原理 备注
sctp01.sh SCTP协议测试 测试流控制传输协议(SCTP)基础功能 验证SCTP实现
sctp_big_chunk.c SCTP大数据块测试 测试SCTP大数据块处理中的漏洞修复情况 验证SCTP安全性

sockets

文件名 用途说明 测试原理 备注
bind_noport01.sh 套接字绑定测试 测试套接字绑定到未指定端口的行为 验证自动端口分配
vsock01.c 虚拟套接字测试 测试虚拟套接字(VSOCK)中的竞争条件漏洞(CVE-2021-26708) 验证虚拟化网络安全

stress

文件名 用途说明 测试原理 备注
broken_ip/ IP协议压力测试 在异常条件下测试IP协议栈 验证协议栈健壮性
dns/ DNS压力测试 测试DNS解析在高负载下的表现 验证DNS服务稳定性
ftp/ FTP压力测试 测试FTP协议在高负载下的表现 验证文件传输稳定性
http/ HTTP压力测试 测试HTTP协议在高负载下的表现 验证Web服务稳定性
icmp/ ICMP压力测试 测试ICMP协议在高负载下的表现 验证网络诊断工具
interface/ 网络接口压力测试 测试网络接口在高负载下的表现 验证接口稳定性
multicast/ 组播压力测试 测试组播在网络高负载下的表现 验证组播传输稳定性
route/ 路由压力测试 测试路由表在高负载下的表现 验证路由功能稳定性
tcp/ TCP压力测试 测试TCP协议在高负载下的表现 验证传输协议稳定性
udp/ UDP压力测试 测试UDP协议在高负载下的表现 验证数据报协议稳定性

tcp_cmds

文件名 用途说明 测试原理 备注
arping/ ARP探测测试 测试ARP探测工具功能 验证链路层地址解析
ipneigh/ 邻居表测试 测试邻居表管理工具 验证邻居发现协议
netstat/ 网络状态测试 测试网络状态查看工具 验证网络监控工具
ping/ 网络连通性测试 测试ICMP回显请求工具 验证基本网络连通性
sendfile/ 文件传输测试 测试sendfile系统调用 验证高效文件传输
tc/ 流量控制测试 测试流量控制工具 验证QoS功能
tcpdump/ 数据包捕获测试 测试数据包捕获工具 验证网络分析工具
tracepath/ 路径追踪测试 测试路径追踪工具 验证路由追踪功能

tcp_fastopen

文件名 用途说明 测试原理 备注
tcp_fastopen_run.sh TCP快速打开测试 测试TCP快速打开(TFO)功能 验证TCP连接加速机制

traceroute

文件名 用途说明 测试原理 备注
traceroute01.sh 路由追踪测试 测试traceroute工具功能 验证网络路径诊断

virt

文件名 用途说明 测试原理 备注
fou01.sh Foo-over-UDP测试 测试Foo-over-UDP隧道功能 验证网络虚拟化
geneve01.sh GENEVE隧道测试 测试GENEVE隧道封装功能 验证网络虚拟化
gre01.sh GRE隧道测试 测试GRE通用路由封装功能 验证隧道技术
ipvlan01.sh IPvlan测试 测试IPvlan虚拟网络接口 验证网络虚拟化
macsec01.sh MACsec测试 测试MACsec安全网络功能 验证链路层安全
macvlan01.sh Macvlan测试 测试Macvlan虚拟网络接口 验证网络虚拟化
vlan01.sh VLAN测试 测试VLAN虚拟局域网功能 验证网络分段
vxlan01.sh VXLAN测试 测试VXLAN虚拟可扩展局域网功能 验证网络虚拟化
wireguard01.sh WireGuard测试 测试WireGuard VPN功能 验证现代VPN技术

open_posix_testsuite目录分析

子目录/文件 用途说明 测试原理 备注
Documentation/ 文档目录 包含测试套件的各种使用文档、开发指南和规范说明 提供详细的使用和开发指导
autom4te.cache/ Autoconf缓存 Autoconf工具生成的缓存文件目录 构建工具缓存
bin/ 执行脚本 包含运行测试用例的脚本工具,用于批量执行和管理测试 自动化测试执行入口
configure 配置脚本 自动生成Makefile的配置脚本,用于定制化构建环境 构建配置工具
configure.ac Autoconf输入 Autoconf工具的输入文件,定义配置脚本的生成规则 构建配置定义
conformance/ 一致性测试 测试系统接口是否严格遵循POSIX标准,包括行为、定义和接口三个层面的验证 验证标准符合性
functional/ 功能测试 对POSIX提供的各项功能(如消息队列、信号量、线程、定时器等)进行功能性验证 验证功能正确实现
include/ 头文件 包含测试框架所需的公共头文件、宏定义和辅助函数声明 测试基础设施支持
scripts/ 构建脚本 包含自动生成Makefile和其他构建相关文件的脚本工具 构建系统支持
stress/ 压力测试 在高负载和极端条件下测试POSIX特性的稳定性和可靠性 验证系统鲁棒性
tools/ 辅助工具 包含测试开发和调试所需的辅助工具 开发支持工具

autom4te.cache

conformance

子目录 用途说明 测试原理 备注
behavior/ 行为测试 测试POSIX标准中描述的行为规范 验证系统行为是否符合标准
definitions/ 定义测试 测试POSIX标准中的定义和常量 验证标准定义的正确性
interfaces/ 接口测试 测试POSIX标准定义的系统接口 验证接口功能实现

interfaces子目录详情

子目录 测试接口数量 主要测试内容
access/ 1 文件访问权限检查接口
aio_* 多个 异步I/O接口系列
pthread_* 大量 POSIX线程接口系列
fork/ 21 进程创建接口
kill/ 7 信号发送接口
mmap/ 41 内存映射接口
mq_* 多个 消息队列接口系列
pthread_* 大量 POSIX线程接口系列
sched_* 多个 进程调度接口系列
sem_* 多个 信号量接口系列
shm_* 多个 共享内存接口系列
sig* 大量 信号处理接口系列
timer_* 多个 定时器接口系列

functional

子目录 用途说明 测试原理 备注
mqueues/ 消息队列功能测试 测试POSIX消息队列的功能实现 验证消息队列操作
semaphores/ 信号量功能测试 测试POSIX信号量的功能实现 验证同步机制
threads/ 线程功能测试 测试POSIX线程的功能实现 验证多线程支持
timers/ 定时器功能测试 测试POSIX定时器的功能实现 验证时间管理

threads子目录详情

子目录 用途说明 测试原理 备注
condvar/ 条件变量测试 测试pthread条件变量功能 验证线程间同步
schedule/ 调度测试 测试线程调度功能 验证调度策略

stress

子目录 用途说明 测试原理 备注
mqueues/ 消息队列压力测试 在高负载下测试消息队列稳定性 验证系统极限
semaphores/ 信号量压力测试 在高负载下测试信号量稳定性 验证同步机制强度
signals/ 信号压力测试 在高负载下测试信号处理稳定性 验证信号机制
threads/ 线程压力测试 在高负载下测试线程功能稳定性 验证多线程性能
timers/ 定时器压力测试 在高负载下测试定时器稳定性 验证时间管理

threads子目录详情

子目录 用途说明 测试原理 备注
fork/ 进程创建可扩展性测试 通过持续创建子进程直到系统资源耗尽,测量fork()调用时间是否会随着系统中进程数量增加而增长,验证系统在高进程负载下的稳定性和可扩展性 使用多进程模型测试系统扩展性
pthread_cancel/ 线程取消机制压力测试 创建大量线程并对其进行频繁取消操作,测试线程取消机制在高负载下的稳定性和正确性,确保取消操作不会破坏系统或其他应用程序 验证线程生命周期管理机制
pthread_cond_*/ 条件变量高并发测试 测试pthread_cond_timedwait等条件变量操作在大量线程等待情况下的性能表现,测量超时时间和实际唤醒时间的差异,验证条件变量在高并发下的准确性和响应性 包括scalability测试和压力测试
pthread_create/ 线程创建压力与可扩展性测试 持续创建线程直到失败,测试线程创建时间和系统中已存在线程数量的关系,验证线程创建的可扩展性和资源限制处理机制 测试线程池管理和资源分配
pthread_exit/ 线程退出机制测试 通过大量线程频繁退出操作,测试线程正常退出机制的稳定性和资源回收效率 验证线程资源管理
pthread_mutex_*/ 互斥锁高并发竞争测试 创建多个线程对同一互斥锁进行竞争操作,包括lock、timedlock、trylock等不同类型锁操作,测试互斥锁在高并发竞争下的性能、公平性和稳定性 包含多种锁操作场景测试
pthread_once/ 一次性初始化功能测试 测试一次性初始化功能在多线程并发调用下的正确性,确保初始化函数只会被执行一次,验证线程安全的单次初始化机制 验证全局资源初始化
pthread_self/ 线程标识获取性能测试 测试线程标识获取功能在高负载下的性能和正确性,验证线程身份识别机制的效率 验证线程身份管理
sem_*/ 信号量可扩展性测试 测试信号量初始化(sem_init)和操作在大量信号量存在情况下的性能表现,验证信号量操作时间不随系统中信号量数量增长而增加,确保信号量机制的可扩展性 包括信号量创建和使用测试

realtime目录分析

子目录 用途说明 测试原理 备注
func/ 实时功能测试 测试实时系统的基本功能,包括异步处理、定时器精度、调度策略等 验证实时系统的核心功能
perf/ 实时性能测试 测试实时系统的性能指标,如延迟、吞吐量等 验证系统的性能表现
stress/ 实时系统压力测试 在高负载条件下测试实时系统的稳

threads子目录详情

func子目录详情

子目录 用途说明 测试原理 备注
async_handler/ 异步事件处理延迟测试 通过测量从pthread_cond_signal调用到被信号线程被调度之间的时间延迟,评估异步事件处理的响应速度 使用高精度计时器测量线程间通信延迟
gtod_latency/ 时间获取延迟测试 通过多次调用gettimeofday()函数并测量调用间隔,评估系统时间获取的延迟和精度 可生成直方图或散点图展示结果
hrtimer-prio/ 高精度定时器优先级测试 测试高精度定时器在不同优先级任务间的调度表现 验证定时器在实时任务中的准确性
matrix_mult/ 矩阵乘法实时性测试 通过矩阵乘法运算测试CPU密集型任务的实时调度表现 评估系统在计算密集型场景下的实时性
measurement/ 实时测量测试 提供多种实时性测量方法和工具 包括中断延迟、上下文切换等测量
periodic_cpu_load/ 周期性CPU负载测试 测试系统在周期性负载下的实时调度能力和稳定性 模拟实际应用场景
pi-tests/ 优先级继承测试 测试优先级继承机制的正确性和性能 验证避免优先级反转的机制
pi_perf/ 优先级继承性能测试 测试优先级继承机制的性能表现 评估PI机制的开销
prio-preempt/ 优先级抢占测试 测试不同优先级任务间的抢占行为 验证调度器的抢占机制
prio-wake/ 优先级唤醒测试 测试任务唤醒时的优先级处理 验证任务调度的正确性
pthread_kill_latency/ 线程信号延迟测试 测量pthread_kill发送信号到线程处理信号的延迟 评估线程间通信的实时性
rt-migrate/ 实时任务迁移测试 测试实时任务在不同CPU核心间的迁移 验证多核系统中的实时性
sched_football/ 调度器"足球"测试 通过复杂调度场景测试调度器的健壮性 模拟复杂的调度场景
sched_jitter/ 调度抖动测试 测量任务调度时间的抖动情况 评估调度的稳定性
sched_latency/ 调度延迟测试 测量任务从就绪到运行的调度延迟 核心实时性指标
thread_clock/ 线程时钟测试 测试线程特定时钟的准确性和一致性 验证线程时间管理

perf子目录详情

子目录 用途说明 测试原理 备注
latency/ 延迟性能测试 通过pthread条件变量操作测量系统延迟性能,包括单次和多次条件变量操作的延迟 使用高精度计时工具测量各种同步原语的延迟

latency子目录详情

文件名 用途说明 测试原理 备注
pthread_cond_latency.c pthread条件变量延迟测试 测量pthread条件变量操作的延迟,包括signal/wait操作的时间消耗 核心同步原语性能测试
pthread_cond_many.c 多条件变量延迟测试 测试多个条件变量同时操作时的系统延迟表现 评估复杂同步场景下的性能
pthread_cond_many_histogram.sh 条件变量延迟直方图 生成条件变量延迟的直方图统计数据 用于可视化性能分析

stress子目录详情

子目录 用途说明 测试原理 备注
pi-tests/ 优先级继承压力测试 在高负载环境下测试优先级继承机制的稳定性和正确性,重现并验证内核中的PI相关bug 包括lookup_pi_state等关键函数测试

pi-tests子目录详情

文件名 用途说明 测试原理 备注
lookup_pi_state.c PI状态查找测试 测试并重现lookup_pi_state()函数中的bug,在高负载下验证PI机制的稳定性 针对特定内核漏洞的测试
testpi-3.c PI机制综合测试 综合测试优先级继承机制在复杂场景下的表现 涵盖多种PI使用场景
一级模块 二级模块 三级模块
syscalls/ - 所有376个系统调用测试(如 open, read, write, mmap 等)
sched/ - SCHED_FIFO, SCHED_RR, SCHED_OTHER, CPU亲和性, 实时调度, autogroup, cfs-scheduler
mem/ - 内存分配/释放, 虚拟内存管理, 页面置换, mmap, 大页(THP), ksm, oom killer, swapping, vma
fs/ ext2/ext3/ext4 文件读写、权限、链接、ACL、配额等
fs/ proc/sysfs 虚拟文件系统访问测试
fs/ nfs/nfsv4 NFS客户端/服务器、锁机制、ACL
fs/ tmpfs/devtmpfs 临时文件系统测试
fs/ iso9660/squashfs 光盘/压缩文件系统支持
ipc/ 消息队列 POSIX消息队列、System V消息队列
ipc/ 信号量 二进制/计数信号量
ipc/ 共享内存 POSIX共享内存、System V共享内存
ipc/ 管道/命名管道 pipe, FIFO
network/ sockets TCP/UDP套接字、bind、listen、accept
network/ tcp_cmds ping, arping, netstat, sendfile, tc, tcpdump, tracepath
network/ iptables/nftables 防火墙规则配置与测试
network/ dhcp/dnsmasq DHCP客户端/服务器功能
network/ multicast 组播通信、IGMP、成员管理
network/ mpls MPLS标签转发、路由
network/ sctp SCTP协议栈测试
network/ stress TCP/UDP/ICMP/DNS/HTTP压力测试
device-drivers/ block 块设备I/O、DMA、PIO
device-drivers/ char 字符设备驱动测试
device-drivers/ usb USB设备探测与操作
device-drivers/ pci PCI设备枚举与配置
device-drivers/ drm 图形渲染管理
device-drivers/ rtc 实时时钟读写
device-drivers/ zram 压缩交换空间
containers/ cgroups cpuacct, cpuset, freezer, memcg, pids
containers/ namespaces pidns, netns, mountns, userns, timens, utsname, mqns, sysvipc
security/ selinux/smack/apparmor 强制访问控制策略测试
security/ capabilities 能力机制(CAP_SYS_ADMIN 等)
security/ aslr 地址空间布局随机化
security/ dirtycow/dirtypipe 已知漏洞回归测试
security/ umip 用户模式指令防护
realtime/ high_precision_timer hrtimer, clock_gettime
realtime/ real_time_scheduling SCHED_FIFO/Round-Robin
realtime/ interrupt_latency 中断延迟测量
realtime/ priority_inheritance 优先级继承机制
hotplug/ cpu_hotplug CPU在线/离线
hotplug/ memory_hotplug 内存热插拔
numa/ - NUMA节点内存分配、CPU绑定、性能测试
power_management/ - 系统休眠、待机、唤醒、电源状态切换
irq/ - 中断处理、中断向量、中断共享
input/ - 键盘、鼠标、触摸屏事件模拟
sound/ - ALSA音频接口、播放/录音测试
firmware/ fw_load_kernel 内核固件加载路径
firmware/ fw_load_user 用户空间固件加载
tracing/ ftrace 函数跟踪、事件追踪
tracing/ dynamic_debug 动态调试日志输出
logging/ kmsg /proc/kmsg 日志读取
kvm/ - KVM虚拟机创建、启动、设备仿真
crypto/ af_alg 加密算法(AES, SHA, RSA)测试
crypto/ hash 散列函数(SHA1, SHA256)验证
pty/ connectors 进程事件连接器(fork/exec/exit)
pty/ cn_pec 事件生成与监听
watchqueue/ - 文件状态监控(inotify 类似)
uevents/ - udev 事件触发与处理
connectors/ - 用户空间与内核通信机制
misc/ crash 随机代码执行、系统调用崩溃测试
misc/ math 数学库函数边界测试
misc/ lvm 逻辑卷管理测试
cve/ CVE-2014-0196 Netlink空指针解引用
cve/ CVE-2015-3290 NX保护绕过
cve/ CVE-2016-10044 DNS解析缓冲区溢出
cve/ CVE-2017-2671 ping套接字竞争条件
cve/ meltdown 推测执行攻击检测
cve/ stack_*** 堆栈冲突漏洞
kernel/ - 上述所有模块的集合(作为顶层抽象)
posted @ 2025-12-02 10:42  逃亡的布丁  阅读(18)  评论(0)    收藏  举报