博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ltp执行过程总结
阅读量:4669 次
发布时间:2019-06-09

本文共 1458 字,大约阅读时间需要 4 分钟。

命令行:./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:

  1. 取得命令行参数,根据相应参数设置宏变量
  2. 设置log fail conf记录文件
  3. 根据命令行参数(宏变量)建立runtest文件
  4. 调用ltp-pan驱动相应testcase,传入相应参数

 

ltp-pan(C代码):

从main函数开始执行

 

比如调用quotactl01
quotactl01.c中没有main函数
quotactl01.c第56行
#include "tst_test.h"

 

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。

转载于:https://www.cnblogs.com/idyllcheung/p/9939916.html

你可能感兴趣的文章
Corner case
查看>>
Anagrams
查看>>
ETL开发
查看>>
POJ 1166 The Clocks (爆搜 || 高斯消元)
查看>>
如何实现一个malloc
查看>>
javascript基础 之 void
查看>>
【DRP】【SQL】-悲观锁-防止多用户同时操作时出现脏数据
查看>>
MRC
查看>>
python_day25__02__异常处理__try---exception—else---finally
查看>>
常见的HTTP错误码
查看>>
python_集合(set)
查看>>
JS --正则表达式
查看>>
归并排序(分治)
查看>>
JavaScript中的流程控制
查看>>
js处理时间戳
查看>>
MySQL进阶11--DDL数据库定义语言--库创建/修改/删除--表的创建/修改/删除/复制
查看>>
[nRF51822] 13、浅谈nRF51822和NRF24LE1/NRF24LU1/NRF24L01经典2.4G模块无线通信配置与流程...
查看>>
[模拟电路] 2、Passive Band Pass Filter
查看>>
一、SecureCRT 8.0 客户端连接服务器
查看>>
Notes for Studying Django
查看>>