Загрузить протоколы с глобальной конфигурацией

Чтобы понять этот раздел, сначала изучите 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 .

Доступны два встроенных поведения:

  • 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 в настоящее время поддерживает только ограниченное количество протоколов и мест для загрузки. Разрешение @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 для официального включения поддержки.