如要瞭解本節內容,請先研究 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 服務檔案,正式啟用支援。