阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在 IBM Power Systems 上的 Docker 容器中运行 STAF 和 LTP 的开源解决方案

459次阅读
没有评论

共计 6706 个字符,预计需要花费 17 分钟才能阅读完成。

Docker 现在是 Linux® 发行版的一个基本组件。因此,所有系统供应商在集成测试期间都需要验证内核稳定性,这很重要。通过在相同主机上的不同 Linux 发行版中运行,Docker 可以帮助验证标准回归测试。这样就可以通过在一个全自动的测试框架中运行测试,帮助显著简化 VM 基础架构和缩短测试周期。理解在容器内运行的标准测试框架和测试套件的行为也很重要。

本文将介绍如何让软件测试自动化框架 (Software Testing Automation Framework, STAF) 和 Linux 测试项目 (Linux Test Project, LTP) 测试框架在 Docker 容器内运行。这些 Docker 容器在 IBM® Power Systems™ 上的受支持 Linux 发行版上运行。STAF 和 LTP 框架是一个被广泛使用的回归测试组合,用于验证 Linux 发行版上的 Linux 内核和 glibc 组件的行为。

软件测试自动化框架 (STAF)

软件测试自动化框架 (STAF) 是一个开源框架,它包含一组特别适合构造自动化解决方案的内置服务。服务是可重用的组件,它们提供了 STAF 中的所有功能。每个 STAF 服务都提供了一组特定功能,比如日志记录和监视、文件系统操作、进程调用,以及资源管理。

STAF 执行引擎 (STAX) 是另一个基本组件,它基于 STAF、XML 和 Python 而构建,用于自动化测试案例的工作负载分布、执行、结果分析和并行处理。

Linux 测试项目 (LTP)

Linux 测试项目 (LTP) 是一个开源自动化内核测试套件,被设计用于验证 Linux 的可靠性、稳健性和稳定性。它主要关注 Linux 内核和相关特性的功能、回归和压力测试。

Docker

Docker 是一个基于 Linux 容器的开源项目。它使用命名空间和控制组等 Linux 内核特性在操作系统上创建容器。

前提条件

本节列出了在 Docker 中运行 STAF 和 LTP 需要满足的前提条件。

操作系统级别要求

要安装 Docker,需要 64 位版的 Linux 内核。受支持的 Linux 发行版如下:

  • Ubuntu – Trusty 14.04、Xenial 16.04、Yakkety 16.10 及更高版本
  • SLES – SLES 12.x 及更高版本
  • RHEL – RHEL 7 及更高版本

开源镜像

要创建 LTP 镜像和 STAF 镜像,需要以下资源:

  • LTP 测试套件
  • 最新的 STAF/STAX 源代码
  • 开源 Java
  • 示例 ltp.xml 文件

如何构建 STAF 和 LTP Docker 镜像

本节将介绍构建 Docker 镜像的两种方法。第一种方法将介绍如何在容器内手动安装、配置和启动所需的 STAF 和 LTP 服务,并使用 docker commit 命令提交它们。这是第一次配置任何在 Docker 中运行的新软件的首选方法。

第二种方法使用了 Docker 文件来自动配置第一部分中介绍的步骤。这是大多数 Docker 部署项目都在使用的推荐方法。但是,第一种方法的目的是在第一次执行配置时解决依赖关系和其他挑战。

使用 Docker commit 创建 Docker 镜像

