首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

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                内核和相关特性的功能、回归和压力测试。
DockerDocker 是一个基于 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 镜像:
  • 通过运行以下命令来创建该容器:
    docker run -i -t --privileged --name=ltptest --hostname=ltptest ppc64le/ubuntu /bin/bash




  • 下载 LTP 测试案例并复制到该容器。
    在主机上完成以下步骤,以便下载并构建 LTP 测试桶,然后将 LTP 测试案例复制到                    Docker 容器:
    • 从                             将最新的稳定 LTP 测试套件下载到主机。本例中下载了 ltp-full-20160920。
    • 运行以下命令来解压 tar.gz 或 .bz2 ltp 包。运行该命令后,可以在 ltp-full-20160920 中的                                INSTALL 文件中看到安装过程的更多信息。
      tar jxvf ltp-full-20120104.tar.bz2 or tar zxvf ltp-full-20120104.tar.gz




    • 运行以下命令,以便更改到 LTP 目录:
      cd ltp-full-20160920




    • 运行以下命令来检查配置选项:
      ./configure --help




    • 运行以下命令,以便在 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




    • 将 LTP 测试案例复制到该容器。
      测试案例在主机中的位置:/root/ltp-full-20160920                                
      cd /root/ltp-full-20160920
      docker cp . ltptest:/usr/local/ltp




  • 要下载、配置并在容器内启动 STAF,请完成以下步骤:
    • 访问  链接,分别从                                staf stax 目录下载 STAF                            和 STAX 文件。
      例如,所需的文件是 STAF3425-setup-linux-ppc64le.bin 和                            STAXV3517。
    • 运行以下命令来解压 STAX:
      tar -xvf STAXV3517.tar




    • 运行以下命令,将 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




    • 运行以下命令来安装 STAF:
      apt-get install -y unzip (pre-req to help STAF install) ./root/STAF3425-setup-linux-ppc64le.bin -i silent -DACCEPT_LICENSE=1




    • 运行以下命令,以便在 /usr/local/staf/services 下创建一个目录:
      mkdir -p /usr/local/staf/ services




    • 运行以下命令,以便将解压的 stax 复制到上面的 services 目录:
      cp -r ./stax /usr/local/staf/services/




    • 将以下行添加到 /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




    • 删除所有旧 Java 版本(如果有)。
    • 运行以下命令来安装开源 Java:
      apt-get install -y default-jre

      apt-get install -y openjdk-8-jre




    • 将以下行添加到 /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/binPATH
      fi
      string=`echo "$in_string1" | grep "/usr/local/staf/tools"`
      if [ ! $? = 0 ]; then
         PATH=/usr/local/staf/toolsPATH
      fi
      string=`echo "$in_string1" | grep $java_path`
      if [ ! $? = 0 ]; then
         PATH=$java_pathPATH
      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.jarCLASSPATH
      fi
      string=`echo "$in_string1" | grep "/usr/local/staf/services/STAX.jar"`
      if [ ! $? = 0 ]; then
         CLASSPATH=/usr/local/staf/services/STAX.jarCLASSPATH
      fi
      string=`echo "$in_string1" | grep "/usr/local/staf/services/STAFEvent.jar"`
      if [ ! $? = 0 ]; then
         CLASSPATH=/usr/local/staf/services/STAFEvent.jarCLASSPATH
      fi
      string=`echo "$in_string1" | grep "/usr/local/staf/services/STAXMon.jar"`
      if [ ! $? = 0 ]; then
         CLASSPATH=/usr/local/staf/services/STAXMon.jarCLASSPATH
      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/libLD_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




    • 退出容器并再次登录。
  • 下载示例 XML                        文件并将其复制到容器所在位置:/usr/local/staf/xml/ltp.xml。可以从                        sourceforge.net 网站或 github 存储库下载 ltp.xml 文件。
  • 使用 STAF 在容器内启动 LTP 测试:
    STAF local STAX execute file /usr/local/staf/xml/ltp.xml JOBNAME ltpstaf




  • 运行以下命令,以便从主机提交 Docker 镜像:
    docker commit <container ID> <repo name>




返回列表