[转帖]LTP使用和分析

ltp,使用,分析 · 浏览次数 : 0

小编点评

**测试结果分析** **测试一** * 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 00sread_all.c:446: TPASS: Finished reading filesSummary:passed * execution_status:initiation_status="ok"duration=300 termination_type=exited termination_id=2 corefile=nocutime=3 cstime=5 **测试二** * 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 * execution_status:initiation_status="ok"duration=300 termination_type=exited termination_id=2 corefile=nocutime=3 cstime=5 **总结** 测试一成功,测试二失败。 * **测试一**中,测试项的tag和stime与测试二中相同,但命令不同,因此可能导致测试失败。 * **测试二**中,测试项的tag和stime与测试一中相同,但命令不同,因此可能导致测试失败。 * **测试二**中,测试项的错误信息提示测试被杀死了,而不是正常结束。

正文

一.安装及编译流程

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 源码包目录结构描述

        名称说明
        INSTALLLTP安装配置指导文档
        READMELTP介绍
        CREDITS记录对LTP有很大贡献的人
        COPYINGGNU公开许可证
        ChangeLog描述版本变化
        ltpmenu规划执行LTP的图形化界面接口
        MakefileLTP顶层目录的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_testsuiteposix标准测试
          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.测试结果

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

                  TypeDescription
                  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使用和分析相似的内容:

                        [转帖]LTP使用和分析

                        一.安装及编译流程 1.下载LTP LTP 项目目前位于 GitHub,项目地址:https://github.com/linux-test-project/ltp 。 获取最新版可以执行以下命令: git clone https://github.com/linux-test-project/lt

                        [转帖]Linux性能测试之LTP

                        https://www.modb.pro/db/487946 hello,大家好,今天为大家更新一篇关于Linux性能测试的文章,大家都知道在Windows下测试计算机的性能,我们可以使用鲁大师等软件进行测试,直观易懂便捷有效,但是在Linux下进行计算机性能测试该用什么呢?今天就推荐一个压力测试的

                        [转帖]Linux性能测试之unixbench

                        https://www.modb.pro/db/487945 大家好,昨天为大家带来了一篇关于在Linux下性能测试的文章《性能测试之LTP》,今天继续为大家推荐系列工具之unixbench,本工具用于Linux中cpu系统的测试,详情请查看百度,这里不多赘述,本文主要用于演示如何使用此工具。本文使

                        [转帖]Linux性能测试之unixbench

                        https://www.modb.pro/db/487945 大家好,昨天为大家带来了一篇关于在Linux下性能测试的文章《性能测试之LTP》,今天继续为大家推荐系列工具之unixbench,本工具用于Linux中cpu系统的测试,详情请查看百度,这里不多赘述,本文主要用于演示如何使用此工具。本文使

                        [转帖]LTP测试

                        https://zhuanlan.zhihu.com/p/381538099 整体测试 直接运行runltp命令,将测试/opt/ltp/scenario_groups/default文件中所有的测试集。测试时间比较长一次测试约 2 ~ 3 小时。 [root@localhost ~]# /opt/

                        [转帖]服务器稳定性测试-LTP压力测试方法及工具下载

                        简介 LTP(LinuxTest Project)是SGI、IBM、OSDL和Bull合作的项目,目的是为开源社区提供一个测试套件,用来验证Linux系统可靠性、健壮性和稳定性。LTP测试套件是测试Linux内核和内核相关特性的工具的集合。 该工具的目的是通过把测试自动化引入到Linux内核测试,提

                        [转帖]

                        Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

                        [转帖]

                        https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

                        [转帖]ISV 、OSV、 SIG 概念

                        ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

                        [转帖]Redis 7 参数 修改 说明

                        2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww