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 do 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:
- Faça ping no serviço:é possível acessar o endpoint do serviço no host de trabalho do OmniLab ATS. Por exemplo, executar
curl -I http://localhost:8080/v1/zones/local/hostsprecisa retornar uma resposta HTTP bem-sucedida (HTTP/1.1 200 OKou um302 Foundque 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 --max_orchestration_virtual_devices N \
--orchestration_service_url=http://HOST:PORT \
--use_host_network \
--force_ats_version 2 \
--force_update--max_orchestration_virtual_devices: define o número máximo de dispositivos virtuais gerenciados pelo Cloud Orchestrator que o OmniLab ATS pode alocar simultaneamente. O número padrão é 0.--orchestration_service_url: especifica o URL em que o serviço Cloud Orchestration está escutando, por exemplo,http://localhost:8080.--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.
Configurar especificações de hardware do dispositivo virtual (opcional)
Por padrão, cada instância de dispositivo virtual orquestrada na nuvem é provisionada com quatro CPUs, 8.192 MB (8 GB) de RAM, um SIM comum e uma imagem de cartão SD anexada. Ao iniciar o OmniLab ATS com a orquestração do Cloud, é possível
substituir qualquer um desses padrões transmitindo a flag do servidor de laboratório correspondente no
comando mtt start usando --extra_docker_args. Cada flag é independente: transmita apenas as flags que você quer mudar e omita o restante para manter os valores padrão.
--android_jit_emulator_cpus: define o número de núcleos de CPU para cada instância de dispositivo virtual. Se não for definido ou for 0, o padrão será4.--android_jit_emulator_memory_mb: define a memória em megabytes (MB) para cada instância de dispositivo virtual. Se não for definido ou for 0, o padrão será8192.--android_jit_emulator_modem_simulator_sim_type: define o tipo de chip que o simulador de modem emula para cada instância de dispositivo virtual:1para um chip comum ou2para um chip com privilégios de operadora (exigido porCtsCarrierApiTestCases). Se não for definido ou for 0, o padrão será1.--android_jit_emulator_use_sdcard: define se uma imagem de cartão SD em branco será criada e anexada a cada instância de dispositivo virtual (trueoufalse). O padrão étrue. Defina comofalsepara desativar a criação de cartão SD.
O exemplo a seguir substitui todos os quatro padrões:
mtt start --max_orchestration_virtual_devices N \
--orchestration_service_url=http://HOST:PORT \
--use_host_network \
--force_ats_version 2 \
--force_update \
--extra_docker_args '-e LAB_SERVER_OPTS="--android_jit_emulator_cpus=CPUS --android_jit_emulator_memory_mb=MEMORY_MB --android_jit_emulator_modem_simulator_sim_type=SIM_TYPE --android_jit_emulator_use_sdcard=USE_SDCARD"'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.
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.
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 nomecvd_host_package. - Mapeie o ZIP da imagem do dispositivo para o nome
cvd_device_image.
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 Cuttlefishkernel.log: registro padrão do kernel do Android