ROSE 编译器框架/测试
外观
ROSE 使用Jenkins 来实现持续集成软件开发流程。它利用一系列软件包来测试其正确性、健壮性和性能。
我们利用 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/
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。
我们的回归测试中包含 NPB。
要获取基准测试
git clone [email protected]:testsuite/npb-c-parallel.git
在基准测试中,有一个 make.def 文件,其中包含有关使用哪些编译器和选项的配置。该配置应该正确,但一些路径可能需要更改为指向您的 ROSE 版本。
之后,键入 "make suite" 来构建整个基准测试套件。或者键入 "make mg class=A" 来只构建相关的基准测试。