安装前面提到的所有 Linux 发行版后,执行以下步骤来创建一个 Docker 镜像:

  1. 通过运行以下命令来创建该容器:
    docker run -i -t --privileged --name=ltptest --hostname=ltptest ppc64le/ubuntu /bin/bash
  2. 下载 LTP 测试案例并复制到该容器。
    在主机上完成以下步骤,以便下载并构建 LTP 测试桶,然后将 LTP 测试案例复制到 Docker 容器:
    1. 从 http://linux-test-project.github.io/ 将最新的稳定 LTP 测试套件下载到主机。本例中下载了 ltp-full-20160920。
    2. 运行以下命令来解压 tar.gz 或 .bz2 ltp 包。运行该命令后,可以在 ltp-full-20160920 中的 INSTALL 文件中看到安装过程的更多信息。
      tar jxvf ltp-full-20120104.tar.bz2 or tar zxvf ltp-full-20120104.tar.gz
    3. 运行以下命令,以便更改到 LTP 目录:
      cd ltp-full-20160920
    4. 运行以下命令来检查配置选项:
      ./configure --help
    5. 运行以下命令,以便在 IBM Power Systems 服务器上构建 64 位 LTP:
      [ltp-full-20160920]# ./configure --prefix=`pwd` --with-open-posix-testsuite CC="gcc -  m64"
          [ltp-full-20160920]# make all
          [ltp-full-20160920]# make install
    6. 将 LTP 测试案例复制到该容器。
      测试案例在主机中的位置:/root/ltp-full-20160920
      cd /root/ltp-full-20160920
      docker cp . ltptest:/usr/local/ltp
  3. 要下载、配置并在容器内启动 STAF,请完成以下步骤:
    1. 访问 https://sourceforge.net/projects/staf/files/ 链接,分别从 staf stax 目录下载 STAF 和 STAX 文件。
      例如,所需的文件是 STAF3425-setup-linux-ppc64le.bin 和 STAXV3517。
    2. 运行以下命令来解压 STAX:
      tar -xvf STAXV3517.tar
    3. 运行以下命令,将 STAF3425-setup-linux-ppc64le.bin 和 STAX 从主机复制到容器:
      docker cp STAF3425-setup-linux-ppc64le.bin <container-id>:/root/
      docker cp stax <container-id>:/root/

      从步骤 d 开始,需要在 Docker 容器内继续操作。

      docker exec -it container_id /bin/bash
    4. 运行以下命令来安装 STAF:
      apt-get install -y unzip (pre-req to help STAF install) ./root/STAF3425-setup-linux-ppc64le.bin -i silent -DACCEPT_LICENSE=1
    5. 运行以下命令,以便在 /usr/local/staf/services 下创建一个目录:
      mkdir -p /usr/local/staf/ services
    6. 运行以下命令,以便将解压的 stax 复制到上面的 services 目录:
      cp -r ./stax /usr/local/staf/services/
    7. 将以下行添加到 /usr/local/staf/bin/STAF.cfg 文件中。
      SERVICE STAX LIBRARY JSTAF EXECUTE /usr/local/staf/services/stax/STAX.jar \
        PARMS "EVENTGENERATION Disabled LOGTCNUMSTARTS Disabled LOGTCELAPSEDTIME Disabled LOGTCSTARTSTOP Disabled NUMTHREADS 10" OPTION JVMName=STAFJVM1 OPTION J2=-Xmx1024m
      SERVICE EVENT LIBRARY JSTAF EXECUTE /usr/local/staf/services/stax/STAFEvent.jar
    8. 删除所有旧 Java 版本(如果有)。
    9. 运行以下命令来安装开源 Java:
      apt-get install -y default-jre
       
      apt-get install -y openjdk-8-jre
    10. 将以下行添加到 /etc/profile.d/staf.sh 文件中。此外,还要将它添加到 /root/.bashrc 中。
      base_java_path='/usr/lib/jvm/java-8-openjdk-ppc64el/jre/bin'
      java_path='' 
      in_string=`export | grep PATH`
      in_string1=`echo "$in_string" | grep "declare -x PATH="`
      string=`echo "$in_string1" | grep "/usr/local/staf/bin"`
      if [! $? = 0]; then
         PATH=/usr/local/staf/bin:$PATH
      fi
      string=`echo "$in_string1" | grep "/usr/local/staf/tools"`
      if [! $? = 0]; then
         PATH=/usr/local/staf/tools:$PATH
      fi
      string=`echo "$in_string1" | grep $java_path`
      if [! $? = 0]; then
         PATH=$java_path:$PATH
      fi
      in_string1=`echo "$in_string" | grep "declare -x CLASSPATH="`
      string=`echo "$in_string1" | grep "/usr/local/staf/lib/JSTAF.jar"`
      if [! $? = 0]; then
         CLASSPATH=/usr/local/staf/lib/JSTAF.jar:$CLASSPATH
      fi
      string=`echo "$in_string1" | grep "/usr/local/staf/services/STAX.jar"`
      if [! $? = 0]; then
         CLASSPATH=/usr/local/staf/services/STAX.jar:$CLASSPATH
      fi
      string=`echo "$in_string1" | grep "/usr/local/staf/services/STAFEvent.jar"`
      if [! $? = 0]; then
         CLASSPATH=/usr/local/staf/services/STAFEvent.jar:$CLASSPATH
      fi
      string=`echo "$in_string1" | grep "/usr/local/staf/services/STAXMon.jar"`
      if [! $? = 0]; then
         CLASSPATH=/usr/local/staf/services/STAXMon.jar:$CLASSPATH
      fi
      string=`echo "$in_string" | grep "declare -x LD_LIBRARY_PATH=" | grep "/usr/local/staf/lib"`
      if [! $? = 0]; then
         LD_LIBRARY_PATH=/usr/local/staf/lib:$LD_LIBRARY_PATH
      fi
      STAFCONVDIR=/usr/local/staf/codepage
      export PATH CLASSPATH LD_LIBRARY_PATH STAFCONVDIR
      setsid /usr/local/staf/bin/STAFProc >/tmp/STAFProc.out 2>&1 &
      set -o vi
    11. 退出容器并再次登录。
  4. 下载示例 XML 文件并将其复制到容器所在位置:/usr/local/staf/xml/ltp.xml。

    可以从 sourceforge.net 网站或 github 存储库下载 ltp.xml 文件。

    • https://sourceforge.net/projects/ltp/files/Utilities/%5BUnnamed%20release%5D/
    • https://github.com/ibmsoe/Dockerfiles/tree/master/ltp_staf
  5. 使用 STAF 在容器内启动 LTP 测试:
    STAF local STAX execute file /usr/local/staf/xml/ltp.xml JOBNAME ltpstaf
  6. 运行以下命令,以便从主机提交 Docker 镜像:
    docker commit <container ID> <repo name>

