Linux Lab 进阶: 自动化测试
以 作为演示的开发板:
$ make BOARD=virt
为测试做准备,在 目录下安装必要的文件/脚本:
$ make rootdir
$ make root-install
$ make root-rebuild
直接引导启动:
$ make test
测试完毕后不要关机:
$ make test TEST_FINISH=echo
运行一下客户机的测试用例:
$ make test TEST_CASE=/tools/ftrace/trace.sh
运行客户机的测试用例( 必须足够大,譬如,4096,查看下文的 特性 )
$ make test TEST_BEGIN=date TEST_END=date TEST_CASE='ls /root,echo hello world'
进行重启压力测试:
$ make test TEST_REBOOT=2
注意: reboot 可以有以下几种结果 1) 挂起, 2) 继续; 3) 超时后被杀死, ; 4) 超时终止后不报错继续其他测试,
在一个特定的开发板上测试一个特定 Linux 版本的某个功能( 特性用于增加 为 4096):
$ make test f=kft LINUX=v2.6.36 b=malta TEST_PREPARE=board-init,kernel-cleanup
注意: 和 用于确保测试自动运行,但是 不安全,请在使用前保存代码!
测试一个内核模块:
$ make test m=hello
测试多个内核模块:
$ make test m=exception,hello
基于指定的 ROOTDEV 测试模块,缺省使用 nfs 引导方式,但注意有些开发板可能不支持网络:
$ make test m=hello,exception TEST_RD=/dev/ram0
在测试内核模块时运行测试用例(在 insmod 和 rmmod 命令之间运行测试用例):
$ make test m=exception TEST_BEGIN=date TEST_END=date TEST_CASE='ls /root,echo hello world' TEST_PREPARE=board-init,kernel-cleanup f=cmdline_size
在测试内部内核模块时运行测试用例:
$ make test m=lkdtm TEST_BEGIN='mount -t debugfs debugfs /mnt' TEST_CASE='echo EXCEPTION ">" /mnt/provoke-crash/DIRECT'
在测试内部内核模块时运行测试用例,传入内核参数:
$ make test m=lkdtm lkdtm_args='cpoint_name=DIRECT cpoint_type=EXCEPTION'
测试时不使用 feature-init (若非必须可以节省时间)
$ make test m=lkdtm lkdtm_args='cpoint_name=DIRECT cpoint_type=EXCEPTION' TEST_INIT=0
或
$ make raw-test m=lkdtm lkdtm_args='cpoint_name=DIRECT cpoint_type=EXCEPTION'
测试模块以及模块的依赖(使用 进行检查):
$ make test m=lkdtm y=runtime_testing_menu,debug_fs lkdtm_args='cpoint_name=DIRECT cpoint_type=EXCEPTION'
测试时不使用 feature-init,boot-init,boot-finish 以及不带 :
$ make boot-test m=lkdtm lkdtm_args='cpoint_name=DIRECT cpoint_type=EXCEPTION'
测试一个内核模块并且在测试前执行某些 make 目标:
$ make test m=exception TEST=kernel-checkout,kernel-patch,kernel-defconfig
使用一条命令测试所有功能(从下载到关机,如果关机后挂起,请参考 6.2.2):
$ make test TEST=kernel,root TEST_PREPARE=board-init,kernel-cleanup,root-cleanup
使用一条命令测试所有功能(带 uboot,如果支持的话,譬如:vexpress-a9):
$ make test TEST=kernel,root,uboot TEST_PREPARE=board-init,kernel-cleanup,root-cleanup,uboot-cleanup
测试引导过程中内核挂起,允许指定超时时间,系统挂起时将发生超时:
$ make test TEST_TIMEOUT=30s
测试过程中如果超时,继续执行后续测试,而不是直接终止:
$ make test TEST_TIMEOUT=30s TIMEOUT_CONTINUE=1
测试内核调试:
$ make test DEBUG=1