Boost C++ 库

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

运行 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 的磁盘空间。

分步说明

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

    • --runner=- 您选择的名称,用于在报告中标识您的结果1, 2
    • --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.html文件,在您的run.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 不会显着干扰报告的布局。您也可以在运行者 ID 中使用空格,以允许报告换行名称以适应。

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

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

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

作为一般准则,如果可以承受,则最好在完整模式下进行测试。