Dispositivos virtuais na Android Test Station

A Android Test Station oferece suporte a dispositivos virtuais Cuttlefish, que permitem executar testes sem dispositivos físicos Android. O Cuttlefish é adequado para testar funções independentes de hardware. Antes de começar a usar dispositivos virtuais, siga o guia do usuário para instalar a Android Test Station.

O ATS oferece suporte a dispositivos virtuais em dois modos: local e remoto. A tabela a seguir fornece uma comparação entre os dois modos.

Dispositivos virtuais locais Dispositivos virtuais remotos
Executado em hosts de worker do ATS Executada em hosts remotos que os hosts de worker do ATS podem acessar via SSH
baseado em x86 Pode ser x86 ou ARM, dependendo da arquitetura dos hosts.
Mais fácil de configurar Mais complicado de configurar

Os dispositivos virtuais locais e remotos podem ser ativados de forma independente. Para detalhes sobre cada modo, consulte:

Configurar dispositivos virtuais locais

Esta seção descreve as etapas para configurar o ATS para dispositivos virtuais locais.

Instalar dependências do Cuttlefish

Execute o comando abaixo para garantir que os módulos necessários do kernel sejam carregados:

sudo modprobe -a kvm tun vhost_net vhost_vsock

Iniciar a Android Test Station com dispositivos virtuais locais

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

Para ativar dispositivos virtuais locais, execute:

mtt start --max_local_virtual_devices N

N é o número máximo de dispositivos virtuais que o ATS pode alocar simultaneamente. O número padrão é 0.

Se o comando falhar devido à ausência de nós do dispositivo, siga as etapas na mensagem de erro para carregar os módulos do kernel. Se continuar falhando, reinicie a máquina.

Configurar dispositivos virtuais remotos

Esta seção descreve as etapas para configurar o ATS para dispositivos virtuais remotos.

Instalar dependências do Cuttlefish

Para instalar as dependências do Cuttlefish, siga estas etapas.

  1. Instale os pacotes Debian no host remoto seguindo as etapas em Cuttlefish > Começar.

  2. Configure o número máximo de dispositivos virtuais no host remoto seguindo estas etapas:

    1. Edite /etc/default/cuttlefish-host-resources com privilégio raiz.
    2. Defina num_cvd_accounts como o número máximo de dispositivos virtuais a permitir neste host.
    3. Execute sudo systemctl restart cuttlefish-host-resources.
    4. Execute ifconfig e verifique o número de interfaces cvd-wtap-*.

Criar uma conta SSH

Como o host do ATS se conecta ao host remoto por SSH, você precisa preparar uma conta SSH no host remoto. Como o ATS manipula os arquivos no diretório HOME, recomendamos que você crie uma conta dedicada.

O host do ATS requer um par de chaves SSH para fazer login no host remoto sem uma senha. As etapas a seguir descrevem como configurar as chaves SSH:

  1. Para gerar uma chave privada e uma pública, execute ssh-keygen no host do ATS.
  2. Faça upload e anexe a chave pública a ~/.ssh/authorized_keys no host remoto.

Se sua conta SSH for diferente da usada para instalar as dependências do Cuttlefish, execute este comando no host remoto para permitir que ela inicie o Cuttlefish:

sudo usermod -aG kvm,cvdnetwork,render $USER

Iniciar o ATS com dispositivos virtuais remotos

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

Para melhorar o desempenho, recomendamos configurar o host ATS e o host remoto em uma rede local.

Para ativar dispositivos virtuais remotos, execute este comando no host do ATS:

mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEY

USER é o nome da conta SSH.

HOST é o endereço IPv4 do host remoto.

N é o número máximo de dispositivos virtuais que o ATS pode alocar simultaneamente.

KEY é o caminho para a chave SSH privada no host do ATS.

O comando testa a conexão com o host remoto antes de iniciar o ATS. Se uma mensagem de aviso como The specified --remote_virtual_devices and --remote_ssh_key are invalid. for exibida no console, verifique a configuração do SSH.

Para evitar conflitos de recursos, um host ATS pode se conectar a, no máximo, um host remoto. Vários hosts ATS não podem se conectar a um host remoto ao mesmo tempo.

Executar um teste com dispositivos virtuais

Esta seção descreve as etapas para executar um teste em dispositivos virtuais locais ou remotos.

Selecione os dispositivos

Na lista de dispositivos, o ATS mostra dispositivos virtuais como marcadores de posição em vez dos números de série reais. Os marcadores são mostrados no formato de HOSTNAME:local-virtual-device-ID para dispositivos virtuais locais e remote-virtual-ADDRESS-ID para dispositivos virtuais remotos. Os estados são Available ou Alallocate. Um marcador no estado Available indica que o dispositivo virtual não está em execução e pode ser alocado para o teste.

Selecionar dispositivos virtuais

Figura 1. Como selecionar dispositivos virtuais

Adicionar ações do dispositivo

Se você selecionar pelo menos um dispositivo virtual, a ação do dispositivo associado será adicionada à lista automaticamente. A ação consiste nos parâmetros do TradeFed e em recursos de teste necessários para criar dispositivos virtuais.

Ações locais do dispositivo virtual

Figura 2. Ações para dispositivos virtuais locais

Ações do dispositivo virtual remoto

Figura 3. Ações para dispositivos virtuais remotos

Definir recursos de teste

Os dispositivos virtuais Cuttlefish exigem três recursos de teste: as ferramentas de máquina virtual, as imagens e o Acloud. Em um build típico do Cuttlefish (por exemplo, aosp_cf_x86_64_phone em ci.android.com), as ferramentas de máquina virtual são empacotadas em cvd-host_package.tar.gz, e as imagens estão em aosp_cf_x86_64_phone-img-*.zip. O binário do Acloud é integrado ao ATS e é compatível com todas as versões do Cuttlefish. O URL de download padrão do binário do Acloud só precisa ser alterado para fins de depuração.

Recursos de teste de dispositivo virtual

Figura 4. Testar recursos para dispositivos virtuais

Conferir execuções de teste

Os registros do dispositivo, incluindo kernel.log, host_log.txt e launcher.log, são coletados na pasta do arquivo de saída. Clique em View Output Files para visualizá-los.

Resultados da execução de teste

Figura 5. Resultados da execução do teste