Organización de la nube en el ATS de OmniLab

La app de Cloud Orchestration proporciona una forma escalable y de alto rendimiento para administrar instancias de Cuttlefish, en especial para dispositivos virtuales basados en ARM (CHD). El ATS de OmniLab admite la orquestación en la nube, por lo que puedes ejecutar pruebas en dispositivos virtuales. Antes de comenzar a usar dispositivos virtuales, sigue las instrucciones de OmniLab Android Test Station para instalar OmniLab ATS.

Descripción general

Cloud Orchestration permite que OmniLab ATS delegue la administración de instancias de Cuttlefish en un servicio de Cloud Orchestrator dedicado. Este enfoque ofrece varias ventajas en comparación con los modos locales y remotos existentes, a la vez que conserva una experiencia del usuario familiar:

  • Inicio de instancias en paralelo: Permite iniciar varias instancias de Cuttlefish de forma simultánea, lo que reduce significativamente el tiempo de sobrecarga antes de que comiencen las pruebas.
  • Escalabilidad: Adecuado para entornos de pruebas a gran escala.
  • Aislamiento de recursos: Desvincula el entorno de ejecución de pruebas (ATS worker) del entorno de emulación de dispositivos.

Requisitos previos

  • Una máquina anfitrión capaz de ejecutar Docker
  • Acceso a las imágenes de Docker de orquestación de Cuttlefish

Configura el servicio de Cloud Orchestrator

El servicio de Cloud Orchestrator administra el ciclo de vida de las instancias de Cuttlefish. Puedes implementar el servicio en varios entornos, y admite arquitecturas x86 y ARM:

  • Mismo host que el trabajador de ATS: Se ejecuta en un contenedor de Docker en la misma máquina.
  • Máquina separada: Se ejecuta en un servidor local capaz de ejecutar Docker.
  • Instancia en la nube: Se ejecuta en una máquina virtual en un entorno de nube, por ejemplo, Google Compute Engine.

Instala y configura el servicio

Sigue el README de Cloud Android Orchestration para iniciar el servicio.

Autenticación y permisos

Si el servicio de Cloud Orchestrator se ejecuta en una máquina remota, asegúrate de que el host del trabajador de ATS tenga los permisos necesarios para acceder a él a través de solicitudes HTTP. Si no se permite la conexión HTTP, es posible que debas configurar el reenvío de puertos SSH. Para obtener más información, consulta Prueba el orquestador de Cloud.

Estado esperado

Después de que se inicie correctamente el servicio de Cloud Orchestrator, se podrá acceder a él a través de HTTP. Puedes verificar su estado consultando su API:

  • Hacer ping al servicio: Deberías poder acceder al extremo de servicio desde el host del trabajador de OmniLab ATS. Por ejemplo, ejecutar curl -I http://localhost:8080/v1/zones/local/hosts debería devolver una respuesta HTTP exitosa (HTTP/1.1 200 OK o un 302 Found que redireccione a /username), lo que confirma que el servicio está activo y es accesible.

Configura OmniLab ATS para Cloud Orchestration

Antes de iniciar OmniLab ATS, asegúrate de que todas las instancias de Cuttlefish en el host de trabajo de OmniLab ATS 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 Cloud Orchestration en OmniLab ATS, pasa marcas específicas cuando inicies OmniLab ATS:

mtt start --use_cloud_orchestrator \
  --cloud_orchestrator_service_url=http://HOST:PORT \
  --max_local_virtual_devices N \
  --use_host_network
  • --use_cloud_orchestrator: Habilita la función de Cloud Orchestration.
  • --cloud_orchestrator_service_url: Especifica la URL en la que escucha el servicio de Cloud Orchestrator, por ejemplo, http://localhost:8080.
  • --max_local_virtual_devices: Establece la cantidad máxima de dispositivos virtuales que OmniLab ATS puede asignar de forma simultánea. El número predeterminado es 0.
  • --use_host_network: Usa el espacio de nombres de red del host para el contenedor. Esto es necesario para acceder al servicio de Cloud Orchestrator.

Ejecuta una prueba con dispositivos coordinados en la nube

En esta sección, se describen los pasos para ejecutar una prueba en dispositivos virtuales orquestados en la nube.

Dispositivos selectos

En la lista de dispositivos, OmniLab ATS muestra los dispositivos virtuales orquestados en la nube 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:PORT (por ejemplo, thehostname:6520). 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 orquestados por la nube

Figura 1: Seleccionar dispositivos virtuales orquestados en la nube

Cómo agregar acciones del dispositivo

Cuando se programa una prueba en estos dispositivos, ATS agrega automáticamente las acciones del dispositivo necesarias para aprovisionar y administrar las instancias de Cuttlefish durante el ciclo de pruebas.

Acciones automáticas del dispositivo

Figura 2: Acciones automáticas del dispositivo

Configura recursos de prueba

Cuando programes una prueba, debes proporcionar los recursos de prueba necesarios. En la sección Set Test Resources, asegúrate de asignar los archivos subidos a los nombres de recursos correctos:

  • Asigna el paquete de herramientas del host, por ejemplo, cvd-host_package.tar.gz, al nombre cvd_host_package.
  • Asigna el archivo ZIP de la imagen del dispositivo al nombre cvd_device_image.

Recursos de prueba para Cloud Orchestration

Figura 3: Asigna recursos de prueba.

Visualiza ejecuciones de pruebas y registros

Una vez que se complete la prueba, podrás ver los registros en la sección de archivos de salida. Entre los registros específicos recopilados para las instancias administradas por Cloud Orchestrator, se incluyen los siguientes:

  • launcher.log: Registros del selector de Cuttlefish
  • kernel.log: Registro estándar del kernel de Android