如何將測試新增至 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 之前,只有這些語言支援這些語言。