El ATS de OmniLab admite dispositivos virtuales Cuttlefish que te permiten ejecutar pruebas sin dispositivos Android físicos. Cuttlefish es adecuado para probar funciones independientes del hardware. Antes de comenzar a usar dispositivos virtuales, sigue la guía del usuario para instalar OmniLab ATS.
El ATS de OmniLab admite dispositivos virtuales en dos modos: local y remoto. En la siguiente tabla, se comparan los dos modos.
Dispositivos virtuales locales | Dispositivos virtuales remotos |
---|---|
Se ejecuta en hosts trabajadores de ATS | Se ejecuta en hosts remotos a los que los hosts de trabajador de ATS pueden acceder a través de SSH. |
Basado en x86 | Puede ser x86 o ARM según la arquitectura de los hosts. |
Más fácil de configurar | Es más complicado de configurar |
Los dispositivos virtuales locales y remotos se pueden habilitar de forma independiente. Para obtener detalles sobre cada modo, consulta lo siguiente:
Configura dispositivos virtuales locales
En esta sección, se describen los pasos para configurar el ATS de OmniLab para dispositivos virtuales locales.
Instala las dependencias de Cuttlefish
Ejecuta el siguiente comando para asegurarte de que se carguen los módulos del kernel necesarios:
sudo modprobe -a kvm tun vhost_net vhost_vsock
Cómo iniciar OmniLab ATS con dispositivos virtuales locales
Antes de iniciar OmniLab ATS, asegúrate de que todas las instancias de Cuttlefish estén detenidas. El ATS de OmniLab inicia y detiene automáticamente los dispositivos virtuales durante el ciclo de pruebas, y las instancias existentes de Cuttlefish entran en conflicto con las instancias administradas por el ATS de OmniLab. Para obtener detalles sobre cómo detener instancias de Cuttlefish, consulta Cómo detener Cuttlefish.
Para habilitar los dispositivos virtuales locales, ejecuta el siguiente comando:
mtt start --max_local_virtual_devices N
N
es la cantidad máxima de dispositivos virtuales que OmniLab ATS puede asignar de forma simultánea. El número predeterminado es 0.
Si el comando falla debido a que faltan nodos de dispositivo, sigue los pasos que se indican en el mensaje de error para cargar los módulos del kernel. Si sigue fallando, reinicia la máquina.
Configura dispositivos virtuales remotos
En esta sección, se describen los pasos para configurar el ATS de OmniLab para dispositivos virtuales remotos.
Instala las dependencias de Cuttlefish
Para instalar las dependencias de Cuttlefish, sigue estos pasos.
Instala los paquetes de Debian en el host remoto siguiendo los pasos que se indican en Cuttlefish > Introducción.
Para configurar la cantidad máxima de dispositivos virtuales en el host remoto, sigue estos pasos:
- Edita
/etc/default/cuttlefish-host-resources
con privilegios de administrador. - Establece
num_cvd_accounts
en la cantidad máxima de dispositivos virtuales que se pueden permitir en este host. - Ejecuta
sudo systemctl restart cuttlefish-host-resources
. - Ejecuta
ifconfig
y verifica la cantidad de interfacescvd-wtap-*
.
- Edita
Crea una cuenta de SSH
Dado que el host de OmniLab ATS se conecta al host remoto a través de SSH, debes preparar una cuenta de SSH en el host remoto. Como el ATS de OmniLab manipula los archivos del directorio HOME, te recomendamos que crees una cuenta exclusiva.
El host de ATS de OmniLab requiere un par de claves SSH para acceder al host remoto sin contraseña. En los siguientes pasos, se describe cómo configurar las claves SSH:
- Para generar una clave privada y una clave pública, ejecuta
ssh-keygen
en el host de ATS de OmniLab. - Sube y agrega la clave pública a
~/.ssh/authorized_keys
en el host remoto.
Si tu cuenta de SSH es diferente de la que se usó para instalar las dependencias de Cuttlefish, ejecuta este comando en el host remoto para permitir que la cuenta de SSH inicie Cuttlefish:
sudo usermod -aG kvm,cvdnetwork,render $USER
Inicia OmniLab ATS con dispositivos virtuales remotos
Antes de iniciar OmniLab ATS, asegúrate de que todas las instancias de Cuttlefish estén detenidas. El ATS de OmniLab inicia y detiene automáticamente los dispositivos virtuales durante el ciclo de pruebas, y las instancias existentes de Cuttlefish entran en conflicto con las instancias administradas por el ATS de OmniLab. Para obtener detalles sobre cómo detener instancias de Cuttlefish, consulta Cómo detener Cuttlefish.
Para obtener un mejor rendimiento, te recomendamos que configures el host de ATS de OmniLab y el host remoto en una red de área local.
Para habilitar dispositivos virtuales remotos, ejecuta este comando en el host de OmniLab ATS:
mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEY
USER
es el nombre de la cuenta de SSH.
HOST
es la dirección IPv4 del host remoto.
N
es la cantidad máxima de dispositivos virtuales que OmniLab ATS puede asignar de forma simultánea.
KEY
es la ruta de acceso a la clave privada SSH en el host de OmniLab ATS.
El comando prueba la conexión al host remoto antes de iniciar OmniLab ATS.
Si se muestra un mensaje de advertencia, como The specified --remote_virtual_devices and --remote_ssh_key are invalid.
, en la consola, debes verificar la configuración de SSH.
Para evitar conflictos de recursos, un host de ATS de OmniLab puede conectarse a un máximo de un host remoto. Varios hosts de ATS de OmniLab no se pueden conectar a un host remoto al mismo tiempo.
Ejecuta una prueba con dispositivos virtuales
En esta sección, se describen los pasos para ejecutar una prueba en dispositivos virtuales locales o remotos.
Elegir dispositivos
En la lista de dispositivos, OmniLab ATS muestra los dispositivos virtuales como marcadores de posición en lugar de sus números de serie reales. Los marcadores de posición se muestran en el formato HOSTNAME:local-virtual-device-ID para los dispositivos virtuales locales y remote-virtual-ADDRESS-ID para los dispositivos virtuales remotos. Los estados son Disponible o Asignado. Un marcador de posición en el estado Disponible indica que el dispositivo virtual no se está ejecutando y se puede asignar para la prueba.
Figura 1: Cómo seleccionar dispositivos virtuales
Cómo agregar acciones del dispositivo
Si seleccionas al menos un dispositivo virtual, la acción del dispositivo asociada se debería agregar a la lista automáticamente. La acción consta de los parámetros de Tradefed y los recursos de prueba necesarios para crear dispositivos virtuales.
Figura 2: Acciones del dispositivo para dispositivos virtuales locales
Figura 3: Acciones del dispositivo para dispositivos virtuales remotos
Establece recursos de prueba
Los dispositivos virtuales de Cuttlefish requieren tres recursos de prueba: las herramientas de la máquina virtual, las imágenes y Acloud.
En una compilación típica de Cuttlefish (por ejemplo, aosp_cf_x86_64_only_phone-userdebug
en ci.android.com), las herramientas de la máquina virtual se empaquetan en cvd-host_package.tar.gz
y las imágenes se encuentran en aosp_cf_x86_64_only_phone-img-*.zip
. El objeto binario de Acloud está integrado en ATS de OmniLab y es compatible con todas las versiones de Cuttlefish. La URL de descarga predeterminada del objeto binario de Acloud solo debe cambiarse con fines de depuración.
Figura 4: Recursos de prueba para dispositivos virtuales
Cómo ver las ejecuciones de prueba
Los registros del dispositivo, incluidos kernel.log
, host_log.txt
y launcher.log
, se recopilan en la carpeta del archivo de salida. Haz clic en Ver archivos de salida para verlos.
Figura 5: Resultados de la ejecución de prueba