OmniLab ATS поддерживает виртуальные устройства Cuttlefish, которые позволяют проводить тестирование без физических устройств Android. Cuttlefish подходит для тестирования функций, не зависящих от аппаратного обеспечения. Прежде чем начать использовать виртуальные устройства, установите OmniLab ATS, следуя руководству пользователя.
OmniLab ATS поддерживает виртуальные устройства в трех режимах: локальном, удаленном и облачном. В таблице ниже приведено сравнение режимов.
| Локальные виртуальные устройства | Удаленные виртуальные устройства | Cloud Orchestration |
|---|---|---|
| Запускается на хостах рабочих процессов ATS | Выполняется на удаленных хостах, к которым рабочие хосты ATS могут получить доступ по SSH. | Работает на локальных или удаленных хостах, управляемых Cloud Orchestrator. |
| на базе архитектуры x86; | Может быть x86 или ARM в зависимости от архитектуры хоста. | Может быть x86 или ARM в зависимости от архитектуры хоста. |
| Простота настройки | Сложность настройки | Высокая производительность, масштабируемость, поддержка параллельного запуска экземпляров |
Вы можете включить локальный и удаленный режимы виртуального устройства независимо друг от друга. Вы также можете включить Cloud Orchestration – современную замену, которая обеспечивает полную совместимость функций с обоими режимами, а также ключевые преимущества, такие как параллельный запуск экземпляров и улучшенная изоляция ресурсов. Подробнее о каждом режиме:
- Как настроить локальные виртуальные устройства
- Как настроить удаленные виртуальные устройства
- Как настроить виртуальные устройства, управляемые облаком
Как настроить локальные виртуальные устройства
В этом разделе описано, как настроить OmniLab ATS для локальных виртуальных устройств.
Установка зависимостей Cuttlefish
Чтобы убедиться, что необходимые модули ядра загружены, выполните следующую команду:
sudo modprobe -a kvm tun vhost_net vhost_vsockКак запустить OmniLab ATS с локальными виртуальными устройствами
Перед запуском OmniLab ATS убедитесь, что все экземпляры Cuttlefish остановлены. OmniLab ATS автоматически запускает и останавливает виртуальные устройства во время цикла тестирования, а существующие экземпляры Cuttlefish конфликтуют с экземплярами, управляемыми OmniLab ATS. Подробнее о том, как остановить экземпляры Cuttlefish…
Чтобы включить локальные виртуальные устройства, выполните следующую команду:
mtt start --max_local_virtual_devices NN – максимальное количество виртуальных устройств, которые OmniLab ATS может выделить одновременно. Значение по умолчанию – 0.
Если команда не выполняется из-за отсутствия узлов устройств, следуйте инструкциям в сообщении об ошибке, чтобы загрузить модули ядра. Если это не поможет, перезагрузите компьютер.
Как настроить удаленные виртуальные устройства
В этом разделе описано, как настроить OmniLab ATS для удаленных виртуальных устройств.
Установите зависимости Cuttlefish
Чтобы установить зависимости Cuttlefish, выполните следующие действия:
Установите пакеты Debian на удаленном хосте, следуя инструкциям в разделе Cuttlefish > Начало работы.
Чтобы настроить максимальное количество виртуальных устройств на удаленном хосте, выполните следующие действия:
- Измените
/etc/default/cuttlefish-host-resourcesс правами root. - Установите для параметра
num_cvd_accountsмаксимальное количество виртуальных устройств, которое может быть на этом хосте. - Запустите
sudo systemctl restart cuttlefish-host-resources. - Выполните команду
ifconfigи проверьте количество интерфейсовcvd-wtap-*.
- Измените
Как создать аккаунт SSH
Поскольку хост OmniLab ATS подключается к удаленному хосту через SSH, вам необходимо подготовить аккаунт SSH на удаленном хосте. Поскольку OmniLab ATS работает с файлами в домашнем каталоге, мы рекомендуем создать отдельный аккаунт.
Хосту OmniLab ATS требуется пара SSH-ключей для входа на удаленный хост без пароля. Чтобы настроить ключи SSH, выполните следующие действия:
- Чтобы создать закрытый и открытый ключи, запустите
ssh-keygenна хосте OmniLab ATS. - Загрузите и добавьте открытый ключ в файл
~/.ssh/authorized_keysна удаленном хосте.
Если аккаунт SSH отличается от того, который использовался для установки зависимостей Cuttlefish, чтобы разрешить аккаунту SSH запускать Cuttlefish, выполните следующую команду на удаленном хосте:
sudo usermod -aG kvm,cvdnetwork,render $USERКак запустить OmniLab ATS с удаленными виртуальными устройствами
Перед запуском OmniLab ATS убедитесь, что все экземпляры Cuttlefish остановлены. OmniLab ATS автоматически запускает и останавливает виртуальные устройства во время цикла тестирования, а существующие экземпляры Cuttlefish конфликтуют с экземплярами, управляемыми OmniLab ATS. Подробнее о том, как остановить экземпляры Cuttlefish…
Для повышения производительности рекомендуем настроить хост OmniLab ATS и удаленный хост в локальной вычислительной сети.
Чтобы включить удаленные виртуальные устройства, выполните следующую команду на хосте OmniLab ATS:
mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEYUSER – это название аккаунта SSH.
HOST – это IPv4-адрес удаленного хоста.
N – максимальное количество виртуальных устройств, которые OmniLab ATS может выделить одновременно.
KEY – это путь к закрытому SSH-ключу на хосте OmniLab ATS.
Команда проверяет подключение к удаленному хосту перед запуском OmniLab ATS.
Если в консоли показывается предупреждение, например
The specified --remote_virtual_devices and --remote_ssh_key are invalid.
, проверьте настройки SSH.
Чтобы избежать конфликтов ресурсов, хост OmniLab ATS может подключаться не более чем к одному удаленному хосту. Несколько хостов OmniLab ATS не могут одновременно подключаться к одному удаленному хосту.
Как провести тестирование с помощью виртуальных устройств
В этом разделе описано, как провести тестирование на локальных или удаленных виртуальных устройствах.
на некоторых устройствах;
В списке устройств OmniLab ATS виртуальные устройства отображаются как плейсхолдеры, а не как серийные номера. Плейсхолдеры имеют следующий формат: HOSTNAME:local-virtual-device-ID для локальных виртуальных устройств; remote-virtual-ADDRESS-ID для удаленных виртуальных устройств. Статус может быть Доступно или Выделено. Плейсхолдер в состоянии Available (Доступно) указывает на то, что виртуальное устройство не запущено и может быть выделено для тестирования.
Рисунок 1. Как выбрать виртуальные устройства
Как добавить действия на устройстве
Если вы выберете хотя бы одно виртуальное устройство, связанное с ним действие должно добавиться в список автоматически. Действие состоит из необходимых параметров TradeFed и тестовых ресурсов для создания виртуальных устройств.
Рисунок 2. Действия с локальными виртуальными устройствами
Рисунок 3. Действия с удаленными виртуальными устройствами
Как задать тестовые ресурсы
Для виртуальных устройств Cuttlefish требуются три тестовых ресурса: инструменты виртуальной машины, образы и Acloud.
В типичной сборке Cuttlefish (например, aosp_cf_x86_64_only_phone-userdebug на ci.android.com) инструменты виртуальной машины упакованы в cvd-host_package.tar.gz, а образы – в aosp_cf_x86_64_only_phone-img-*.zip. Бинарный файл Acloud создан в OmniLab ATS и совместим со всеми версиями Cuttlefish. URL для скачивания двоичного файла Acloud по умолчанию нужно менять только для отладки.
Рисунок 4. Как тестировать ресурсы для виртуальных устройств
Как посмотреть тестовые запуски
Журналы устройства, в том числе kernel.log, host_log.txt и launcher.log, будут собраны в папке выходных файлов. Чтобы посмотреть их, нажмите Посмотреть выходные файлы.
Рисунок 5. Результаты тестового запуска