測試 CQ 中的不穩定性

為了在 CQ 中測試不穩定,基礎架構可以執行 導致整體建構失敗。這個 當基礎架構判定 受測試的修訂版本影響的測試數量 (依據建構版本 圖表)。

格式

變更作者可以指示基礎架構多次執行特定測試 在修訂訊息中加入 Multiply 頁尾:

Multiply: test_selector

test_selector 可以是測試名稱、測試名稱的子字串或 符合 re2 規則運算式 測試名稱

套件網址會參照 Fuchsia 元件測試:

Multiply: fuchsia-pkg://fuchsia.com/foo_tests#meta/foo_tests.cm

主機測試是以路徑參照:

Multiply: host_x64/obj/src/bar_tests.sh

系統也接受測試名稱的子字串:

Multiply: foo_tests
Multiply: bar_tests

調節係數可合併為一行,並以半形逗號分隔:

Multiply: foo_tests, bar_tests

系統也接受 MULTIPLY 全部大寫。

實際變更的 Multiply 使用範例:

執行作業數

根據預設,基礎架構會使用歷來測試時間長度資料來計算 執行次數系統會選擇執行作業數,產生單一乘數測試 資料分割的持續時間與其他資料分割的預期持續時間相似,向上 最多 2000 次測試速度較慢的測試可減少執行次數,同時速度較快 執行更多測試

有時候,您可能會希望覆寫預設的執行作業次數 (例如, 因為預設值過高,因而造成逾時)。在這種情況下,您可以 明確指定執行作業數例如:

Multiply: foo_tests: 100

限制

驗證

如果 Multiply 子句中有錯字,或 Multiply 選取器有錯字 在任何建構工具上都找不到相符的測試,成功將失敗 測試。

因此,請務必手動驗證 Multiply 是否已生效。 針對 Multiply 生效的每個建構工具, 您在 Gerrit 中所做的變更將加入下列表單:

A builder created multiplier shards. Click the following link for more details:

註解中會包含執行加倍測試的建構連結 (範例)。

如果沒有顯示這類註解,可能是因為語法或註解有誤 測試不會在任何一般 CQ 建構工具中執行。此時,您必須有 將其新增至建構圖表,讓其中一個建構工具執行 在選擇性步驟中,手動選擇執行測試的試用工作 建立工具

如果連結的建構已完成,則其中一個 passesflakesfailures 步驟下方應該會顯示類似 multiplied:<shard name>-<test name> 的步驟。如果 建構尚未完成,您可以按一下 build 步驟底下的連結 名為 <builder name>-subbuild 的頁面,會將您帶往子建構頁面 顯示類似的 multiplied 步驟。由於留言 指定哪些測試已相乘,您可以查看建構頁面來確認 (如果將多項測試相乘)。

例如:

乘以資料分割的螢幕截圖

最多五個相符的測試

單一調節係數最多只能比對五項測試,以防止 避免作者不小心加倍數項測驗, 測試基礎架構

如果您因為符合下列情況的 Multiply 陳述式而失敗工作, 只需在本機或 Gerrit UI 中編輯修訂版本訊息即可 為測試選取器建立更具體的測試選取器接著重試 CQ。

在 CQ 模擬測試結束後變更 Multiply

如果所有嘗試工作均已通過 CQ 模擬測試,且您新增或編輯 Multiply 子句,且並未變更任何程式碼,則在 在模擬測試的 24 小時內,系統不會重新執行建構工具和更新後的 Multiply 子句不會生效。

這是因為 CQ 服務會將修訂訊息更新視為「trivial」和 不會使修補程式集之前的 CQ 嘗試失效。

如要解決這個問題,您可以採取下列任一做法:

  • 使用「選擇試用工作」選單,手動重試部分試用工作,然後稍候片刻 以便送交審核。
  • 或者,進行非功能性的程式碼變更,重試所有嘗試工作 (例如將 新增註解給某些程式碼) 並上傳新的修補程式集,藉此使 嘗試工作結果接著重試 CQ 並在頁尾顯示 Multiply

逾時

相乘測試的預設執行作業數是根據過往持續時間計算得出 進行測試。如果變更會增加乘以測試時間長度 預設執行次數可能過高,導致執行測試的工作執行時間。 而非回報任何結果。

在這種情況下,您必須手動指定 降低的執行次數,例如:

Multiply: foo_tests: 30

沒有任何測試案例調節係數

Multiply 僅支援將頂層套件的乘法 (Fuchsia 測試) 套件和主機測試執行檔)。重複測試中的所有測試案例 套件會乘以 300%

測試套件中的單一測試案例無法相乘。