searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

kselftest测试工具介绍

2023-03-29 08:35:50
268
0

1、简介

内核源码的多个子系统都有自己的自测工具,到目前为止,断点、cpu热插拔、efivarfs、IPC、KCMP、内存热插拔、mqueue、网络、powerpc、ptrace、rcutorture、定时器和虚拟机子系统都有自测工具。另外,用户态内存的自测工具可以利用 testusercopy 模块来测试用户态内存到内核态的拷贝过程。

 

kselftest是Linux源代码中在tools / testing / selftests中提供的测试框架,能够测试内核的特定部分。测试脚本用C语言或Shell脚本编写,并在用户空间中运行以测试内核的特定部分。一些测试脚本可以验证部分Linux内核子系统、库和API,包括cpufreq,gpio,网络,rtc,watchdog,cgroup,ftrace,futex,ipc等。kselftests在用户空间运行。可以用Test Harness在用户空间编写、运行测试。在内核空间中运行的测试需要用到Test Module。

 

Kselftest具有以下特性:

  • 能够快速的运行测试 (目标是在20分钟内完成)
  • 能够运行不同的测试组
  • 测试源代码保存在内核源代码树中,任何使用内核源代码的人都可以轻松地访问它

2、运行自检(热插拔测试以受限模式运行)

编译测试:

       $ make -C tools/testing/selftests

运行测试:

       $ make -C tools/testing/selftests run_tests

使用单个命令编译和运行测试,可使用:

       $ make kselftest

从用户特定的对象目录编译并运行(make O=dir):

       $ make O=/tmp/kselftest kselftest

生成并运行KBUILD_OUTPUT目录(make KBUILD_OUTPUT=):

       $ make KBUILD_OUTPUT=/tmp/kselftest kselftest

3、运行部分自测

可以在make命令行上使用“ TARGETS”变量来指定要运行的单个测试或要运行的测试列表。

仅运行针对单个子系统的测试:

       $ make -C tools/testing/selftests TARGETS=ptrace run_tests

可以指定多个测试来编译和运行:

       $ make TARGETS="size timers" kselftest

从用户特定的对象目录编译并运行(make O=dir):

       $ make O=/tmp/kselftest TARGETS="size timers" kselftest

生成并运行KBUILD_OUTPUT目录(make KBUILD_OUTPUT=):

       $ make KBUILD_OUTPUT=/tmp/kselftest TARGETS="size timers" kselftest

4、安装自检

可以使用kselftest_install.sh工具在默认位置(tools/testing/selftests/kselftest或用户指定的位置)安装自测。

要在默认位置安装自测:

       $ cd tools/testing/selftests

$ ./kselftest_install.sh

要将自检安装在用户指定的位置:

       $ cd tools/testing/selftests

$ ./kselftest_install.sh install_dir

5、运行已安装的自测

       Kselftest安装以及Kselftest压缩包提供了一个名为“ run_kselftest.sh”的脚本来运行测试。

只需执行以下操作即可运行已安装的Kselftests。某些测试需要root特权。

 

 

6、实践

6.1、查看帮助

# ./run_kselftest.sh -h 

Usage: ./run_kselftest.sh [OPTIONS]
  -s | --summary        Print summary with detailed log in output.log
  -t | --test COLLECTION:TEST    Run TEST from COLLECTION
  -c | --collection COLLECTION    Run all tests from COLLECTION
  -l | --list            List the available collection:test entries
  -d | --dry-run        Don't actually run any tests
  -h | --help            Show this usage info

6.2、查看所有用例

# ./run_kselftest.sh -l 
amd-pstate:run.sh
breakpoints:step_after_suspend_test
breakpoints:breakpoint_test
cgroup:test_memcontrol
cgroup:test_kmem
cgroup:test_core
cgroup:test_freezer
cgroup:test_kill

……

6.3、运行某个指定的测试用例

# ./run_kselftest.sh -t size:get_size 
TAP version 13
1..1
# selftests: size: get_size
# TAP version 13
# # Testing system size.
# ok 1 get runtime memory use
# # System runtime memory report (units in Kilobytes):
#  ---
#  Total:  526544212
#  Free:   45069516
#  Buffer: 4372
#  In use: 481470324
#  ...
# 1..1
ok 1 selftests: size: get_size

6.4、运行某个指定的测试用例集

# ./run_kselftest.sh -c tpm2
TAP version 13
1..3
# selftests: tpm2: test_smoke.sh
ok 1 selftests: tpm2: test_smoke.sh # SKIP
# selftests: tpm2: test_space.sh
ok 2 selftests: tpm2: test_space.sh # SKIP
# selftests: tpm2: test_async.sh
ok 3 selftests: tpm2: test_async.sh # SKIP

0条评论
0 / 1000
l****n
4文章数
0粉丝数
l****n
4 文章 | 0 粉丝
l****n
4文章数
0粉丝数
l****n
4 文章 | 0 粉丝
原创

