Orquestração na nuvem no OmniLab ATS

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

Visão geral

Com o Cloud Orchestration, o OmniLab ATS delega 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 atuais, além de preservar uma experiência do usuário familiar:

  • Inicialização paralela de instâncias: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 de teste (worker da ATS) do ambiente de emulação de dispositivo.

Pré-requisitos

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

Configurar o serviço do Cloud Orchestrator

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

  • Mesmo host que o worker do ATS:executado em um contêiner do Docker na mesma máquina.
  • Máquina separada:é executada em um servidor local capaz de executar o Docker.
  • Instância de nuvem:executada 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 da orquestração do Android na nuvem para iniciar o serviço.

Autenticação e permissões

Se o serviço do Cloud Orchestrator estiver sendo executado em uma máquina remota, verifique se o host do worker do ATS tem as permissões necessárias para acessar o serviço 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:

  • Pingue o serviço:você precisa conseguir acessar o endpoint do serviço no host de trabalho do OmniLab ATS. Por exemplo, executar curl -I http://localhost:8080/v1/zones/local/hosts precisa retornar uma resposta HTTP bem-sucedida (HTTP/1.1 200 OK ou um 302 Found que redireciona para /username), confirmando que o serviço está ativo e acessível.

Configurar o ATS do OmniLab para o Cloud Orchestration

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

Para ativar a orquestração do Cloud no OmniLab ATS, transmita flags específicas ao iniciar o OmniLab ATS:

mtt start --use_cloud_orchestrator \
  --orchestration_service_url=http://HOST:PORT \
  --max_local_virtual_devices N \
  --use_host_network \
  --force_ats_version 2 \
  --force_update
  • --use_cloud_orchestrator: ativa o recurso do Cloud Orchestration.
  • --orchestration_service_url: especifica o URL em que o serviço Cloud Orchestration 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 Orchestration.
  • --force_ats_version 2: força o uso do OmniLab ATS 2.0, que é necessário para a orquestração do Cloud. Para mais informações, consulte o guia de upgrade do OmniLab ATS 2.0.
  • --force_update: extrai o build de contêiner mais recente com recursos do ATS 2.0 e do Cloud Orchestration.

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 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 para provisionar e gerenciar as instâncias do Cuttlefish durante o ciclo de teste.

Ações automáticas do dispositivo

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

Definir recursos de teste

Ao agendar um teste, você precisa fornecer os recursos necessários. Na seção Definir recursos de teste, mapeie 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 ZIP da imagem do dispositivo para o nome cvd_device_image.

Testar recursos para orquestração na nuvem

Figura 3. Mapeamento de recursos de teste.

Ver execuções de teste e registros

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 iniciador do Cuttlefish
  • kernel.log: registro padrão do kernel do Android