运行 Boost 回归测试
本地运行回归测试
在您的 Boost 克隆版本上运行回归测试很容易。
要运行库的回归测试,请从以下位置运行 Boost 的 b2 实用程序:<boost-root>/libs/<library>/test目录。要运行单个测试,请指定其名称(在<boost-root>/libs/<library>/test/Jamfile.v2中找到)在命令行中。
请参阅入门指南以获取有关构建或下载bjam以用于您的平台以及浏览您的 Boost 发行版的帮助。
要运行每个库的回归测试,请从b2运行<boost-root>/status目录。
要运行 Boost.Build 的回归测试,请从python test_all.py运行 "<boost-root>/tools/build/v2/test目录。(需要 Python 2.3 ≤ 版本 < 3.0。)
运行 Boost 的自动化回归和报告
这将运行所有 Boost 回归测试并将结果报告回 Boost 社区。
要求
- Python (2.3 ≤ 版本 < 3.0)。
- Git(最新版本)。
- 每个要测试的编译器至少需要 5 GB 的磁盘空间。
分步说明
- 为您要测试的分支创建一个新目录。
- 将 run.py 脚本下载到该目录中
- 在您的浏览器中打开 run.py 脚本。
- 单击Raw按钮。
- 另存为run.py在您刚刚创建的目录中。
-
运行“
python run.py options... [commands]
”,需使用以下三个必需选项,以及您希望使用的任何其他选项- --runner=- 您选择的名称,用于在报告中标识您的结果1, 2。
- --toolsets=- 您要使用的工具集3。
- --tag=- 您要测试的标签(即分支)。目前有意义的标签只有develop和master.
例如
python run.py --runner=Metacomm --toolsets=gcc-4.2.1,msvc-8.0 --tag=develop
注意:如果您位于防火墙/代理服务器之后,一切都应该仍然“正常工作”。在极少数情况下,如果它不起作用,您可以显式指定代理服务器参数,通过--proxy选项,例如
python run.py ... --proxy=http://www.someproxy.com:3128
选项
commands: cleanup, collect-logs, get-source, get-tools, patch, regression, setup, show-revision, test, test-boost-build, test-clean, test-process, test- run, update-source, upload-logs Options: -h, --help show this help message and exit --runner=RUNNER runner ID (e.g. 'Metacomm') --comment=COMMENT an HTML comment file to be inserted in the reports --tag=TAG the tag for the results --toolsets=TOOLSETS comma-separated list of toolsets to test with --libraries=LIBRARIES comma separated list of libraries to test --incremental do incremental run (do not remove previous binaries) --timeout=TIMEOUT specifies the timeout, in minutes, for a single test run/compilation --bjam-options=BJAM_OPTIONS options to pass to the regression test --bjam-toolset=BJAM_TOOLSET bootstrap toolset for 'bjam' executable --pjl-toolset=PJL_TOOLSET bootstrap toolset for 'process_jam_log' executable --platform=PLATFORM --user=USER Boost SVN user ID --local=LOCAL the name of the boost tarball --force-update do an SVN update (if applicable) instead of a clean checkout, even when performing a full run --have-source do neither a tarball download nor an SVN update; used primarily for testing script changes --ftp=FTP FTP URL to upload results to. --proxy=PROXY HTTP proxy server address and port (e.g.'http://www.someproxy.com:3128') --ftp-proxy=FTP_PROXY FTP proxy server (e.g. 'ftpproxy') --dart-server=DART_SERVER the dart server to send results to --debug-level=DEBUG_LEVEL debugging level; controls the amount of debugging output printed --send-bjam-log send full bjam log of the regression run --mail=MAIL email address to send run notification to --smtp-login=SMTP_LOGIN STMP server address/login information, in the following form: <user>:<password>@<host>[:<port>] --skip-tests do not run bjam; used for testing script changes
要测试 develop,请使用“--tag=develop
”,要测试 master,请使用“--tag=master
”。或者替换为您选择的任何 Boost 树。
详细信息
回归运行程序将
- 下载最新的回归脚本。
- 下载指定的测试工具源,包括 Boost.Jam、Boost.Build 和各种回归程序。
- 从 Boost Git 存储库下载最新的版本到子目录boost.
- 构建b2和process_jam_log如果需要。(process_jam_log是一个实用程序,它从 Boost.Build 生成的日志文件中提取测试结果)。
- 运行回归测试,处理并收集结果。
- 将结果上传到公共 FTP 服务器。
持续运行的报告合并过程将合并所有提交的测试运行,并将它们发布在 各个位置。
高级用法
提供有关您的环境的详细信息
一旦您的回归结果显示在 Boost 范围内的报告中,您可以考虑提供更多关于您自己和您的测试环境的信息。此附加信息将显示在与您的运行者 ID 关联的报告页面上。
默认情况下,页面的内容只是一行来自comment.html文件,在您的run.py目录中,指定测试平台。您可以通过简单地更改文件的内容,在线放置更详细的环境描述,例如您的硬件配置、编译器构建和测试计划。此外,如果 Boost 开发人员对您的特定结果集有疑问,请考虑提供您的姓名和电子邮件地址。
增量运行
您可以通过简单地传递一个同名的命令行标志run.py在增量模式下运行
python run.py ... --incremental
修补 Boost 源代码
您可能会偶尔需要对 Boost 代码库进行本地修改,然后再运行测试,而不会干扰回归过程的自动化性质。为了在regression.py:
- 下实现此目的,请将对位于./boost_root子目录中的源代码应用所需修改的操作编入一个名为patch_boost (patch_boost.bat(在 Windows 上)的可执行脚本中。
- 将脚本放置在run.py目录。
驱动程序将检查patch_boost脚本是否存在,如果找到,则在获取 Boost 源代码后执行它。
反馈
请将有关本文档和测试过程本身的所有意见/建议发送到 Boost 测试列表。
注释
[1] 如果您正在使用不同的编译器集交错运行回归(例如,早上使用 Intel,一天结束时使用 GCC),则您需要为每次运行提供不同的运行者 ID,例如your_name-intel和your_name-gcc.
[2] 报告的格式/媒介的限制对您正在测试的编译器数量与可用于您的运行者 ID 的空间量之间施加了直接依赖关系。如果您正在为单个编译器运行回归,请确保选择一个足够短的 ID,该 ID 不会显着干扰报告的布局。您也可以在运行者 ID 中使用空格,以允许报告换行名称以适应。
[3] 如果未提供--toolsets选项,脚本将尝试使用平台的默认工具集(gcc对于大多数基于 Unix 的系统)。
[4] 默认情况下,脚本在所谓的完整模式下运行:在每次run.py调用时,上一次运行留在原地的所有文件(包括成功构建的测试和库的二进制文件)都会被删除,并且一切都从头开始重新构建。相比之下,在增量模式下,已存在的二进制文件保持不变,仅重新构建和重新测试自上次运行以来源文件已更改的测试和库。
增量运行的主要优点是周转时间显着缩短,但不幸的是,它们并不总是产生可靠的结果。某些类型的代码库更改(特别是对 b2 测试子系统的更改)通常需要切换到完整模式运行一个周期,以便生成可信的报告。
作为一般准则,如果可以承受,则最好在完整模式下进行测试。