Boost C++库

……世界上最受推崇和设计精良的C++库项目之一。 Herb SutterAndrei AlexandrescuC++编码规范

运行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. 点击原始按钮。
    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目录。

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

反馈

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

注释

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

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

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

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

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

作为一般准则,如果可以的话,最好以完整模式进行测试。