为了测试 CQ 中的不稳定情况,基础架构可以多次运行测试, 并使整个构建失败(如果发生一次失败)。这个 那么当基础架构确定存在少量漏洞时 受测试的提交影响的测试数量(根据 build 图表)。
格式
更改创建者可以通过以下方法指示基础架构多次运行特定测试:
在提交消息中添加 Multiply
页脚:
Multiply: test_selector
test_selector
可以是测试名称、测试名称的子字符串或
与以下内容匹配的 re2 正则表达式:
测试名称。
Fuchsia 组件测试由软件包网址引用:
Multiply: fuchsia-pkg://fuchsia.com/foo_tests#meta/foo_tests.cm
主机测试通过路径引用:
Multiply: host_x64/obj/src/bar_tests.sh
系统也接受测试名称的子字符串:
Multiply: foo_tests
Multiply: bar_tests
您可将多重系数合并为一行,并以英文逗号分隔:
Multiply: foo_tests, bar_tests
您也可以使用全部大写的 MULTIPLY
。
在实际更改中使用 Multiply
的示例:
Multiply: driver_development_test
Multiply: ffx_daemon_target_lib_test
Multiply: virtual-keyboard-test
Multiply: text_manager_integration_test: 10
运行次数
默认情况下,该基础架构使用历史测试时长数据来计算 运行次数。选择运行次数以生成单个相乘的测试 其时长与其他分片的预期时长相近的分片,即 最多 2000 次测试运行。运行速度越慢,运行次数就越少,速度也会更快 则会运行更多次
有时需要覆盖默认的运行次数(例如, 因为默认值过高,会导致超时)。在这种情况下,您可以 明确指定运行次数。例如:
Multiply: foo_tests: 100
限制
验证
如果您的 Multiply
子句中有拼写错误,或者您的 Multiply
选择器
都不匹配任何构建器上的测试,将静默失败,无法乘以任何
测试。
因此,请务必手动验证 Multiply
是否已生效。
对于要使 Multiply
生效的每个构建器,添加一条注释,即
以下表单会添加到您在 Gerrit 中的更改中:
A builder created multiplier shards. Click the following link for more details:
注释将包含指向运行所乘测试的 build 的链接 (示例)。
如果没有显示此类注释,则可能是 此测试不会在任何常规 CQ 构建器中运行。在此例中, 将其添加到构建图,以便由其中一个构建器运行;或者 如果在可选服务器中运行测试,请手动选择用于运行测试的 tryjob 构建器。
如果关联的构建已完成,您应该会在某个 passes
、flakes
或 failures
步骤下看到类似 multiplied:<shard
name>-<test name>
的步骤。如果
构建尚未完成,您可以点击 build
步骤下方的链接
名为 <builder name>-subbuild
,这会将您转到子 build 的构建页面
您应该会看到类似的 multiplied
步骤。由于评论内容
指定所乘的测试数量,您可以查看构建页面来确认
(如果您将多个测试相乘)。
例如:
不超过 5 个匹配测试
单个调节系数的匹配测试不能超过五个, 使作者无法意外地将大量测试和 超负荷运转
如果由于与搜索条件匹配的 Multiply
语句而导致 tryjob 失败
测试太多,只需在本地或 Gerrit 界面中修改提交消息,
指定更具体的测试选择器然后重试 CQ。
在 CQ 试运行通过后更改 Multiply
如果所有 tryjobs 都已通过 CQ 试运行,并且您添加或修改了 Multiply
子句前,在未对代码进行任何更改的情况下尝试按 CQ+1 或 CQ+2
24 小时的试运行不会重新运行构建器和更新后的 Multiply
子句。
这是因为 CQ 服务将提交消息更新视为“无关紧要”和 不会使补丁集的过往 CQ 尝试失效。
如需解决此问题,您可以执行以下任一操作:
- 使用选择 tryjobs 菜单手动重试一部分 tryjobs 并等待 通过测试
- 或者,通过更改非功能性代码(例如,添加
注释),并上传新的补丁集,使旧的补丁集失效
tryjob 结果。然后重新尝试显示
Multiply
页脚。
超时
乘法测试的默认运行次数取决于历史时长 测试。如果您的更改延长了所乘测试的时长, 默认运行计数可能过高,导致运行测试的任务有时间限制 而且不报告任何结果
在这种情况下,您应通过手动指定 减少运行次数,例如:
Multiply: foo_tests: 30
无测试用例多重维度
Multiply
仅支持顶级套件相乘(Fuchsia 测试)
软件包和主机测试可执行文件)。乘法测试中的所有测试用例
将相乘。
您无法在一个测试套件中组合单个测试用例。