kselftest测试工具介绍

2023-03-29 08:35:50
268
0

1、简介

内核源码的多个子系统都有自己的自测工具,到目前为止,断点、cpu热插拔、efivarfs、IPC、KCMP、内存热插拔、mqueue、网络、powerpc、ptrace、rcutorture、定时器和虚拟机子系统都有自测工具。另外,用户态内存的自测工具可以利用 testusercopy 模块来测试用户态内存到内核态的拷贝过程。

 

kselftest是Linux源代码中在tools / testing / selftests中提供的测试框架,能够测试内核的特定部分。测试脚本用C语言或Shell脚本编写,并在用户空间中运行以测试内核的特定部分。一些测试脚本可以验证部分Linux内核子系统、库和API,包括cpufreq,gpio,网络,rtc,watchdog,cgroup,ftrace,futex,ipc等。kselftests在用户空间运行。可以用Test Harness在用户空间编写、运行测试。在内核空间中运行的测试需要用到Test Module。

 

Kselftest具有以下特性:

  • 能够快速的运行测试 (目标是在20分钟内完成)
  • 能够运行不同的测试组
  • 测试源代码保存在内核源代码树中,任何使用内核源代码的人都可以轻松地访问它

2、运行自检(热插拔测试以受限模式运行)

编译测试:

       $ make -C tools/testing/selftests

运行测试:

       $ make -C tools/testing/selftests run_tests

使用单个命令编译和运行测试,可使用:

       $ make kselftest

从用户特定的对象目录编译并运行(make O=dir):

       $ make O=/tmp/kselftest kselftest

生成并运行KBUILD_OUTPUT目录(make KBUILD_OUTPUT=):

       $ make KBUILD_OUTPUT=/tmp/kselftest kselftest

3、运行部分自测

可以在make命令行上使用“ TARGETS”变量来指定要运行的单个测试或要运行的测试列表。

仅运行针对单个子系统的测试:

       $ make -C tools/testing/selftests TARGETS=ptrace run_tests

可以指定多个测试来编译和运行:

       $ make TARGETS="size timers" kselftest

从用户特定的对象目录编译并运行(make O=dir):

       $ make O=/tmp/kselftest TARGETS="size timers" kselftest

生成并运行KBUILD_OUTPUT目录(make KBUILD_OUTPUT=):

       $ make KBUILD_OUTPUT=/tmp/kselftest TARGETS="size timers" kselftest

4、安装自检

可以使用kselftest_install.sh工具在默认位置(tools/testing/selftests/kselftest或用户指定的位置)安装自测。

要在默认位置安装自测:

       $ cd tools/testing/selftests

$ ./kselftest_install.sh

要将自检安装在用户指定的位置:

       $ cd tools/testing/selftests

$ ./kselftest_install.sh install_dir

5、运行已安装的自测

       Kselftest安装以及Kselftest压缩包提供了一个名为“ run_kselftest.sh”的脚本来运行测试。

只需执行以下操作即可运行已安装的Kselftests。某些测试需要root特权。

 

 

6、实践

6.1、查看帮助

# ./run_kselftest.sh -h 

Usage: ./run_kselftest.sh [OPTIONS]
  -s | --summary        Print summary with detailed log in output.log
  -t | --test COLLECTION:TEST    Run TEST from COLLECTION
  -c | --collection COLLECTION    Run all tests from COLLECTION
  -l | --list            List the available collection:test entries
  -d | --dry-run        Don't actually run any tests
  -h | --help            Show this usage info

6.2、查看所有用例

# ./run_kselftest.sh -l 
amd-pstate:run.sh
breakpoints:step_after_suspend_test
breakpoints:breakpoint_test
cgroup:test_memcontrol
cgroup:test_kmem
cgroup:test_core
cgroup:test_freezer
cgroup:test_kill

……

6.3、运行某个指定的测试用例

# ./run_kselftest.sh -t size:get_size 
TAP version 13
1..1
# selftests: size: get_size
# TAP version 13
# # Testing system size.
# ok 1 get runtime memory use
# # System runtime memory report (units in Kilobytes):
#  ---
#  Total:  526544212
#  Free:   45069516
#  Buffer: 4372
#  In use: 481470324
#  ...
# 1..1
ok 1 selftests: size: get_size

6.4、运行某个指定的测试用例集

# ./run_kselftest.sh -c tpm2
TAP version 13
1..3
# selftests: tpm2: test_smoke.sh
ok 1 selftests: tpm2: test_smoke.sh # SKIP
# selftests: tpm2: test_space.sh
ok 2 selftests: tpm2: test_space.sh # SKIP
# selftests: tpm2: test_async.sh
ok 3 selftests: tpm2: test_async.sh # SKIP

文章来自个人专栏
测试工具介绍
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0