Orquestração na nuvem no OmniLab ATS

O app Cloud Orchestration oferece uma maneira escalonável e de alta performance para gerenciar instâncias do Cuttlefish, principalmente para dispositivos virtuais baseados em ARM (CHD). O OmniLab ATS é compatível com o Cloud Orchestration para que você possa executar testes em dispositivos virtuais. Antes de começar a usar dispositivos virtuais, siga as instruções da OmniLab Android Test Station para instalar o OmniLab ATS.

Visão geral

O Cloud Orchestration permite que o OmniLab ATS delegue o gerenciamento de instâncias do Cuttlefish a um serviço dedicado do Cloud Orchestrator. Essa abordagem oferece várias vantagens em relação aos modos local e remoto, preservando uma experiência do usuário familiar:

  • Inicialização de instâncias paralelas:permite iniciar várias instâncias do Cuttlefish simultaneamente, reduzindo significativamente o tempo de sobrecarga antes do início dos testes.
  • Escalonabilidade:adequado para ambientes de teste em grande escala.
  • Isolamento de recursos:desvincula o ambiente de execução do teste (trabalhador do ATS) do ambiente de emulação de dispositivos.

Pré-requisitos

  • Uma máquina host capaz de executar o Docker
  • Acesso às imagens do Docker de orquestração do Cuttlefish

Configurar o serviço do Cloud Orchestrator

O serviço do Cloud Orchestrator gerencia o ciclo de vida das instâncias do Cuttlefish. É possível implantar o serviço em vários ambientes, e ele oferece suporte às arquiteturas x86 e ARM:

  • Mesmo host que o trabalhador do ATS:é executado em um contêiner do Docker na mesma máquina
  • Máquina separada:é executado em um servidor local capaz de executar o Docker
  • Instância de nuvem:é executado em uma máquina virtual em um ambiente de nuvem, por exemplo, o Google Compute Engine

Instalar e configurar o serviço

Siga o README do Cloud Android Orchestration para iniciar o serviço.

Autenticação e permissões

Se o serviço do Cloud Orchestrator estiver em execução em uma máquina remota, verifique se o host do worker do ATS tem as permissões necessárias para acessá-lo por solicitações HTTP. Se a conexão HTTP não for permitida, talvez seja necessário configurar o encaminhamento de porta SSH. Para mais detalhes, consulte Testar o orquestrador de nuvem.

Estado esperado

Depois que o serviço do Cloud Orchestrator for iniciado, ele poderá ser acessado usando HTTP. Para verificar o estado, consulte a API dele:

  • Ping no serviço:é possível acessar o endpoint do serviço no host do trabalhador do OmniLab ATS. Por exemplo, executar curl -I http://localhost:8080/v1/zones/local/hosts retorna uma resposta HTTP bem-sucedida (HTTP/1.1 200 OK ou um redirecionamento 302 Found para /username), confirmando que o serviço está ativo e acessível.

Configurar o OmniLab ATS para o Cloud Orchestration

Antes de iniciar o OmniLab ATS, verifique se todas as instâncias do Cuttlefish no host do trabalhador do OmniLab ATS estão interrompidas. O OmniLab ATS inicia e interrompe automaticamente os dispositivos virtuais durante o ciclo de testes, e as instâncias do Cuttlefish atuais entram em conflito com as instâncias gerenciadas pelo OmniLab ATS. Para mais detalhes sobre como interromper instâncias do Cuttlefish, consulte Interromper o Cuttlefish.

Para ativar o Cloud Orchestration no OmniLab ATS, transmita flags específicas ao iniciar o 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: ativa o recurso do Cloud Orchestration.
  • --cloud_orchestrator_service_url: especifica o URL em que o serviço do Cloud Orchestrator está escutando, por exemplo, http://localhost:8080.
  • --max_local_virtual_devices: define o número máximo de dispositivos virtuais que o OmniLab ATS pode alocar simultaneamente. O número padrão é 0.
  • --use_host_network: usa o namespace de rede do host para o contêiner. Isso é necessário para acessar o serviço do Cloud Orchestrator.

Executar um teste com dispositivos orquestrados na nuvem

Esta seção descreve as etapas para executar um teste em dispositivos virtuais orquestrados na nuvem.

Dispositivos selecionados

Na lista de dispositivos, o OmniLab ATS mostra dispositivos virtuais orquestrados na nuvem como marcadores de posição em vez dos números de série reais. Os marcadores de posição são mostrados no formato de HOSTNAME:PORT (por exemplo, thehostname:6520). Os estados são Disponível ou Alocado. Um marcador de posição no estado Disponível indica que o dispositivo virtual não está em execução e pode ser alocado para o teste.

Selecione "Dispositivos orquestrados pela nuvem"

Figura 1. Selecionar dispositivos virtuais orquestrados na nuvem.

Adicionar ações do dispositivo

Quando um teste é programado nesses dispositivos, o ATS adiciona automaticamente as ações necessárias do dispositivo para provisionar e gerenciar as instâncias do Cuttlefish durante o ciclo de testes.

Ações automáticas do dispositivo

Figura 2. Ações automáticas do dispositivo.

Definir recursos de teste

Ao programar um teste, é necessário fornecer os recursos de teste necessários. Na seção Definir recursos de teste, verifique se você mapeou os arquivos enviados para os nomes de recursos corretos:

  • Mapeie o pacote de ferramentas do host, por exemplo, cvd-host_package.tar.gz, para o nome cvd_host_package.
  • Mapeie o arquivo ZIP da imagem do dispositivo para o nome cvd_device_image.

Testar recursos para a orquestração do Cloud

Figura 3. Mapeamento de recursos de teste.

Ver execuções e registros de teste

Depois que o teste for concluído, você poderá conferir os registros na seção de arquivos de saída. Os registros específicos coletados para instâncias gerenciadas pelo Cloud Orchestrator incluem:

  • launcher.log: registros do inicializador do Cuttlefish
  • kernel.log: registro padrão do kernel do Android