Bootstrap

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