Виртуальные устройства в 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 см. в разделе «Остановка 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 см. в разделе «Остановка 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 для удалённых виртуальных устройств. Возможные состояния: «Доступно» или «Выделено» . Заполнитель в состоянии «Доступно» указывает, что виртуальное устройство не запущено и может быть выделено для тестирования.

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

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