命令行:./runltp -b DEVICE -f timers -p -l result-log-timers.20180824 -o screen-log-timers.20180824
runltp脚本大致流程(shell):
LTP_SCRIPT="$(basename $0)"
if [ "$LTP_SCRIPT" = "runltp" ]; then
trap "cleanup" 0
setup
main "$@"
fi
setup过后执行main函数
setup:宏设置,检查ltp是否正确安装,ltp-pan是否正确安装
main:
- 取得命令行参数,根据相应参数设置宏变量
- 设置log fail conf记录文件
- 根据命令行参数(宏变量)建立runtest文件
- 调用ltp-pan驱动相应testcase,传入相应参数
ltp-pan(C代码):
从main函数开始执行
tst_test.h
的216行
int main(int argc, char *argv[])
{
tst_run_tcases(argc, argv, &test);
}
是最先执行的。
tst_run_tcases位于
tst_test.c中
tst_run_tcases先执行do_setup(argc, argv);
检查tst_test结构体的各个变量是否设置,比如
if (tst_test->min_kver)
check_kver();
if (tst_test->dev_fs_type)
tdev.fs_type = tst_test->dev_fs_type;
else
tdev.fs_type = tst_dev_fs_type();
do_setup->run_tcases_per_fs->fork_testrun->testrun->do_test_setup->tst_test->setup()
run_tests中
if (!tst_test->test) {
saved_results = *results;
tst_test->test_all();
for (i = 0; i < tst_test->tcnt; i++) {
saved_results = *results;
tst_test->test(i);
if (getpid() != main_pid) {
exit(0);
}
以上两种运行方式
pan工作原理:LTP测试套件有一个专门的测试驱动程序pan,具体的测试用例的执行都是由pan来调用执行,它可以跟踪孤儿进程和抓取测试的输出信息。它的工作方式是这样的:
从一个测试命令文件中读取要测试的条目和要执行的命令行,然后等待该项测试的结束,并记录详细的测试输出。默认状态下pan会随机的选择一个命令行来运行,可以指定在同一时间要执行测试的次数。
pan会记录测试产生的详细的格式复杂的输出,但它不进行数据的整理和统计,数据整理统计的工作由scanner来完成,scanner是一个测试结果分析工具,它会理解pan的输出格式,并输出成一个表格的
形式来总结那些测试passed或failed。