如何將測試新增至 CTF
開始前,請先詳閱 CTF 測試規定 已開始。最重要的是,測試必須採用 測試領域,再使用本指南。
如果測試包含在 //sdk/ctf/tests:tests 中的群組中,系統會將測試納入 CTF。 將測試新增至這個群組前,必須重新撰寫測試的建構規則才能使用 CTF 版本。然而,雖然這個步驟很快就會淘汰,但這是必要的步驟。
如要在這個群組中新增測試,請在 BUILD.gn 中執行下列步驟
檔案,其中包含測試的 fuchsia_test_component 目標。
1. 匯入 CTF 建構規則
import("//sdk/ctf/build/ctf.gni")
2. 使用 CTF GN 範本
將測試的 fuchsia_package 宣告替換為 ctf_fuchsia_package:
使用前
fuchsia_package("fuchsia-example-tests") {
  testonly = true
  package_name = "fuchsia-example-tests"
  deps = [ ":fuchsia-example-test-component" ]
}
使用後
ctf_fuchsia_package("fuchsia-example-tests") {
  testonly = true
  package_name = "fuchsia-example-tests"
  deps = [ ":fuchsia-example-test-component" ]
}
3. 將測試版本的封存檔新增至建構圖表
ctf_fuchsia_package 會產生 ${target_name}_archive 目標,
測試的 FAR 封存檔這個封存檔會在 CTF 中發布。新增
group("tests") 目標至 BUILD.gn 檔案不存在,然後新增
封存為依附元件:
group("tests") {
  testonly = true
  deps = [
    ":fuchsia-example-tests_archive",
    ...
  ]
}
您已成功將 group("tests") 新增至 BUILD.gn 檔案。你現在
即可將該群組加入 //sdk/ctf/tests:tests。
4. 新增 GN 範本以建立預先建立的 CTF 測試
如要教導 CTF 如何將測試的預先建構套件建構到可執行的目標中,
建立 GN 範本,以便產生與
fuchsia_test_package 用於執行最新版本的測試。例如:
如果測試根元件和測試套件如下所示:
fuchsia_test_component("fuchsia-example-test-root") {
  testonly = true
  manifest = "meta/fuchsia-example-test-root.cml"
  test_type = "ctf"
}
fuchsia_test_package("fuchsia-example-tests-latest") {
  test_components = [ ":fuchsia-example-test-root" ]
  subpackages = [
    ":fuchsia-example-tests", # latest version of the test suite.
    ":fuchsia-example-test-realm-factory",
  ]
  deps = [ ":fuchsia-example-test-helper" ]
}
然後將這個範本新增至 //sdk/ctf/build/generate_ctf_tests.gni
template("generate_fuchsia-example-tests") {
  forward_variables_from(invoker, [ "test_info" ])
  fuchsia_package_with_test(target_name) {
    test_component = "//path/to/test:fuchsia-example-test-root",
    test_component_name = "test-root.cm"
    subpackages = [
      test_info.target_label, # prebuilt version of the test suite.
      "//path/to/test:fuchsia-example-test-realm_factory"
    ]
    deps = [ "//path/to/test:fuchsia-example-test-helper" ]
  }
}
- 為了讓 CTF 比對這個範本與預先建立的測試套件,這個範本
名稱必須為 generate_{package_name},且package_name必須相符 測試原始的ctf_fuchsia_package名稱
- 這個範本子套件是 test_info.target_label,而不是:fuchsia-example-tests,因為先前的檔案會指向預先建構的 而後者會指向從 CIPD 建立的最新版本 來源。
5. 測試變更
如要確認這些步驟是否已正確完成,請執行下列指令:
fx set core.x64 --with //sdk/ctf:ctf_artifacts
fx build
建構作業應會顯示錯誤提示,讓您執行會更新
//sdk/ctf/goldens/package_archives.json.執行下列指令,然後執行
fx build。
在這個階段,如果 GN 範本中定義的 GN 範本 缺少先前的步驟,或是該步驟與預先建構的測試版本不符 就可以開始自訂了如果一切成功,您就能使用以下指令執行測試 指令:
fx test fuchsia-example-test_ctf<N>
由於這是目前版本的預建測試版本,而非
與先前 CTF 版本的某些版本相比,N 是 Fuchsia 平台的
目前仍處於開發階段的 API 級別
6. 提交變更
將變更送審。提交測試後,系統就會自動 。適用對象 如需額外審查,請來信至 fuchsia-ctf-team@google.com。
如何從 CTF 移除測試
如要從日後的 CTF 版本移除測試,請按照下列步驟操作:
將這些變更提交至主要分支版本。所有 API 級別的長期資料 將停止支援對應的最新版 測試就會停止在 CQ 中執行
如果您需要立即從 CQ 移除測試及所有預先建構版本,
您還應遵循 Fuchsia 的變更控製程序
決定 CLerry 從每個相應的
發行分支版本舉例來說,假設您要從 CTF 版本移除測試
如果是 API 級別 20,就必須在 releases/f20 中挑選 CL
測試規定
每項測試都必須符合以下規定,才能被添加至 CTF。
CTF 測試必須使用測試領域工廠模式
「測試領域工廠」模式允許建構版本測試套件的版本 並未依照測試中的元件建立版本。請閱讀 測試領域工廠指南,並視需要重構測試,接著再繼續進行 本指南。
CTF 測試只能仰賴面向合作夥伴的 ABI
CTF 測試僅能使用合作夥伴 SDK 類別中所述的軟體:
因為測試會強制其依附元件保持穩定。這是
不會強制執行預先提交的檢查測試作者通常只需要確認
如需測試套件元件使用的 FIDL 通訊協定,請參閱
partner SDK 類別。
CTF 測試必須以 C、C++ 或 Rust 編寫
在撰寫 CTF 之前,只有這些語言支援這些語言。