Чтобы понять этот раздел, сначала изучите 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 , которое предотвратит выполнение теста. Мы считаем отсутствие этих файлов критическим сбоем, поскольку некоторые тестовые артефакты также будут отсутствовать.
Использование параметров запроса
Добавление параметров запроса к URL-адресу возможно с помощью ? . Например, 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 Tradefed.
При работе в виде пакета текущие модули ( 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 , чтобы официально включить поддержку.