在 CQ 中测试不稳定性

为了测试 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 的示例:

运行次数

默认情况下,该基础架构使用历史测试时长数据来计算 运行次数。选择运行次数以生成单个相乘的测试 其时长与其他分片的预期时长相近的分片,即 最多 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 构建器。

如果关联的构建已完成,您应该会在某个 passesflakesfailures 步骤下看到类似 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 测试) 软件包和主机测试可执行文件)。乘法测试中的所有测试用例 将相乘。

您无法在一个测试套件中组合单个测试用例。