Виртуальные устройства в OmniLab ATS

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 N

N – максимальное количество виртуальных устройств, которые OmniLab ATS может выделить одновременно. Значение по умолчанию – 0.

Если команда не выполняется из-за отсутствия узлов устройств, следуйте инструкциям в сообщении об ошибке, чтобы загрузить модули ядра. Если это не поможет, перезагрузите компьютер.

Как настроить удаленные виртуальные устройства

В этом разделе описано, как настроить OmniLab ATS для удаленных виртуальных устройств.

Установите зависимости Cuttlefish

Чтобы установить зависимости Cuttlefish, выполните следующие действия:

  1. Установите пакеты Debian на удаленном хосте, следуя инструкциям в разделе Cuttlefish > Начало работы.

  2. Чтобы настроить максимальное количество виртуальных устройств на удаленном хосте, выполните следующие действия:

    1. Измените /etc/default/cuttlefish-host-resources с правами root.
    2. Установите для параметра num_cvd_accounts максимальное количество виртуальных устройств, которое может быть на этом хосте.
    3. Запустите sudo systemctl restart cuttlefish-host-resources.
    4. Выполните команду ifconfig и проверьте количество интерфейсов cvd-wtap-*.

Как создать аккаунт SSH

Поскольку хост OmniLab ATS подключается к удаленному хосту через SSH, вам необходимо подготовить аккаунт SSH на удаленном хосте. Поскольку OmniLab ATS работает с файлами в домашнем каталоге, мы рекомендуем создать отдельный аккаунт.

Хосту OmniLab ATS требуется пара SSH-ключей для входа на удаленный хост без пароля. Чтобы настроить ключи SSH, выполните следующие действия:

  1. Чтобы создать закрытый и открытый ключи, запустите ssh-keygen на хосте OmniLab ATS.
  2. Загрузите и добавьте открытый ключ в файл ~/.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 KEY

USER – это название аккаунта 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. Результаты тестового запуска