Dispositivos virtuales en OmniLab ATS

OmniLab ATS 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.

OmniLab ATS admite dispositivos virtuales en dos modos: local y remoto. En la siguiente tabla, se proporciona una comparación de los dos modos.

Dispositivos virtuales locales Dispositivos virtuales remotos
Se ejecuta en hosts de trabajadores de ATS Se ejecuta en hosts remotos a los que los hosts de trabajadores de ATS pueden acceder a través de SSH.
Basada en x86 Puede ser x86 o ARM, según la arquitectura de los hosts.
Son más fáciles 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:

Cómo configurar dispositivos virtuales locales

En esta sección, se describen los pasos para configurar OmniLab ATS para dispositivos virtuales locales.

Instala las dependencias de Cuttlefish

Ejecuta el siguiente comando para asegurarte de que se carguen los módulos de kernel necesarios:

sudo modprobe -a kvm tun vhost_net vhost_vsock

Inicia OmniLab ATS con dispositivos virtuales locales

Antes de iniciar OmniLab ATS, asegúrate de que todas las instancias de Cuttlefish estén detenidas. OmniLab ATS inicia y detiene automáticamente los dispositivos virtuales durante el ciclo de prueba, y las instancias existentes de Cuttlefish entran en conflicto con las instancias que administra OmniLab ATS. Para obtener detalles sobre cómo detener instancias de Cuttlefish, consulta Cómo detener Cuttlefish.

Para habilitar los dispositivos virtuales locales, ejecuta lo siguiente:

mtt start --max_local_virtual_devices N

N es la cantidad máxima de dispositivos virtuales que la ATS de OmniLab puede asignar de forma simultánea. El valor predeterminado es 0.

Si el comando falla debido a que faltan nodos de dispositivos, sigue los pasos que se indican en el mensaje de error para cargar los módulos del kernel. Si el problema persiste, reinicia la máquina.

Cómo configurar dispositivos virtuales remotos

En esta sección, se describen los pasos para configurar OmniLab ATS para dispositivos virtuales remotos.

Instala las dependencias de Cuttlefish

Para instalar las dependencias de Cuttlefish, sigue estos pasos.

  1. Instala los paquetes de Debian en el host remoto siguiendo los pasos que se indican en Cuttlefish > Get started.

  2. Para configurar la cantidad máxima de dispositivos virtuales en el host remoto, sigue estos pasos:

    1. Edita /etc/default/cuttlefish-host-resources con privilegios de administrador.
    2. Establece num_cvd_accounts en la cantidad máxima de dispositivos virtuales que se permitirá en este host.
    3. Ejecuta sudo systemctl restart cuttlefish-host-resources.
    4. Ejecuta ifconfig y verifica la cantidad de interfaces cvd-wtap-*.

Crea una cuenta de SSH

Debido a que el host de ATS de OmniLab se conecta al host remoto a través de SSH, debes preparar una cuenta de SSH en el host remoto. Debido a que la ATS de OmniLab manipula los archivos del directorio HOME, te recomendamos que crees una cuenta dedicada.

El host de ATS de OmniLab requiere un par de claves SSH para acceder al host remoto sin una contraseña. En los siguientes pasos, se describe cómo configurar las claves SSH:

  1. Para generar una clave privada y una clave pública, ejecuta ssh-keygen en el host de ATS de OmniLab.
  2. 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 usa para instalar dependencias de Cuttlefish, para permitir que la cuenta de SSH inicie Cuttlefish, ejecuta este comando en el host remoto:

sudo usermod -aG kvm,cvdnetwork,render $USER

Cómo iniciar OmniLab ATS con dispositivos virtuales remotos

Antes de iniciar OmniLab ATS, asegúrate de que todas las instancias de Cuttlefish estén detenidas. OmniLab ATS inicia y detiene automáticamente los dispositivos virtuales durante el ciclo de prueba, y las instancias existentes de Cuttlefish entran en conflicto con las instancias que administra OmniLab ATS. Si deseas obtener información detallada para detener instancias de Cuttlefish, consulta Cómo detener Cuttlefish.

Para obtener un mejor rendimiento, recomendamos configurar el host de ATS de OmniLab y el host remoto en una red de área local.

Para habilitar los dispositivos virtuales remotos, ejecuta este comando en el host de ATS de OmniLab:

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 a la clave SSH privada en el host ATS de OmniLab.

El comando prueba la conexión con el host remoto antes de iniciar el ATS de OmniLab. 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 se puede conectar como máximo a 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 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 dispositivos virtuales locales y remote-virtual-ADDRESS-ID para 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.

Selecciona Dispositivos virtuales

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 debería añadirse a la lista automáticamente. La acción consiste en los parámetros de TradeFed y los recursos de prueba necesarios para crear dispositivos virtuales.

Acciones de dispositivos virtuales locales

Figura 2: Acciones del dispositivo para dispositivos virtuales locales

Acciones de dispositivos virtuales remotos

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_phone en ci.android.com), las herramientas de la máquina virtual se empaquetan en cvd-host_package.tar.gz y las imágenes están en aosp_cf_x86_64_phone-img-*.zip. El objeto binario de Acloud está integrado en la ATS de OmniLab y es compatible con todas las versiones de Cuttlefish. La URL de descarga predeterminada del binario de Acloud solo se debe cambiar para depurar.

Recursos de prueba de dispositivos virtuales

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.

Resultados de la ejecución de prueba

Figura 5: Resultados de la ejecución de prueba