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进行测试,验证创建、修改和提取归档文件等功能在各种情况下的正确性和稳定性 |
1. ar01.sh:主要测试脚本,包含17个测试用例,测试ar命令的各种功能如创建归档、插入文件、移动文件等 2. datafiles/:测试所需的数据文件目录,包含file1.in到file4.in等多个空文件,作为测试的输入数据 |
| cp/ |
测试文件复制命令cp的各种选项和场景,包括普通文件、目录、符号链接等不同类型文件的复制行为 |
1. cp_tests.sh:主要测试脚本,包含5个测试用例,测试cp命令的基本功能,如递归复制目录树等 |
| cpio/ |
验证cpio归档工具的功能,测试其在打包和解包文件时的行为及数据完整性保证 |
1. cpio_tests.sh:测试cpio命令的功能 |
| df/ |
对磁盘空间查看命令df进行测试,验证其在不同文件系统和各种选项下的输出准确性 |
1. df01.sh:主要测试脚本,包含12个测试用例,测试df命令的各种选项如-P、-a、-i、-k、-t、-T、-v、-h、-H、-m、--version等 |
| du/ |
测试目录空间使用情况查看命令du,确保其能准确统计文件和目录的磁盘使用量 |
1. du01.sh:测试du命令的各种选项 |
| file/ |
验证file命令识别文件类型的能力,测试其对各种文件格式的正确识别率 |
1. file01.sh:测试file命令识别文件类型的功能 2. datafiles/:包含多种类型的测试文件,如C语言源文件(in.c)、Perl脚本(in.pl)、Python脚本(in.py)、Shell脚本(in.sh)等 |
| gdb/ |
对GNU调试器gdb进行功能测试,验证其调试程序、设置断点、查看变量等核心调试功能 |
1. gdb01.sh:测试gdb调试器的基本功能 |
| gzip/ |
测试gzip压缩工具及其对应的gunzip解压工具,验证压缩解压功能及递归处理能力 |
1. gzip_tests.sh:主要测试脚本,包含2个测试用例,测试gzip和gunzip命令的递归压缩和解压缩功能 |
| insmod/ |
验证内核模块加载命令insmod的功能,测试模块正确加载及错误处理机制 |
1. insmod01.sh:测试insmod命令加载内核模块的功能 2. datafiles/:测试所需的数据文件目录 |
| keyctl/ |
测试Linux密钥管理工具keyctl,验证内核密钥保留服务接口的正确性 |
1. keyctl01.sh:测试keyctl命令的功能,特别是潜在的未初始化变量问题 |
| ld/ |
对链接器ld进行测试,验证目标文件链接生成可执行文件过程的正确性 |
1. ld01.sh:主要测试脚本,包含5个测试用例,测试链接器ld的基本功能 2. datafiles/:测试所需的数据文件目录,包含多个C语言源文件(d1.c、f1.c、main.c、rd1.c、rf1.c),用于测试链接过程 |
| ldd/ |
测试动态库依赖查看工具ldd,验证其显示程序共享库依赖的准确性 |
1. ldd01.sh和ldd02.sh:测试ldd命令查看动态库依赖的功能 2. datafiles/:测试所需的数据文件目录 |
| ln/ |
验证链接创建命令ln,测试硬链接和符号链接的创建及行为差异 |
1. ln_tests.sh:测试ln命令创建硬链接和符号链接的功能 |
| lsmod/ |
测试内核模块列表查看命令lsmod,验证其显示当前加载模块信息的准确性 |
1. lsmod01.sh等:测试lsmod命令显示内核模块列表的功能 2. datafiles/:测试所需的数据文件目录 |
| mkdir/ |
对目录创建命令mkdir进行测试,验证各级目录创建及权限设置功能 |
1. mkdir_tests.sh:测试mkdir命令创建目录的功能 |
| mkfs/ |
测试文件系统创建工具mkfs,验证在不同设备上创建文件系统的可靠性 |
1. mkfs_tests.sh:测试mkfs命令创建文件系统的功能 |
| mkswap/ |
验证交换分区创建工具mkswap,测试创建和启用交换空间的功能 |
1. mkswap01.sh:测试mkswap命令创建交换空间的功能 |
| mv/ |
测试文件移动和重命名命令mv,验证文件位置变更和名称修改的正确性 |
1. mv_tests.sh:测试mv命令移动和重命名文件的功能 |
| nm/ |
对目标文件符号查看工具nm进行测试,验证其显示二进制文件符号表的能力 |
1. nm01.sh和nm02.sh:测试nm命令查看目标文件符号表的功能 2. datafiles/:测试所需的数据文件目录 |
| shell/ |
测试shell的基本功能和特性,包括管道、重定向等核心shell功能 |
1. shell_pipe01.sh:测试shell管道功能 |
| sysctl/ |
验证系统内核参数调整命令sysctl,测试运行时修改内核参数的功能 |
1. sysctl01.sh和sysctl02.sh:测试sysctl命令修改内核参数的功能 |
| tar/ |
测试tar归档工具的各种功能,验证文件打包和解包的完整性和正确性 |
1. tar_tests.sh:测试tar命令打包和解包文件的功能 |
| tpm-tools/ |
对可信平台模块工具集进行测试,验证TPM相关安全功能的操作接口 |
1. tpm_tools_tests.sh等:测试TPM工具的功能 |
| unshare/ |
测试命名空间隔离命令unshare,验证进程执行环境隔离的有效性 |
1. unshare01.sh:测试unshare命令创建隔离环境的功能 |
| unzip/ |
验证ZIP格式解压工具unzip,测试处理各种ZIP压缩文件的能力 |
1. unzip_tests.sh等:测试unzip命令解压ZIP文件的功能 |
| vmcp/ |
对虚拟机控制程序命令vmcp进行测试,验证与虚拟机监控器交互功能 |
1. vmcp_tests.sh:测试vmcp命令与虚拟机监控器交互的功能 |
| wc/ |
测试文件内容统计命令wc,验证对文件行数、字数、字符数统计的准确性 |
1. wc01.sh:测试wc命令统计文件内容的功能 |
| which/ |
验证命令路径查找工具which,测试其在PATH环境变量中定位命令的准确性 |
1. which01.sh:测试which命令查找命令路径的功能 |
cve目录分析
针对已公开的 CVE(Common Vulnerabilities and Exposures)漏洞编写复现性测试,用于验证内核或用户空间组件是否受特定安全缺陷影响
| 子目录名 |
用途说明 |
文件组成及作用 |
| cve/ |
针对已公开的 CVE(Common Vulnerabilities and Exposures)漏洞编写复现性测试,用于验证内核或用户空间组件是否受特定安全缺陷影响 |
详见下表 |
cve目录文件详细说明
| 文件名 |
作用说明 |
时间含义 |
| cve-2014-0196.c |
测试Netlink套接字中由于skb克隆处理不当导致的空指针解引用漏洞 |
2014年披露的CVE漏洞编号 |
| cve-2015-3290.c |
测试内核中NX漏洞,通过抢占信号处理程序绕过内核的SMEP保护机制 |
2015年披露的CVE漏洞编号 |
| cve-2016-10044.c |
测试在gethostbyname()函数中使用的DNS解析器的缓冲区溢出问题 |
2016年披露的CVE漏洞编号 |
| cve-2016-7042.c |
测试KEYCTL_READ命令中可能发生的双重释放漏洞 |
2016年披露的CVE漏洞编号 |
| cve-2016-7117.c |
测试recvfrom、recvmmsg和recvmsg系统调用中refcount_t类型的使用错误 |
2016年披露的CVE漏洞编号 |
| cve-2017-2671.c |
测试ping套接字中因锁机制不正确而导致的竞争条件漏洞 |
2017年披露的CVE漏洞编号 |
| cve-2017-16939.c |
测试XFRM框架中的空指针解引用漏洞 |
2017年披露的CVE漏洞编号 |
| cve-2017-17052.c |
测试AF_PACKET套接字实现中的信息泄漏问题 |
2017年披露的CVE漏洞编号 |
| cve-2017-17053.c |
测试AF_PACKET套接字中的竞争条件漏洞 |
2017年披露的CVE漏洞编号 |
| cve-2022-4378.c |
测试蓝牙子系统中的越界写入漏洞 |
2022年披露的CVE漏洞编号 |
| cve-2025-21756.c |
测试较新的内核漏洞(可能是未来将披露的CVE) |
2025年预计披露的CVE漏洞编号 |
| cve-2025-38236.c |
测试较新的内核漏洞(可能是未来将披露的CVE) |
2025年预计披露的CVE漏洞编号 |
| meltdown.c |
测试著名的熔断(Meltdown)漏洞(CVE-2017-5754),检测处理器推测执行机制的安全问题 |
2018年公开的硬件安全漏洞 |
| stack_clash.c |
测试堆栈冲突(Stack Clash)漏洞,验证内核是否正确设置了堆栈保护间隙 |
2017年公开的安全漏洞 |
| icmp_rate_limit01.c |
测试ICMP速率限制中的随机化问题(CVE-2020-25705),防止DNS缓存投毒攻击 |
CVE-2020-25705,2020年披露 |
| tcindex01.c |
测试tcindex分类器中的UAF(Use After Free)漏洞(CVE-2023-1829) |
CVE-2023-1829,2023年披露 |
每个文件测试多少漏洞?
通过分析发现,每个CVE测试文件通常测试一个特定的CVE漏洞:
- 一对一映射:绝大多数情况下,一个测试文件对应一个CVE漏洞,文件名通常就是CVE编号
- 完整测试:每个文件都包含完整的测试逻辑,包括漏洞原理说明、测试环境准备、漏洞触发过程和结果判定
- 独立运行:每个测试都是独立的,可以单独执行,互不影响
- 元数据标记:每个测试文件都在代码末尾通过.tags字段标明对应的CVE编号
为什么只有这些CVE测试?
通过分析发现,LTP项目中CVE测试的选择遵循以下原则:
-
社区贡献驱动:CVE测试主要由社区成员贡献,特别是那些对特定漏洞有深入了解的安全研究人员和厂商。
-
可测试性:只有那些能够可靠重现且不会对系统造成不可接受风险的漏洞才会被加入测试套件。
-
重要性考量:优先选择影响较大、危害较严重的漏洞进行测试。
-
维护成本:并非所有公开的CVE都会被纳入测试,LTP团队需要平衡测试覆盖范围和维护成本。
-
逐步完善:CVE测试集会随着时间推移不断完善,新增的测试用例反映了最新的安全威胁。
总体特点
cve目录专门收集和维护针对已知安全漏洞的测试用例,具有以下特点:
- 针对性强:每个测试都针对一个特定的CVE漏洞,代码注释详细说明漏洞原理和修复方式
- 实战导向:测试用例多来源于实际的漏洞利用PoC,经过适当修改后用于回归测试
- 覆盖广泛:涵盖了从网络子系统、内存管理到硬件漏洞等多个层面的安全问题
- 及时更新:随着新漏洞的披露,不断增加新的测试用例
- 验证修复:主要用于验证系统是否已修补相关漏洞,防止漏洞重新引入
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内核各个子系统的测试用例,具有以下特点:
- 覆盖面广:几乎涵盖了内核的所有主要子系统
- 层次清晰:按功能模块划分,便于管理和维护
- 重点突出:对关键子系统如syscalls、memory management等有大量测试
- 可选构建:部分测试如KVM可通过配置选项启用或禁用
- 平台适配:某些测试可在特定平台(如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/ |
测试输入子系统,包括键盘、鼠标、触摸屏等输入设备 |
模拟输入事件,验证输入子系统事件处理和传递机制 |
|
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/ |
系统崩溃测试 |
通过生成随机字节串并跳转执行来测试操作系统稳定性 |
包含crash01.c和crash02.c两个测试 |
| crash/crash01.c |
系统鲁棒性测试 |
创建随机字节字符串并跳转执行,测试OS的稳定性 |
基于crashme项目的测试工具 |
| crash/crash02.c |
系统崩溃测试 |
通过执行随机指令测试系统崩溃处理机制 |
|
| f00f/ |
Intel F00F漏洞测试 |
测试Intel处理器的F00F漏洞修复情况 |
针对特定CPU漏洞的测试 |
| f00f/f00f.c |
F00F漏洞验证 |
构造特定指令序列测试F00F漏洞修复情况 |
|
| lvm/ |
逻辑卷管理测试 |
测试LVM(逻辑卷管理)功能 |
包含LVM配置和清理脚本 |
| lvm/cleanup_lvm.sh |
LVM清理脚本 |
清理由prepare_lvm.sh创建的LVM卷组 |
|
| lvm/prepare_lvm.sh |
LVM准备脚本 |
创建和挂载LVM卷组供LVM测试使用 |
|
| lvm/datafiles/ |
LVM测试数据文件 |
包含LVM测试所需的数据模板文件 |
|
| lvm/datafiles/runfile.tpl |
LVM运行文件模板 |
LVM测试的配置文件模板 |
|
| lvm/generate_lvm_runfile.sh |
LVM运行文件生成器 |
自动生成LVM测试的运行配置文件 |
|
| math/ |
数学函数测试 |
测试各种数学库函数的正确性 |
包含多个数学函数测试子目录 |
| math/abs/ |
绝对值函数测试 |
测试abs()函数计算整数绝对值的正确性 |
|
| math/abs/abs01.c |
abs函数测试 |
验证abs()函数计算整数绝对值的正确性 |
|
| math/atof/ |
字符串转浮点数测试 |
测试atof()函数将字符串转换为浮点数的正确性 |
|
| math/atof/atof01.c |
atof函数测试 |
验证atof()函数字符串到浮点数转换功能 |
|
| math/float/ |
浮点数运算测试 |
测试各种浮点数数学函数的正确性 |
包含贝塞尔函数、指数对数等测试 |
| math/float/bessel/ |
贝塞尔函数测试 |
测试贝塞尔函数族的计算正确性 |
|
| math/float/exp_log/ |
指数对数函数测试 |
测试exp()、log()等指数对数函数 |
|
| math/float/iperb/ |
双曲函数测试 |
测试sinh()、cosh()等双曲函数 |
|
| math/float/power/ |
幂函数测试 |
测试pow()等幂函数计算 |
|
| math/float/trigo/ |
三角函数测试 |
测试sin()、cos()等三角函数 |
|
| math/fptests/ |
浮点数测试 |
测试浮点数运算的正确性和精度 |
|
| math/fptests/fptest01.c |
浮点数功能测试 |
来自"barsim"基准测试的浮点数测试 |
|
| math/fptests/fptest02.c |
浮点数边界测试 |
测试浮点数在边界条件下的行为 |
|
| math/nextafter/ |
nextafter函数测试 |
测试nextafter()函数计算相邻浮点数的功能 |
|
| math/nextafter/nextafter01.c |
nextafter函数验证 |
验证nextafter()函数计算下一个可表示浮点数的正确性 |
|
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目录分析
| 子目录 |
用途说明 |
测试原理 |
备注 |
| 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_cancel |
测试线程取消功能的压力 |
| pthread_cond_*/ |
pthread条件变量 |
测试条件变量在高负载下的表现 |
| pthread_create/ |
pthread_create |
测试线程创建的压力 |
| pthread_exit/ |
pthread_exit |
测试线程退出的压力 |
| pthread_mutex_*/ |
pthread互斥锁 |
测试互斥锁在高负载下的表现 |
| pthread_once/ |
pthread_once |
测试一次性初始化功能 |
| pthread_self/ |
pthread_self |
测试线程标识获取 |
| sem_*/ |
信号量相关 |
测试信号量在高负载下的表现 |
realtime目录分析
| 子目录 |
用途说明 |
测试原理 |
备注 |
| func/ |
实时功能测试 |
测试实时系统的基本功能,包括异步处理、定时器精度、调度策略等 |
验证实时系统的核心功能 |
| perf/ |
实时性能测试 |
测试实时系统的性能指标,如延迟、吞吐量等 |
验证系统的性能表现 |
| stress/ |
实时系统压力测试 |
在高负载条件下测试实时系统的稳定性和可靠性 |
验证系统在极限条件下的表现 |
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使用场景 |