一.安装及编译流程

1.下载LTP

LTP 项目目前位于 GitHub,项目地址:https://github.com/linux-test-project/ltp
获取最新版可以执行以下命令:

git clone https://github.com/linux-test-project/ltp.git

2.安装相关软件包

sudo apt-get install autoconf  automake  autotools-dev m4 gcc libssl-dev libaio-dev flex bison libcap-dev libregf-dev libdts-dev libdtools-ocaml-dev libnuma-dev libacl1-dev automake autoconf dma libmm-dev jfsutils libselinux1-dev xfslibs-dev netconfd numactl numad rpcbind nfs-kernel-server rsh-server sysstat

3.安装LTP步骤

cd ltp
make autotools
./configure
sudo make all
sudo make install

依次执行以上命令后,LTP 已经被正确安装到你的 Linux 系统中,默认安装位于 /opt/ltp/。

4.注意

需要注意的是,我们通过 git clone 命令下载的位于home目录下的ltp文件夹为 ltp源码文件夹,我将在后文简称为源码包。
通过执行一系列命令安装到 /opt 目录下的 ltp 文件夹为ltp安装文件夹,我将在后文简称为安装包。

二.目录结构

1.源码包

1.1.LTP 源码包目录结构描述

名称 说明
INSTALL LTP安装配置指导文档
README LTP介绍
CREDITS 记录对LTP有很大贡献的人
COPYING GNU公开许可证
ChangeLog 描述版本变化
ltpmenu 规划执行LTP的图形化界面接口
Makefile LTP顶层目录的Makefile,负责编译安装pan、testcases和tools
runalltests.sh 序运行全部测试用例并且报告结果的脚本
doc/* 工程文档包含工具和库函数使用手册,描述各种测试
include/* 通用的头文件目录
lib/* 通用的函数目录
testcases/* 包含在LTP下运行和bin目录下的所有测试用例和链接
testscripts/* 存放分组的测试脚本
runtest/* 为自动化测试提供命令列表
pan/* 测试的驱动装置,具备随机和并行测试的能力
scratch/* 存放零碎测试
tools/* 存放自动化测试脚本和辅助工具

1.2.LTP 测试套件包含的内容

$ cd ltp/testcases/
$ ls
commands demoA kernel Makefile network realtime
cve kdump lib misc open_posix_testsuite
名称 说明
commands 常用命令测试
kernel 内核模块及其相关模块
kdump 内核现崩溃转储测试
network 网络测试
realtime 系统实时性测试
open_posix_testsuite posix标准测试
misc 崩溃、核心转出、浮点运算等测试

2.安装包

LTP安装包目录结构描述如下:

名称 说明
bin 存放LTP测试的一些辅助脚本
results 测试结果默认存储目录
testcases 测试项集
output 测试日志默认存储目录
share 脚本使用说明目录
runtest 测试驱动(用于链接testscripts内的测试脚本和testcases测试项目)
lib 通用的库函数目录

三.测试执行

1.整体测试

可以测试所有的测试集,直接运行 runltp 命令将测试 ltp/scenario_groups/default 中的所有测试集,一次测试约 3 小时。

$ cd /opt/ltp
$ sudo ./runltp
也可以使用如下命令
$sudo ./runltp -t 8h |tee ~/runltp_test.log
-t:指定测试的持续时间
-t 60s = 60 seconds
-t 45m = 45 minutes
-t 24h = 24 hour
-t 2d = 2 days
|tee ~/runltp_test.log
把测试的日志打印在终端的同时收集到家目录下的runltp_test.log文件

查看测试结果

cd results/
vim LTP_RUN_ON-XXXX.log
可以到最后的统计
Total Tests: 2173
Total Skipped Tests:xxx
Total Failures: xxx
Kernel Version: xxx
Machine Architecture: mips64
Hostname: xxx

在output目录可以查看测试的fail项和tconf项
LTP_RUN_ON-XXXX.failed
LTP_RUN_ON-XXXX.tconf

2.测试集测试

当然我们可以只测试某个测试集,测试集可以在 ltp/runtest/ 下查看。
需要注意的是,如果我们测试某个测试集,runltp 需要指定 -f 参数。
例:

$sduo ./runltp -f mm //测试内存
  • 1

3.单独测试

如果我们不想测试某个测试集,只想测试某个单独的测试,可以采用安装包测试或者源码包测试。下面以 access01 为例,讲解单独测试。

3.1.安装包测试

进入安装包,执行以下命令即可.

$ cd /opt/ltp/
$ sudo ./runltp -s access01

需要注意的是,如果我们测试某个测试,runltp 需要指定 -s 参数。

3.2.源码包测试

进入源码包,找到acess01胡位置,直接执行./access01即可.

$ cd ~/work/ltp/testcases/kernel/syscalls/access/
$ sudo ./access01

我们看到access01位于testcases目录下,实际上testcases目录下每个文件都是一个完整的可执行程序,可以在编译后的源码路径直接执行

4.测试结果

测试结果的输出类型如下:

Type Description
BROK 程序执行中途发生错误而使测试遭到破坏
CONF 测试环境不满足而跳过执行
WARN 测试中途发生异常
INFO 输出通用测试信息
PASS 测试成功
FAIL 测试失败

5.测试结果分析

执行命令后,会输出许多内容,我们只需要关心最重要的部分.<<<test_start>>到<<<test_end>>中间的内容。这是一个小测试项的开始和结束标志,中间会打印测试的结果以及提示信息等。

5.1.例一测试通过的项

<<<test_start>>>
tag=read_all_dev stime=1611898350
cmdline="read_all -d /dev -p -q -r 3"
contacts=""
analysis=exit
<<<test_output>>>
tst_test.c:1263: TINFO: Timeout per run is 0h 05m 00s
read_all.c:446: TPASS: Finished reading files Summary:

passed 1

failed 0

broken 0

skipped 0

warnings 0

<<<execution_status>>>

initiation_status="ok"

duration=0 termination_type=exited termination_id=0 corefile=no

cutime=1 cstime=1

<<<test_end>>>

根据这个信息我们主要分析哪些呢?
1.查看测试项:tag=read_all_dev
2.查看测试使用的命令:cmdline=read_all -d /dev -p -q -r 3
使用的read_all可执行文件参数是-d /dev -p -q -r 3 (参数的含义可以在源码中找到read_all.c),许多测试项是无参数的。
3.查看这个测试项一共有多个测试:Summary (上述的信息中只有passed=1其余是0,即此测试项一共只有1个测试)
4.如果3中有除了passed,需要查看test_output输出的信息,然后分析异常原因。

5.2.例二测试失败项

<<<test_start>>>
tag=read_all_sys stime=1611898352
cmdline="read_all -d /sys -q -r 3"
contacts=""
analysis=exit
<<<test_output>>>
tst_test.c:1263: TINFO: Timeout per run is 0h 05m 00s
Test timeouted, sending SIGKILL!
tst_test.c:1308: TINFO: If you are running on slow machine, try exporting LTP_TIMEOUT_MUL > 1
tst_test.c:1309: TBROK: Test killed! (timeout?) Summary:

passed 0

failed 0

broken 1

skipped 0

warnings 0

<<<execution_status>>>

initiation_status="ok"

duration=300 termination_type=exited termination_id=2 corefile=no

cutime=3 cstime=5

<<<test_end>>>

通过上述信息可以看出:
1.测试项是read_all_sys
2.使用测试命令是read_all 参数是-d /sys -q -r 3
3.只有一个测试,并且出现了异常”broken 1“
4.查看test_output信息:提示测试是被杀死了,并不是正常结束。还提示可能是超时了。
从表面的信息是测试超时,测试进程被杀死。但是要找到根因,这需要进入源码分析。

如何分析?
1.找到测试项源码:
使用测试执行的文件搜索

uos@uos:~/ltp$ find -name read_all
./testcases/kernel/fs/read_all
./testcases/kernel/fs/read_all/read_all
uos@uos:~/ltp$ cd ./testcases/kernel/fs/read_all/
uos@uos:~/ltp/testcases/kernel/fs/read_all$ ls
Makefile read_all read_all.c

可以看出read_all这个执行文件是由read_all.c编译生成的。
2.打开read_all.c文件
查看测试项的功能 --> 了解参数的含义 --> 打点跟踪流程 --> 定位卡点(在哪里等待超时) --> 分析什么原因导致超时等待

[转帖]LTP使用和分析的更多相关文章

  1. [转帖]cocos2D-X源码分析之从cocos2D-X学习OpenGL(3)----BATCH_COMMAND

    原贴: cocos2D-X源码分析之从cocos2D-X学习OpenGL(3)----BATCH_COMMAND 上一篇介绍了QUAD_COMMAND渲染命令,顺带介绍了VAO和VBO,这一篇介绍批处 ...

  2. [转帖]cocos2D-X源码分析之从cocos2D-X学习OpenGL(2)----QUAD_COMMAND

    原文:cocos2D-X源码分析之从cocos2D-X学习OpenGL(2)----QUAD_COMMAND 上一篇文章介绍了cocos2d-x的基本渲染结构,这篇顺着之前的渲染结构介绍渲染命令QUA ...

  3. Android 7.0 存储系统—Vold与MountService分析(三)(转 Android 9.0 分析)

    Android的存储系统(三) 回顾:前帖分析了Vold的main()函数和NetlinkManager的函数调用流程,截止到NetlinkHandler的创建和start()调用,本帖继续分析源码 ...

  4. window异常处理——except_handler4以及栈展开分析

    以前在15pb学习时候在看雪论坛发的一篇精华帖. 主要是分析在try块中发生嵌套异常时候堆栈是如何平衡的. 就不复制过来了,给个链接http://bbs.pediy.com/showthread.ph ...

  5. 使用哈工大LTP进行句法分析

    作者注:本教程旨在对哈工大LTP在github上的LTP4J(LTP的java版本)教程的补充,请结合以下参考网站一起食用. 参考网站: [1]哈工大语言技术平台云官网--LTP使用文档 http:/ ...

  6. 哈工大LTP语言分析:分词、词性标注、句法分析等

    1. LTP介绍和安装 LTP语言云官网  在线演示 | 语言云(语言技术平台云 LTP-Cloud) 安装LTP的python接口包 $ sudo pip install pyltp 模型文件下载 ...

  7. 【转载】ltp压力测试结果分析脚本

    博客园 首页 新随笔 联系 管理 订阅 随笔- 8  文章- 0  评论- 0  ltp压力测试结果分析脚本   最近工作性质发生了改变,在做操作系统方面的测试.接手的第一个任务是做ltp stres ...

  8. ltp 测试流程及测试脚本分析

    LTP介绍 (2011-03-25 18:03:53) 转载▼ 标签: ltp linux 压力测试 杂谈 分类: linux测试 LTP介绍 一.LTP介绍1.简介LTP(Linux Test Pr ...

  9. 10 个强大的开源 Web 流量分析工具(转帖)

    Web 流量分析工具多不胜数,从 WebTrends 这样专业而昂贵的,到 Google Analytics 这样强大而免费的,从需要在服务器端单独部署的,到可以从前端集成的,不一而足.本文收集并介绍 ...

  10. [转帖]Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626)

    Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626) ADLab2019-03-15共23605人围观 ,发现 4 个不明物体安全报告漏洞 https://www.f ...

随机推荐

  1. 牛刀小试基本语法,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本语法和变量的使用EP02

    书接上回,Go lang1.18首个程序的运行犹如一声悠扬的长笛,标志着并发编程的Go lang巨轮正式开始起航.那么,在这艘巨轮之上,我们首先该做些什么呢?当然需要了解最基本的语法,那就是基础变量的 ...

  2. Java 获取Excel中的表单控件

    Excel中可通过[开发工具]菜单栏下插入表单控件,如文本框.单选按钮.复选框.组合框等等,插入后的控件可执行设置控件格式,如大小.是否锁定.位置.可选文字.数据源区域.单元格链接等.当Excel中已 ...

  3. SimpleDateFormat线程不安全了?这里有5种解决方案

    摘要:我们知道SimpleDateFormat是线程不安全,本文会介绍多种解决方案来保证线程安全. 本文分享自华为云社区<java的SimpleDateFormat线程不安全出问题了,虚竹教你多 ...

  4. App Store上架流程/苹果app发布流程

    第一步:拥有自己的苹果开发者账号: 开发账号分为两类:99美元(发布App Store用的,也就是上架苹果商店用这个):299美元(企业授信证书,不用上架appstore 亦可使用.弊端:证书容易被封 ...

  5. 如何删除PPT中工具栏口袋动画

    口袋动画官网无法打开 http://www.papocket.com/ 插件无法使用 卸载 在[程序和功能]中卸载后,打开PPT,菜单还是存在 选项--加载项,点击以p开头的一串代码(com加载项), ...

  6. PPT 客户提案PPT应该怎么样改

    PPT 客户提案PPT应该怎么样改

  7. Win10家庭/企业/教育版均可升级到专业版

    升级前,先备份现有KEY: cmd中输入 regedit 打开注册表,根据下面路径找到 BackupProductKeyDefault 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\ ...

  8. Lambda 表达式各种用法,你都会了吗

    公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 前言 Lambda表达式是 Java 8 中引入的最有影响力的功能之一.它们通过允许简洁而优雅地创建匿名函数来实现 Jav ...

  9. Codeforces Round #704 (Div. 2) A~E

    比赛链接:https://codeforces.com/contest/1492 1492A.Three swimmers 题意: 有三名游泳的人,他们分别需要 \(a,b,c\) 分钟才能在一个游泳 ...

  10. AtCoder Beginner Contest 166 (A~E)

    比赛链接:Here AB水题 C - Peaks 题意: 给出 \(n\) 个观察台的高度,以及 \(m\) 条边,定义"好观察台":比所有直接相连的观测台都高 思路: 因为道路是 ...