使用全局配置加載協議

為了理解本節,首先研究 Tradefed @Option

Tradefed 中的典型選項可讓測試類別從 XML 配置或命令列接收附加資訊。此功能可讓您採取額外的步驟並在必要時解決其中一些附加資訊。

文件選項範例

範例檔案@選項:

@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 ,從而阻止測試運行。我們認為遺失這些檔案是一個嚴重的失敗,因為一些測試工件也會遺失。

使用查詢參數

可以使用?將查詢參數加入到 URL 中。 。例如, gs://bucket/path?unzip=true 。鍵/值unzip=true將在IRemoteFileResolver 介面實作中可用。

有兩種內建行為可用:

  • unzip:如果設定為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來避免這種情況,但相容性測試套件 (CTS)供應商測試套件 (VTS)等主要套件不會啟用它。

實施新協議

支援的協定在 Tradefed 中有一個IRemoteFileResolver 介面的實現,該介面定義了將透過getSupportedProtocol在檔案路徑中匹配的協定的短標記。例如, gs用於 Google 雲端儲存協定。建議實作的介面是#resolveRemoteFiles(RemoteFileResolverArgs) ,這將是長期維護的介面。

實現的協定可以新增到harness META-INF服務文件中以正式開啟支援。