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 выполните следующие действия.
Установите пакеты 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 работает с файлами в каталоге HOME, мы рекомендуем создать отдельную учетную запись.
Для входа на удаленный хост OmniLab ATS без пароля требуется пара SSH-ключей. Следующие шаги описывают, как настроить SSH-ключи:
- Для генерации закрытого и открытого ключей запустите
ssh-keygenна хосте OmniLab ATS . - Загрузите и добавьте открытый ключ в файл
~/.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. Результаты тестового запуска.