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 目录。测试代码应位于以其验证的 PlaSA 区域命名的目录中。
如果上述方法均无法解决问题,请随时与 CTF 团队联系。
找到测试代码后,您就可以用它来了解 CL 导致其失败的原因。如果是意外更改,只需更新 CL,直到测试不再失败即可。如果这是有意为之,您可采取以下几种方式继续操作:
- 执行向 PlaSA 的软过渡
- 在所有有效 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 团队联系。