Fuchsia 用于报告性能测试结果的基础架构有一个 为每项指标的名称提供一组签入预期, 性能测试可能会产生怎样的影响该指标也称为 名称许可名单。此项已添加到 https://fxbug.dev/42056406.
如果性能测试生成的指标集不匹配 那么当测试预期文件中列出的值时 运行。这意味着,如果更改测试, 其预期文件也会随之更新 进行比对。
对于 fuchsia.git 中的测试,预期文件位于 src/tests/end_to_end/perf/expected_metric_names/.
所有新的性能测试都需要预期文件, 其中包括所有基于 Python 的性能测试。
预期权益
预期文件旨在帮助您保持指标命名 保持一致。它们应该使您更方便地查看 同时提供一种方式,让所有者通过所有者审核 检查。
预期文件应使测试作者能够更轻松地 为了进行比较 将签入代码库。
预期文件应可让您更轻松地查看 针对指定 CL 生成的指标已发生变化。它们允许 确保 CL 不会被意外移除或 重命名的指标
预期文件可用于检查指标数量 已添加。这很有用,因为添加 大量指标。
预期文件应能够更轻松地确保 测试产生的指标都是确定性的。指标可能是 它也可以动态生成 。这意味着如果没有预期性检查, 测试的指标集可能因此是不确定的。 这种做法是不可取的,因为这会导致数据出现随机缺口 由 CI build 生成的自定义映像。
如何更新预期文件
更新测试预期文件的一种方法是运行测试
本地环境变量
FUCHSIA_EXPECTED_METRIC_NAMES_DEST_DIR
集,并使用如下调用:
:
fx test --e2e -o perf_publish_example_test \
--env FUCHSIA_EXPECTED_METRIC_NAMES_DEST_DIR=$(pwd)/src/tests/end_to_end/perf/expected_metric_names/
设置此环境变量后,测试将写入更新后的 预期文件复制到环境指定的目录中 变量。请注意,这不会保留可选指标名称 预期文件
如果未设置此环境变量,测试将报告 如果测试生成的指标与 预期文件,并输出差异。您可以 根据错误中的差异手动更新预期文件 消息。
如何添加预期文件
如果您要添加新的性能测试,可以添加预期值 创建该文件。
对于使用 fuchsia_component_perf_test
GN 模板的测试,
步骤涉及手动创建占位符预期文件:
在预期文件中创建一个空的占位符版本
src/tests/end_to_end/perf/expected_metric_names/
。在 GN 中添加
expected_metric_names_filepath
参数 测试声明(fuchsia_component_perf_test
GN 模板调用)。使用
FUCHSIA_EXPECTED_METRIC_NAMES_DEST_DIR
在本地运行测试 以生成文件内容。
对于使用 python_perf_test
GN 模板的测试,预期
文件名在 GN 和测试代码中均指定,因此它
可以避免手动创建占位符的不便
文件:
将
expected_metric_names_filename
参数中的名称传递给 Python 测试代码中的publish_fuchsiaperf()
。在 GN 声明中设置
expected_metric_names_filepaths = []
测试(python_perf_test
GN 模板调用)。使用
FUCHSIA_EXPECTED_METRIC_NAMES_DEST_DIR
在本地运行测试 以生成文件。将
expected_metric_names_filepaths
设置为 预期文件。使用
git add src/tests/end_to_end/perf/expected_metric_names/
将预期文件添加到 Git 检出。
如果测试有多个事件,则这些适用于 python_perf_test
的步骤也适用于
预期文件。
您可以先将文件添加到 BUILD.gn
文件中,但
如果该文件不存在,GN build 将失败。
可选指标
预期文件可能包含带有后缀的条目
[optional]
。测试的
输出。这样,指标就可以根据架构
因机器而异对这些指标进行注释,说明为什么
都是选填的(注释行以“#”开头。)
这也使得指标在 生成与没有生产。但是,如果某个指标具有不确定性 通常会被视为应修复的错误。
跳过指标摘要
默认情况下,在使用 Python perf_publish
库时,fuchsiaperf 文件
则是汇总版本
此总结有两点值得强调:
- 我们将每个 fuchsiaperf 条目中的第一个值视为预热跑 。
- 同一测试用例可能有多个条目(例如, 多个进程运行),在这种情况下,我们会将它们合并。
作为后处理步骤执行此操作有以下好处:
- 因此无需在上游(在 C++ perftest 库或其他语言的类似库中)或 下游消费者。
- fuchsiaperf 摘要文件比“原始数据”小得多紫红色 文件,因此更易于管理。
- “原始数据”但您仍然可以让 希望分析原始数据。
但在某些情况下,这可能并不可取:保持初始迭代的 而不是丢弃或允许报告标准差 并显示在图表中
因此,可以通过添加 [no-summarize-metrics]
来关闭摘要功能
添加指标名称预期文件的名称