诊断 CTF 测试失败

Fuchsia 平台表面区域 (PlaSA) 定义为 Fuchsia SDK 提供的一组 ABI 和 API。为了确保现有产品和应用继续正常运行,保持后续 Fuchsia 平台版本之间的兼容性至关重要。

针对 Fuchsia (CTF) 的兼容性测试是强制执行此兼容性的方法之一。如需详细了解其工作原理,请参阅 CTF RFC 以及 fuchsia.dev 中有关 CTF 的其他页面。本文档旨在帮助您了解,当 Fuchsia CQ 中的 CTF 测试失败时,应采取哪些措施。

了解您的 CL 对 Fuchsia PlaSA 有何影响

首先,试着去了解 PlaSA 的哪些方面发生了变化。如果您已掌握相关知识,请继续学习下一部分。

CTF 测试针对 Fuchsia 平台的一小部分设计。失败测试的名称和位置应能很好地反映更改的内容。一般(但并非总是)CTF 测试会镜像其在 SDK 目录中的位置。示例如下:

测试位于 ... 正在测试 ...
//sdk/ctf/fidl/fuchsia.diagnostics //sdk/fidl/fuchsia.diagnostics
//sdk/ctf/pkg/memfs //sdk/lib/memfs
//sdk/ctf/tools/package_manager //src/sys/pkg/bin/pm

您可以点击 core.x64-debug-cts 构建器并切换到 Test Results 标签页,找到失败测试的名称。

CTF 测试失败,会导致 CL

如果测试名称没有指明平台界面区域发生了哪些变化,请搜索 CTF 目录。测试代码应位于以其验证的 PlaSA 区域命名的目录中。

如果上述方法均无法解决问题,请随时与 CTF 团队联系。

找到测试代码后,您就可以用它来了解 CL 导致其失败的原因。如果是意外更改,只需更新 CL,直到测试不再失败即可。如果这是有意为之,您可采取以下几种方式继续操作:

  1. 执行向 PlaSA 的软过渡
  2. 在所有有效 CTF 版本(制作中)中修补测试

下面几部分将更详细地介绍这些选项。

解决问题

选项 1:软过渡到 PlaSA

RFC-0002 描述了我们以向后兼容的方式改进 Fuchsia 平台的策略。如果可能的话,修改公共接口需要进行软转换:添加新元素、迁移旧元素的用户,最后可以弃用旧接口。

这是一个包含多个步骤的过程,可能需要数周才能完成。我们正努力实现这一自动化和自助服务,但如果您有任何疑问,请随时与 CTF 团队联系。

1) 添加新的 API 和相关的 CTF 测试

  • API 委员会合作,确保这一新 API 为黄金时间做好准备。
  • 考虑编写新的 CTF 测试,以全面涵盖您的新 API。
    • 这将成为未来的要求,并有助于 Fuchsia Platform 继续高效地发展。

2) 弃用旧版 API

  • 与 SDK 团队合作,确定旧 API 的所有下游客户。
    • 与关联的 SDK 集成商合作,将其迁移到新的 API。
  • 最后,与 CTF 团队合作,“暂停”现有的 CTF 测试。
    • 从 CQ 中的所有 CTF 版本中移除已暂停的测试可能需要数周时间(直到下一个主要的 Fuchsia 平台版本)

3) 移除旧版 API 和相关的 CTF 测试

  • 从 CTF 版本中移除所有涉及旧 API 的 CTF 测试后,您就可以在 TOT 成功删除该 API。

方法 2:在所有有效的 CTF 版本(制作中)中修补测试

如果给定的 CTF 测试测试太多(例如某些内部实现细节),或者某些其他特殊情况要求修改 Fuchsia PlaSA 的频率高于 CTF 发布窗口支持的频率,则需要修改有效 CTF 版本中的 CTF 测试。

如果需要,请与 CTF 团队联系。