Boost C++ 库

...世界上最受尊敬和设计精良的 C++ 库项目之一。 Herb SutterAndrei AlexandrescuC++ 编码标准

运行 Boost 回归测试

在本地运行回归测试

在您的 Boost 克隆上运行回归测试很容易。

要运行库的回归测试,请从<boost-root>/libs/<library>/test目录运行 Boost 的 b2 实用程序。要运行单个测试,请在命令行中指定其名称(如<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 的磁盘空间。

分步说明

  1. 为要测试的分支创建一个新目录。
  2. run.py 脚本下载到该目录中
    1. 在浏览器中打开 run.py 脚本。
    2. 点击 **原始** 按钮。
    3. 保存为run.py在您刚刚创建的目录中。
  3. 运行“python run.py options... [commands]” **使用这三个必需选项**,以及您希望使用的任何其他选项

    • --runner=- 您选择在报告中标识结果的名称 12
    • --toolsets=- 您要测试的工具集 3
    • --tag=- 您要测试的标签(即分支)。目前只有以下标签有意义developmaster.

    例如

    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.
  • 构建b2process_jam_log如果需要。(process_jam_log是一个实用程序,它从 Boost.Build 生成的日志文件中提取测试结果)。
  • 运行回归测试,处理和收集结果。
  • 将结果上传到公共 FTP 服务器。

持续运行的报告合并过程将合并所有提交的测试运行并将它们发布在 各个位置

高级使用

提供有关您环境的详细信息

在 Boost 范围内的报告中显示您的回归结果后,您可能需要考虑提供有关您自己和测试环境的更多信息。这些附加信息将在与您的运行程序 ID 关联的页面上的报告中显示。

默认情况下,页面的内容只是一行来自comment.htmlrun.py目录中的文件,指定了测试的平台。您可以通过简单地更改文件的内容来在线发布更详细的环境描述,例如您的硬件配置、编译器版本和测试计划。此外,请考虑提供您的姓名和电子邮件地址,以便 Boost 开发人员能够针对您的特定结果集提出问题。

增量运行

您可以运行run.py增量模式 运行,只需传递一个相同名称的命令行标志即可

python run.py ... --incremental

修补 Boost 源代码

您可能会偶尔需要在运行测试之前对 Boost 代码库进行本地修改,而不会影响回归过程的自动化性质。要在regression.py:

  1. 中实现这一点,请将所需修改应用到位于./boost_root子目录中的源代码进行编码,并将它们命名为patch_boost (patch_boost.bat(在 Windows 上)。
  2. 将脚本放在run.py目录。

驱动程序将检查patch_boost脚本是否存在,如果找到,则在获取 Boost 源代码后执行它。

反馈

请将有关本文档和测试过程本身的所有评论/建议发送到 Boost 测试列表

笔记

[1] 如果您正在交替地使用不同的编译器集运行回归(例如,在早上为 Intel 运行,在晚上为 GCC 运行),则需要为每次运行提供一个不同的运行程序 ID,例如your_name-intelyour_name-gcc.

[2] 报告格式/媒介的限制使您测试的编译器数量与运行程序 ID 可用空间之间存在直接依赖关系。如果您正在为单个编译器运行回归,请确保选择一个足够短的 ID,以免大幅扰乱报告的布局。您也可以在运行程序 ID 中使用空格,以便报告可以将名称换行以适应。

[3] 如果--toolsets选项未提供,脚本将尝试使用平台的默认工具集(gcc对于大多数基于 Unix 的系统)。

[4] 默认情况下,脚本以所谓的完整模式运行:在每次run.py调用时,先前运行中保留的所有文件(包括成功构建的测试和库的二进制文件)都将被删除,并且所有内容都将从头开始重新构建。相比之下,在增量模式下,现有的二进制文件将保持不变,只有自上次运行以来源文件已更改的测试和库才会重新构建和重新测试。

增量运行的主要优点是周转时间明显缩短,但不幸的是,它们并不总是能产生可靠的结果。代码库中某些类型的更改(尤其是对 b2 测试子系统的更改)通常需要切换到完整模式运行一次才能生成可信的报告。

作为一般准则,如果您可以负担得起,最好以完整模式进行测试。