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 rose-dev@rosecompiler1.llnl.gov:testsuite/npb-c-parallel.git
在基準測試中,有一個 make.def 檔案,其中包含有關使用哪些編譯器和選項的配置。該配置應該正確,但一些路徑可能需要更改為指向您的 ROSE 版本。
之後,鍵入 "make suite" 來構建整個基準測試套件。或者鍵入 "make mg class=A" 來只構建相關的基準測試。