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 для удаленных виртуальных устройств. Состояния могут быть либо Available , либо Allocated . Заполнитель в состоянии Available указывает, что виртуальное устройство не запущено и может быть выделено для теста.
Рисунок 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. Результаты тестового прогона