建構系統與持續整合方式緊密結合 (在此處稱為「基礎架構」) 探索、匯總、 並執行測試基本概念是,測試作者指定如何指定 希望在 GN 中執行測試,並將這項資訊從 將系統推送到基礎架構
更具體的問題
- 建構作業會為每項測試產生中繼資料檔案 執行環境
- 基礎架構會將測試分成共用相同環境的資料分割。
- 基礎架構會為每個資料分割排程機器人執行這些測試。
- 系統會匯總並回報所有資料分割的結果。
環境
測試在 GN 中的 environments
規格可決定
測試執行方式格式如下:
environments = [
{
dimensions = {
<dimension key> = <value>
...
}
tags = ["<environment tags...>"]
netboot = <boolean>
},
...
]
詳情請見 guest_integration_tests 查看範例 - 下方則是「維度」的定義和「tags」
預設行為
如果沒有為測試指定環境,則預設行為為 如下:
__is_fuchsia__
:測試只會在執行 Fuchsia 的 QEMU 執行個體中執行__is_linux__
:測試僅在 Linux 電腦上執行__is_mac__
:測試僅在 Mac 電腦上執行
(1) 表示加入硬體。測試作者必須明確指定 以便執行測試我們還注意到, 測試需在硬體上執行,測試作者最清楚情況是真的 該硬體為稀少資源
預先定義的環境
其中一個可能會匯入
//build/testing/environments.gni
並使用當中與環境相關的便利變數。適用對象
例如,basic_envs
包含所有可用環境
無需與基礎架構團隊進行特殊諮詢。
尺寸
這裡的dimensions
指的是
戰爭
維度,其中 Swarming 是基礎架構所使用的工作配發系統。A 罩杯
是鍵/值組合,用來描述機器人屬性
您必須先鎖定目標
標記
標記是可以附加至環境的任意字串。設定 將其從一般測試管道中移除對應的測試。 為了讓該測試執行,請針對新的建構工具 特定代碼的測試)。標籤用於特殊測試 這些執行個體 需要不同設定使用標記前,請先諮詢 fuchsia-infra-team@google.com"
網路啟動 (Netboot)
Netboot 會指定是否在執行測試前進行網路啟動 (Netboot),而非貼上測試 複製到該環境的資料分割中如果省略這項資訊,系統會將其視為 false。
驗證
test_plaforms
清單位於
//build/testing/platforms.gni
可以測試哪些平台和內容
所有互動維度假設某個環境「符合」
平台項目 (如果先前的 dimensions
是後者的子範圍);說
如果環境與目前的架構相符,就表示有效
test_platforms
項目未指定不同的 cpu
值
current_cpu
。
環境驗證會在 gn gen
次時進行,加總以下結果:
每個環境對某些架構都必須有效。
每項測試都必須具備適用於指定架構的環境。
範例
假設平台.gni 包含
test_platforms = [
{ # P1
device_type = "QEMU"
cpu = "x64"
},
{ # P2
device_type = "QEMU"
cpu = "arm64"
},
{ # P3
device_type = "Intel NUC Kit NUC7i5DNHE"
cpu = "x64"
},
]
並思考
environments = [
{ # E1
dimensions = {
device_type = "Intel NUC Kit NUC7i5DNHE"
}
},
{ # E2
dimensions = {
device_type = "QEMU"
}
},
]
當 current_cpu
為 x64 時,E1 和 E2 皆有效,且會與 P1 和 P3 進行比對
:測試預計在 NUC 和 QEMU 執行。時間
current_cpu
為 arm64,E1 無效,但由於 E2 有效且相符,因此會忽略
P2:測試已排定單獨以 QEMU 執行。