使用 Dockerfile 创建 Docker 镜像

Dockerfile 完成设置 STAF 框架所需的配置。Dockerfile 还会完成从 STAF 框架内运行 LTP 测试桶所需的配置。

使用从 Dockerfile 构建的镜像启动容器时,会使用 STAF 框架启动 LTP 测试。

可以在 github 存储库中找到 Dockerfile、其他配置文件,以及有关如何创建 ltp_staf Docker 容器的细节:https://github.com/ibmsoe/Dockerfiles/tree/master/ltp_staf。

执行以下步骤来构建镜像:

  1. 运行以下命令,以便克隆 https://github.com/ibmsoe/Dockerfiles/tree/master/ltp_staf 网站中的 ltp_staf 目录:
    gitclone https://github.com/ibmsoe/Dockerfiles/tree/master/ltp_staf
  2. 运行 cd /STAF_LTP 命令来更改目录。
  3. 运行 docker build -t <image_name> 命令来构建 Docker 镜像。

监视 LTP 测试

要监视在容器内运行的测试,可以使用以下原生 STAF 命令。

docker exec -it <container_id> /bin/bash
STAF LOCAL STAX LIST JOBS
STAF LOCAL STAX LIST JOB <job ID> testcases

备注 :测试案例结果位于 Docker 容器内的 /var/log/staf/ltp 位置。

免责声明

完整的 LTP 测试套件未经过测试,也未包含在本项目中。本项目仅展示了在 IBM Power Systems 服务器上启用 Docker、LTP 和 STAF 的部分。

以下是本项目包含的 LTP 测试案例。

表 1. LTP 测试案例
   
Admin_toolsStress.part2Io_floppyNw_under_ns
CanStress.part3ipcPipes
Cap_boundsSyscallstracingPower_management_tests
CommandsSyscalls-ipcKernel_miscTom_tools
ConnectorsTimersLtp-aiodio.part1makefile
ContainersFs_ext4Ltp-aiodio.part2Pty
ControllersFs_perms_simpleLtp-aiodio.part3quickhit
CpuhotplugFs_readonlyLtp-aiodio.part4Rpc_tests
DiofsxLtp-aio-stress.part1Sched
Dma_thread_diotesthugetlbLtp-aio-stress.part2Scsi_debug.part1
fcntl-locktestshyperthreadingmmsercurebits
fliecaptsimamodulessmack
fsionptlLvm.part2
Fs_bindIo_cdnuma 
Stress.part1mathTirpc_tests 
ltpliteLvm.part1  

示例 XML (ltp.xml) 文件中包含 syscalls、fs、fsx、dio、mm、commands、ipc、sched、pty 和 math 测试案例。我们还修改了该 XML 文件,以包含上述测试案例。编辑 ltp.xml 文件中的 RUNTEST 变量。

例如:

"RUNTEST" default="['lvm.part2','power_management_tests','power_management_tests_exclusive','quickhit','scsi_debug.part1','securebits','smack','stress.part2','stress.part3']"

备注 :在 LTP、STAF、STAX 和 Java 构建版本发生变化时,这些目录也会发生相应变化。如果系统位于私有网络中,您需要添加相关的代理或存储库。

致谢

感谢 Linux 技术中心的 STSM、Power 云和 Docker 架构师 Pradipta K Banerjee,他为本文的发表提供了许多指导和帮助。

相关参考资料

  • LTP
  • STAF
  • ltp.xml 文件

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-10/148035.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6706字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7984855
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...