一.安装及编译流程

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. Mysql tls 会话:再一次抓包之后,我认识到…

    本文分享自华为云社区<有些事你只有抓包才知道之mysql tls会话>,作者:张俭. 你的mysql客户端和服务端之间开启tls了吗?你的回答可能是No,我根本没开启mysql的tls. ...

  2. EDS从小白到专家丨生态产业链高效协同的一计良策

    本文分享自华为云社区<[EDS从小白到专家]第3期:生态产业链高效协同的一计良策>,作者:开天aPaaS小助手 . 号外! 华为将于2023年9月20-22日,在上海世博展览馆和上海世博中 ...

  3. Tarjan:这个算法大神

    摘要:图的算法是进行静态分析的基础数据算法,如何提高图的分析效率,就需要对图的算法有进一步的认识. 1. 引言 在静态分析技术中, 我们常用会将代码转成抽象语法树(AST), 然后采用深度遍历(DFS ...

  4. 带你了解VXLAN网络中报文的转发机制

    摘要:本节以集中式VXLAN网络(手工方式建立VXLAN隧道)为例,分别介绍相同子网内.不同子网间是如何进行通信的.在了解转发机制的前提下,我们先来看下VXLAN网关有哪些种类. VXLAN二层网关与 ...

  5. 想快速重构智慧园区5A系统,这份方案推荐给你

    摘要:近年来,园区的数字化一直在演进,从OA.CA.BA.SA.FA等单一系统的信息化建设,到以应用为主导的大系统集成,再到以云.大数据为基础的数据开放平台构建,继而进入全量数据融合.数字技术泛在的智 ...

  6. 云图说|初识华为云数据库GaussDB(for openGauss)

    摘要:本文带你了解华为云华为云数据库GaussDB(for openGauss),将AI 技术融入分布式数据库的全生命周期,实现自运维.自管理.自调优.故障自诊断和自愈. 本文分享自华为云社区< ...

  7. 年搜索量超 7 亿次背后:这款 APP 用火山引擎 DataTester 完成“数据驱动”

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 双十一刚过,双十二在即,随着线上营销玩法的层出不穷,各平台之间的价格逐渐"内卷".消费者对跨平 ...

  8. 火山引擎 DataLeap 一招教你避坑“数据开发”中的资源隔离问题

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在离线数仓开发过程中,研发人员需要根据业务变化,在开发/生产环境中不断切换.解析.调试.以往,企业一般通过人工方式 ...

  9. zsh踩坑记录

    1. zsh: no matches found: uvicorn[standard] 方法一 # 在~/.zshrc中添加下面这句话 setopt no_nomatch # 然后source ~/. ...

  10. 0x03~04 前缀和与差分、二分

    A题:HNOI2003]激光炸弹 按照蓝书上的教程做即可,注意这道题卡空间用int 而不是 long long. int g[5010][5010]; int main() { ios_base::s ...