使用全域設定載入通訊協定

如要瞭解本節內容,請先研究 Tradefed @Option

Tradefed 的一般選項可讓測試類別從 XML 設定或指令列接收額外資訊。這項功能可讓您進一步解決部分額外資訊問題 (如有必要)。

檔案選項範例

範例檔案 @option:

@Option(name = 'config-file')
private File mConfigFile;

上述設定可透過 XML 設定:

<option name="config-file" value="/tmp/file" />

或透過指令:

--config-file /tmp/file

說明

這項功能可讓您將遠端 @Options 的檔案類型解析為本機檔案,方便使用者無縫存取。

如要使用這項功能,請以遠端樣式路徑指定檔案。例如:

--config-file gs://bucket/tmp/file

這個路徑會指向 Google Cloud Storage (GCS) 值區中儲存的檔案。Tradefed 看到遠端路徑後,會嘗試在本機下載檔案,並指派給 @Option。這會導致 mConfigFile 變數現在指向檔案的本機版本,供測試使用。

如果因故無法下載遠端檔案,Tradefed 會擲回 ConfigurationException,導致測試無法執行。我們認為缺少這些檔案是重大失敗,因為部分測試構件也會遺失。

使用查詢參數

您可以使用 ? 在網址中加入查詢參數。例如:gs://bucket/path?unzip=true。鍵/值 unzip=true 會在 IRemoteFileResolver 介面實作中提供。

系統提供兩種內建行為:

  • 解壓縮:如果設為 true,且下載的檔案為 ZIP 檔,系統會自動解壓縮至暫存位置。範例:?unzip=true
  • 選用:預設值為 false。如果設為 true 且解析失敗,系統不會擲回例外狀況,只會不取代檔案。示例: ?optional=true

您也可以透過 --dynamic-download-args key=value 傳遞全域查詢引數,將鍵/值傳遞至叫用中嘗試的所有動態下載作業。

支援的通訊協定

官方支援的通訊協定和對應格式如下:

  • Google Cloud Storage,通訊協定:gs,格式:gs://<bucket name>/path
  • 本機檔案,通訊協定:file,格式:file:/local/path
  • http 連結,通訊協定:http,格式:http://url
  • https 連結,通訊協定:https,格式:https://url

限制

目前動態解析 @Option 僅支援有限數量的通訊協定和下載位置。目前只有主要的 XML Tradefed 設定檔啟用 @Option 的解析度。

如果以套件形式執行,目前的模組 (AndroidTest.xml) 預設不會解析檔案。這是為了避免模組建立某些不明的依附元件。您可以在套件層級使用 --enable-module-dynamic-download 逸出此字元,但 Compatibility Test Suite (CTS)Vendor Test Suite (VTS) 等主要套件不會啟用此字元。

實作新通訊協定

支援的通訊協定在 Tradefed 中實作了 IRemoteFileResolver 介面,該介面定義了通訊協定的簡短標記,會透過 getSupportedProtocol 在檔案路徑中比對。舉例來說,gs 用於 Google Cloud Storage 通訊協定。建議實作的介面是 #resolveRemoteFiles(RemoteFileResolverArgs),這個介面會長期維護。

您可以將實作的通訊協定新增至安全帶 META-INF 服務檔案,正式啟用支援。