Приложение Cloud Orchestration позволяет эффективно и масштабируемо управлять экземплярами Cuttlefish, особенно виртуальными устройствами на базе ARM (CHD). OmniLab ATS поддерживает Cloud Orchestration, поэтому вы можете запускать тесты на виртуальных устройствах. Прежде чем начать использовать виртуальные устройства, установите OmniLab ATS, следуя инструкциям в статье OmniLab Android Test Station.
Обзор
Благодаря Cloud Orchestration система OmniLab ATS может делегировать управление экземплярами Cuttlefish специальному сервису Cloud Orchestrator. Этот подход имеет ряд преимуществ по сравнению с существующими локальным и удаленным режимами, сохраняя при этом привычный пользовательский интерфейс:
- Параллельный запуск экземпляров. Позволяет запускать несколько экземпляров Cuttlefish одновременно, что значительно сокращает время, необходимое для начала тестирования.
- Масштабируемость. Подходит для крупномасштабных тестовых сред.
- Изоляция ресурсов. Среда выполнения тестов (рабочий процесс ATS) отделена от среды эмуляции устройств.
Требования
- Хост-компьютер, на котором можно запустить Docker.
- Доступ к образам Docker для оркестрации Cuttlefish
Настройте сервис Cloud Orchestrator
Сервис Cloud Orchestrator управляет жизненным циклом экземпляров Cuttlefish. Сервис можно развернуть в разных средах. Он поддерживает архитектуры x86 и ARM:
- Тот же хост, что и у исполнителя ATS. Запускается в контейнере Docker на том же компьютере.
- Отдельный компьютер. Запускается на локальном сервере, на котором можно запустить Docker.
- Облачный экземпляр. Работает на виртуальной машине в облачной среде, например Google Compute Engine.
Как установить и настроить сервис
Чтобы запустить сервис, следуйте инструкциям в файле Cloud Android Orchestration README.
Авторизация и разрешения
Если сервис Cloud Orchestrator запущен на удаленном компьютере, убедитесь, что у хоста ATS Worker есть необходимые разрешения для доступа к нему через HTTP-запросы. Если HTTP-подключение запрещено, возможно, потребуется настроить переадресацию портов SSH. Подробнее о том, как попробовать облачный оркестратор…
Ожидаемое состояние
После успешного запуска сервис Cloud Orchestrator должен быть доступен по протоколу HTTP. Вы можете проверить его состояние, отправив запрос к API:
- Проверьте доступность сервиса. Конечная точка сервиса должна быть доступна с хоста рабочего процесса OmniLab ATS. Например, при выполнении команды
curl -I http://localhost:8080/v1/zones/local/hostsдолжен быть получен успешный ответ HTTP (HTTP/1.1 200 OKили переадресация302 Foundна/username), подтверждающий, что сервис активен и доступен.
Как настроить OmniLab ATS для Cloud Orchestration
Перед запуском OmniLab ATS убедитесь, что все экземпляры Cuttlefish на хосте OmniLab ATS остановлены. OmniLab ATS автоматически запускает и останавливает виртуальные устройства во время цикла тестирования, а существующие экземпляры Cuttlefish конфликтуют с экземплярами, управляемыми OmniLab ATS. Подробнее о том, как остановить экземпляры Cuttlefish…
Чтобы включить оркестрацию облака в OmniLab ATS, при запуске OmniLab ATS передайте определенные флаги:
mtt start --max_orchestration_virtual_devices N \
--orchestration_service_url=http://HOST:PORT \
--use_host_network \
--force_ats_version 2 \
--force_update--max_orchestration_virtual_devices– задает максимальное количество виртуальных устройств, управляемых Cloud Orchestrator, которые OmniLab ATS может выделить одновременно. По умолчанию используется значение 0.--orchestration_service_url– указывает URL, по которому сервис Cloud Orchestration ожидает запросы, напримерhttp://localhost:8080.--use_host_network– использует сетевое пространство имен хоста для контейнера. Это необходимо для доступа к сервису Cloud Orchestration.--force_ats_version 2– принудительное использование OmniLab ATS 2.0, которое необходимо для облачной оркестрации. Подробнее о переходе на OmniLab ATS 2.0…--force_update– извлекает последнюю сборку контейнера с ATS 2.0 и функциями облачной оркестрации.
Настройте аппаратные характеристики виртуального устройства (необязательно)
По умолчанию каждый экземпляр виртуального устройства, управляемый облаком, имеет четыре ЦП, 8192 МБ (8 ГБ) ОЗУ, обычную SIM-карту и подключенный образ SD-карты. При запуске OmniLab ATS с Cloud Orchestration вы можете переопределить любое из этих значений по умолчанию, передав соответствующий флаг серверной лаборатории в команде mtt start с помощью --extra_docker_args. Каждый флаг независим: передавайте только те флаги, которые хотите изменить, а остальные опускайте, чтобы сохранить их значения по умолчанию.
--android_jit_emulator_cpus– задает количество ядер ЦП для каждого экземпляра виртуального устройства. Если значение не задано или равно 0, по умолчанию используется4.--android_jit_emulator_memory_mb– задает объем памяти в мегабайтах (МБ) для каждого экземпляра виртуального устройства. Если значение не задано или равно 0, по умолчанию используется8192.--android_jit_emulator_modem_simulator_sim_type– задает тип SIM-карты, которую симулятор модема эмулирует для каждого экземпляра виртуального устройства:1для обычной SIM-карты или2для SIM-карты с привилегиями оператора (требуется дляCtsCarrierApiTestCases). Если значение не задано или равно 0, по умолчанию используется1.--android_jit_emulator_use_sdcard– определяет, нужно ли создавать пустой образ SD-карты и прикреплять его к каждому экземпляру виртуального устройства (trueилиfalse). По умолчанию используется значениеtrue. Чтобы отключить создание SD-карты, задайте значениеfalse.
В следующем примере переопределяются все четыре значения по умолчанию:
mtt start --max_orchestration_virtual_devices N \
--orchestration_service_url=http://HOST:PORT \
--use_host_network \
--force_ats_version 2 \
--force_update \
--extra_docker_args '-e LAB_SERVER_OPTS="--android_jit_emulator_cpus=CPUS --android_jit_emulator_memory_mb=MEMORY_MB --android_jit_emulator_modem_simulator_sim_type=SIM_TYPE --android_jit_emulator_use_sdcard=USE_SDCARD"'Как провести тестирование с помощью облачных устройств
В этом разделе описаны шаги по запуску теста на виртуальных устройствах, управляемых облаком.
на некоторых устройствах;
В списке устройств OmniLab ATS показывает виртуальные устройства, управляемые облаком, в виде плейсхолдеров вместо их фактических серийных номеров. Плейсхолдеры имеют формат HOSTNAME:PORT (например, thehostname:6520). Возможные статусы: Доступно или Выделено. Плейсхолдер в состоянии Доступно указывает на то, что виртуальное устройство не запущено и может быть выделено для тестирования.
Рисунок 1. Выбор виртуальных устройств, управляемых из облака.
Как добавить действия на устройстве
Когда на этих устройствах запланировано тестирование, ATS автоматически добавляет необходимые действия устройства для подготовки и управления экземплярами Cuttlefish во время цикла тестирования.
Рисунок 2. Автоматические действия на устройствах.
Как задать тестовые ресурсы
При планировании тестирования необходимо предоставить требуемые ресурсы. В разделе Настройка ресурсов для тестирования убедитесь, что загруженные файлы сопоставлены с правильными названиями ресурсов:
- Сопоставьте пакет инструментов хоста, например
cvd-host_package.tar.gz, с именемcvd_host_package. - Сопоставьте ZIP-файл образа устройства с именем
cvd_device_image.
Рисунок 3. Ресурсы для тестирования сопоставления.
Как посмотреть запуски тестов и журналы
После завершения теста вы можете посмотреть журналы в разделе выходных файлов. Для экземпляров, управляемых Cloud Orchestrator, собираются следующие журналы:
launcher.log: журналы запуска Cuttlefishkernel.log: стандартный журнал ядра Android