跳至内容

ROSE 编译器框架/测试

来自维基教科书,开放的书籍,为了开放的世界

ROSE 使用Jenkins 来实现持续集成软件开发流程。它利用一系列软件包来测试其正确性、健壮性和性能。

make check 规则

[编辑 | 编辑源代码]

我们利用 make check 规则来进行内部测试。

检查流水线命令的存在状态

[编辑 | 编辑源代码]

在 bash 脚本中,我们可以使用管道 | 如下所示

  • command1 | command2 : 流水线中每个命令的输出都连接到下一个命令的输入

每个命令都在其自己的子 shell 中执行,退出状态:最后一个命令的退出状态

要捕获任何命令的返回码,请使用 ${PIPESTATUS[0]}

例如:使用管道将只返回最后一个命令 'fold'' 的状态。我们添加了一个测试来捕获第一个命令的返回状态

 ../autoPar -c $(srcdir)/$(@:.o=.c) | fold >$(@:.o=.out); test ${PIPESTATUS[0]} = 0

基准测试

[编辑 | 编辑源代码]

ROSE 的 Jenkins 使用的软件包括

  • SPEC CPU 2006 基准测试:目前支持一个子集
  • SPEC OMP 基准测试:目前支持一个子集
  • NAS 并行基准测试:由美国国家航空航天局艾姆斯研究中心开发。C 版本(定制版本)和 OpenMP 版本都已使用
  • Plum Hall C 和 C++ 验证测试套件:目前支持一个子集
  • Jt++ - Java 符合性测试:http://modena.us/

Modena Jt++ 测试套件

[编辑 | 编辑源代码]

1. 克隆 Modena 测试套件存储库

  $ git clone ssh://rose-dev@rose-git/modena

2. Autotools 设置

  $ cd modena
  $ ./build.sh
  + libtoolize --force --copy --ltdl --automake
  + aclocal -I ./acmacros -I ./acmacros/ac-archive -I /usr/share/aclocal
  + autoconf
  + automake -a -c
  configure.ac:4: installing `./install-sh'
  configure.ac:4: installing `./missing'

3. 环境引导

  $ source /nfs/apps/python/latest/setup.sh

4. 构建和测试!

  $ mkdir buildTree
  $ cd buildTree
  $ ../configure \
          --with-sqlalchemy=${HOME}/opt/python/sqlalchemy/0.7.5/lib64/python2.4/site-packages \
          --with-target-java-interpreter=java \
          --with-target-java-compiler=testTranslator \
          --with-target-java-compiler-flags="-ecj:1.6" \
          --with-host-java-compiler-flags="-source 1.6"

使用外部基准测试

[编辑 | 编辑源代码]

我们的设置方式是

  • 在基准测试中,我们将基准测试的构建系统更改为调用已安装的 ROSE 工具(identityTranslator 或您的 RTED 工具)。
  • 在 Jenkins 测试作业中,
    • 构建并安装测试的 ROSE,准备环境变量。
    • 转到具有修改后构建系统的基准测试。构建并运行基准测试。

基本上,测试作业应该模拟最终用户如何使用 ROSE 工具,而不是为每个不同的基准测试调整 ROSE。

NAS 并行基准测试

[编辑 | 编辑源代码]

我们的回归测试中包含 NPB。

要获取基准测试

git clone [email protected]:testsuite/npb-c-parallel.git

在基准测试中,有一个 make.def 文件,其中包含有关使用哪些编译器和选项的配置。该配置应该正确,但一些路径可能需要更改为指向您的 ROSE 版本。

之后,键入 "make suite" 来构建整个基准测试套件。或者键入 "make mg class=A" 来只构建相关的基准测试。

华夏公益教科书