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

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

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

Локальные виртуальные устройства Удаленные виртуальные устройства Оркестрация облачных сервисов
Запускается на рабочих хостах ATS. Запускается на удалённых хостах, к которым рабочие хосты ATS могут получить доступ через SSH. Работает на локальных или удаленных хостах, управляемых Cloud Orchestrator.
на базе x86 В зависимости от архитектуры хоста, это может быть x86 или ARM. В зависимости от архитектуры хоста, это может быть 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, чтобы разрешить запуск Cuttlefish с этой учетной записи SSH, выполните следующую команду на удаленном хосте :

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