診斷 CTF 測試失敗

Fuchsia Platform Surface Area (PlaSA) 的定義是 Fuchsia SDK 公開的 ABI 和 API 組合。請務必維持 Fuchsia Platform 後續版本的相容性,確保現有產品和應用程式能繼續正常運作。

適用於 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 版本 (WIP) 中修補測試

以下各節將詳細說明這些選項。

解決問題

方法 1:執行軟性轉換到 PlaSA

RFC-0002 說明我們如何以回溯相容的方式改進 Fuchsia 平台。對公用介面修改時,請盡可能進行軟性轉換:加入新元素、遷移舊元素的使用者,最後再淘汰舊介面。

這項程序包含多個步驟,可能需要數週才能完成。我們正努力實現這項自動自助服務。如有任何問題,歡迎隨時與 CTF 團隊聯絡。

1) 新增新的 API 和相關的 CTF 測試

  • API 委員會合作,確保這個全新 API 已準備就緒。
  • 建議您編寫新的 CTF 測試來完整涵蓋新的 API。
    • 在未來將會是如此,而且能幫助 Fuchsia Platform 持續有效率地發展。

2) 淘汰舊版 API

  • 與 SDK 團隊合作,找出舊版 API 的所有下游客戶。
    • 與相關的 SDK 整合商合作,將 SDK 遷移至新版 API。
  • 最後,請與 CTF 團隊合作,「暫停」現有的 CTF 測試。
    • 系統可能需要幾週的時間,才能從 CQ 中的所有 CTF 版本中移除已暫停的測試 (直到下一個重要的 Fuchsia Platform 版本推出)

3) 移除舊 API 和相關的 CTF 測試

  • 將所有接觸舊 API 的 CTF 測試從 CTF 版本中移除後,您就可以在 TOT 中成功刪除 API。

選項 2:在所有使用中的 CTF 版本 (WIP) 中修補測試

如果特定 CTF 測試的測試次數過多 (例如內部實作詳細資料),或其他某些特殊情況需要比 CTF 發布期更頻繁地修改 Fuchsia PlaSA,則就需要修改使用中 CTF 版本中的 CTF 測試。

如需這項資訊,請與 CTF 團隊聯絡。