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

OmniLab ATS поддерживает виртуальные устройства Cuttlefish , которые позволяют выполнять тесты без физических устройств Android. Cuttlefish подходит для тестирования аппаратно-независимых функций. Прежде чем начать использовать виртуальные устройства, следуйте руководству пользователя по установке OmniLab ATS.

OmniLab ATS поддерживает виртуальные устройства в двух режимах: локальном и удаленном. В следующей таблице представлено сравнение двух режимов.

Локальные виртуальные устройства Удаленные виртуальные устройства
Работает на рабочих хостах ATS Запускается на удаленных хостах, к которым рабочие хосты ATS могут получить доступ через SSH.
на базе x86 Может быть x86 или ARM в зависимости от архитектуры хостов.
Легче настроить Более сложная настройка

Локальные и удаленные виртуальные устройства можно включать независимо. Подробную информацию о каждом режиме см.:

Настройка локальных виртуальных устройств

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

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

Выполните следующую команду, чтобы убедиться, что необходимые модули ядра загружены:

sudo modprobe -a kvm tun vhost_net vhost_vsock

Запустите OmniLab ATS с локальными виртуальными устройствами.

Перед запуском OmniLab ATS убедитесь, что все экземпляры Cuttlefish остановлены. OmniLab ATS автоматически запускает и останавливает виртуальные устройства во время цикла тестирования, а существующие экземпляры Cuttlefish конфликтуют с экземплярами, управляемыми OmniLab ATS. Подробную информацию об остановке экземпляров Cuttlefish см. в разделе Stop 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 управляет файлами в каталоге HOME, мы рекомендуем вам создать специальную учетную запись.

Хосту 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 см. в разделе Stop 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 для локальных виртуальных устройств; удаленный-виртуальный-АДРЕС-ИД для удаленных виртуальных устройств. Состояния либо Доступны , либо Выделены . Заполнитель в состоянии «Доступно» указывает, что виртуальное устройство не работает и его можно выделить для теста.

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

Рисунок 1. Выбор виртуальных устройств

Добавить действия с устройством

Если вы выберете хотя бы одно виртуальное устройство, соответствующее действие устройства должно быть добавлено в список автоматически. Действие состоит из необходимых параметров TradeFed и тестовых ресурсов для создания виртуальных устройств.

Действия с локальным виртуальным устройством

Рисунок 2. Действия устройства для локальных виртуальных устройств

Действия с удаленным виртуальным устройством

Рисунок 3. Действия устройства для удаленных виртуальных устройств

Установить тестовые ресурсы

Виртуальным устройствам Cuttlefish требуются три тестовых ресурса: инструменты виртуальной машины, образы и облако . В типичной сборке Cuttlefish (например, aosp_cf_x86_64_phone на ci.android.com ) инструменты виртуальной машины упакованы в cvd-host_package.tar.gz , а образы — в aosp_cf_x86_64_phone-img-*.zip . Бинарный файл Acloud встроен в OmniLab ATS и совместим со всеми версиями Cuttlefish. URL-адрес загрузки двоичного файла Acloud по умолчанию необходимо изменить только в целях отладки.

Ресурсы для тестирования виртуальных устройств

Рисунок 4. Тестовые ресурсы для виртуальных устройств

Посмотреть тестовые запуски

Журналы устройства, включая kernel.log , host_log.txt и launcher.log , собираются в папке выходных файлов. Нажмите «Просмотреть выходные файлы», чтобы просмотреть их.

Результаты тестового запуска

Рисунок 5. Результаты тестового запуска