測試環境

建構系統與持續整合方式緊密結合 (在此處稱為「基礎架構」) 探索、匯總、 並執行測試基本概念是,測試作者指定如何指定 希望在 GN 中執行測試,並將這項資訊從 將系統推送到基礎架構

更具體的問題

  • 建構作業會為每項測試產生中繼資料檔案 執行環境
  • 基礎架構會將測試分成共用相同環境的資料分割。
  • 基礎架構會為每個資料分割排程機器人執行這些測試。
  • 系統會匯總並回報所有資料分割的結果。

環境

測試在 GN 中的 environments 規格可決定 測試執行方式格式如下:

environments = [
  {
    dimensions = {
       <dimension key> = <value>
       ...
    }
    tags = ["<environment tags...>"]
    netboot = <boolean>
  },
  ...
]

詳情請見 guest_integration_tests 查看範例 - 下方則是「維度」的定義和「tags」

預設行為

如果沒有為測試指定環境,則預設行為為 如下:

  1. __is_fuchsia__:測試只會在執行 Fuchsia 的 QEMU 執行個體中執行
  2. __is_linux__:測試僅在 Linux 電腦上執行
  3. __is_mac__:測試僅在 Mac 電腦上執行

(1) 表示加入硬體。測試作者必須明確指定 以便執行測試我們還注意到, 測試需在硬體上執行,測試作者最清楚情況是真的 該硬體為稀少資源

預先定義的環境

其中一個可能會匯入 //build/testing/environments.gni 並使用當中與環境相關的便利變數。適用對象 例如,basic_envs 包含所有可用環境 無需與基礎架構團隊進行特殊諮詢。

尺寸

這裡的dimensions指的是 戰爭 維度,其中 Swarming 是基礎架構所使用的工作配發系統。A 罩杯 是鍵/值組合,用來描述機器人屬性 您必須先鎖定目標

標記

標記是可以附加至環境的任意字串。設定 將其從一般測試管道中移除對應的測試。 為了讓該測試執行,請針對新的建構工具 特定代碼的測試)。標籤用於特殊測試 這些執行個體 需要不同設定使用標記前,請先諮詢 fuchsia-infra-team@google.com&quot;

網路啟動 (Netboot)

Netboot 會指定是否在執行測試前進行網路啟動 (Netboot),而非貼上測試 複製到該環境的資料分割中如果省略這項資訊,系統會將其視為 false。

驗證

test_plaforms 清單位於 //build/testing/platforms.gni 可以測試哪些平台和內容 所有互動維度假設某個環境「符合」 平台項目 (如果先前的 dimensions 是後者的子範圍);說 如果環境與目前的架構相符,就表示有效 test_platforms 項目未指定不同的 cpucurrent_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 執行。