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, выполните следующие действия.
Установите пакеты 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, чтобы разрешить учетной записи 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. Результаты тестового прогона