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

為了理解這個部分,請先研究「交易」 @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 服務 檔案,即可正式啟用支援功能。