為了理解這個部分,請先研究「交易」 @Option。
Tradefed 中的一般選項可讓測試類別從 XML 設定檔或指令列接收其他資訊。這項功能 ,並解決部分額外資訊 無從得知
檔案選項範例
範例檔案 @option:
@Option(name = 'config-file')
private File mConfigFile;
您可以透過 XML 設定設定上述項目:
<option name="config-file" value="/tmp/file" />
或是使用指令來新增
--config-file /tmp/file
說明
這項功能可讓您解析遠端為 以便從使用者的角度順暢存取本機檔案
這個檔案必須利用遠端樣式路徑指定,才能有效執行。例如:
--config-file gs://bucket/tmp/file
這個路徑指向某個 Google Cloud Storage (GCS) 值區中的檔案
儲存。發現遠端路徑時,將嘗試下載檔案
並指派給 @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 的動態解析度目前僅支援少數通訊協定和下載位置。@Option 目前的解決方案是: 只會針對主要 XML 交易設定啟用。
如果以套件的形式執行,目前的模組 (AndroidTest.xml
) 無法解析
檔案。
這是為了防止模組建立部分不明的依附元件。這個
也可以在套件層級使用 --enable-module-dynamic-download
逸出
但主要套件 (例如 Compatibility Test Suite)
(CTS) 和供應商測試套件
(VTS) 不會啟用該功能。
實作新的通訊協定
支援的通訊協定在 Tradefed 中實作 IRemoteFileResolver 介面,定義通訊協定的短標記,並透過 getSupportedProtocol
在檔案路徑中比對。例如,gs
是用於 Google Cloud Storage 通訊協定。建議導入的介面為
#resolveRemoteFiles(RemoteFileResolverArgs)
,是長期的
持續追蹤的介面
實作的通訊協定可新增至控管工具 META-INF 服務 檔案,即可正式啟用支援功能。