Linux内核之Kselftests
Linux内核之Kselftests
简介
Linux内核包含了一套开发者可用的单元测试和回归测试(Kselftests),这些测试位于内核源代码的tools/testing/selftest
目录下。这些测试旨在针对内核中的各个代码路径进行小规模的测试。测试应该在构建、安装和启动内核之后运行。
它每天都会在不同的Linux内核树(即代码库)的内核集成测试环境上运行,主要是为了确保内核代码在合并到主干之前,在各种场景和配置下都能正常工作,从而提高内核的整体稳定性和可靠性。
kselftest的一些特性:
- 快速执行测试的能力(目前的目标是不到20分钟)
- 一些开发人员希望在几秒钟内运行测试
- 运行不同测试组的能力
- 测试源代码保存在内核源代码树中,任何使用内核源代码的人都可以很容易地访问它
可以在 Kselftest-wiki 上找到关于Kselftest框架的其他信息,以及如何使用该框架编写新的测试。
编译运行及安装
相关的命令如下:
#编译
$ make headers
$ make -C tools/testing/selftests
#运行tests
$ make -C tools/testing/selftests run_tests
#用简化命令编译并运行
$ make kselftest
#编译并运行其中的 size timers
$ make TARGETS="size timers" kselftest
#编译并运行除开size timers的其他测试
$ make SKIP_TARGETS="size timers" kselftest
#安装到某个目录,不指定默认为kselftest_install
$ make -C tools/testing/selftests install INSTALL_PATH=/some/other/path
#运行已安装的kselftest
$ cd kselftest_install
$ ./run_kselftest.sh
#查看可测试的列表
$ ./run_kselftest.sh -l
#打包
$ make -C tools/testing/selftests gen_tar
注:某些测试需要root权限
Selftests的超时
Selftests设计得很快,因此每次测试的默认超时时间为45秒。测试可以通过在其目录中添加一个设置文件来覆盖默认超时,并在那里将超时变量设置为配置的测试所需的上限超时。只有少数测试会以高于45秒的值覆盖超时,Selftests会努力保持这种状态。Selftests中的超时不被认为是致命的,因为运行测试的系统可能会发生变化,这也会修改运行测试所需的预期时间。如果您可以控制将运行测试的系统,则可以在这些系统上配置测试运行程序,使其在命令行上使用更大或更低的超时值,就像使用-o
或--override timeout
参数一样。例如,要使用165秒,可以使用:
$ ./run_kselftest.sh --override-timeout 165
您可以查看TAP输出,看看是否已超时。
其他
怎么新增一个自定义的测试,
怎么创造一个内核测试模块(Test Module)来进行内核空间的测试,
怎么进行用户空间的测试(Test Harness)
怎么进行热插拔测试等等。
更多的高阶用法可参看官方文档,这里只记录一些简单的概念和简单使用。
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DD'Notes!
评论