O OmniLab ATS oferece suporte a dispositivos virtuais Cuttlefish que permitem executar testes sem dispositivos Android físicos. 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 o OmniLab ATS.
O OmniLab ATS oferece suporte a dispositivos virtuais em três modos: local, remoto e orquestração na nuvem. A tabela a seguir compara os modos.
| Dispositivos virtuais locais | Dispositivos virtuais remotos | Orquestração na nuvem |
|---|---|---|
| Executado em hosts de worker do ATS | Executado em hosts remotos que os hosts de worker do ATS podem acessar pelo SSH | Executado em hosts locais ou remotos gerenciados pelo Orquestrador do Cloud |
| Baseado em x86 | Pode ser x86 ou ARM, dependendo da arquitetura do host | Pode ser x86 ou ARM, dependendo da arquitetura do host |
| Mais fácil de configurar | Mais complicado de configurar | Alto desempenho, escalonável, oferece suporte ao lançamento de instâncias paralelas |
É possível ativar os modos de dispositivo virtual local e remoto de forma independente. Como alternativa, você pode ativar a orquestração na nuvem, que serve como uma substituição moderna, oferecendo paridade total de recursos com os dois modos, além de vantagens importantes, como o lançamento de instâncias paralelas e um melhor isolamento de recursos. Para mais detalhes sobre cada modo, consulte:
- Configurar dispositivos virtuais locais
- Configurar dispositivos virtuais remotos
- Configurar dispositivos virtuais orquestrados na nuvem
Configurar dispositivos virtuais locais
Esta seção descreve as etapas para configurar o OmniLab ATS para dispositivos virtuais locais.
Instalar dependências do Cuttlefish
Execute o comando a seguir para garantir que os módulos do kernel necessários sejam carregados:
sudo modprobe -a kvm tun vhost_net vhost_vsockIniciar o OmniLab ATS com dispositivos virtuais locais
Antes de iniciar o OmniLab ATS, verifique se todas as instâncias do Cuttlefish 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 dispositivos virtuais locais, execute:
mtt start --max_local_virtual_devices NN é o número máximo de dispositivos virtuais que o OmniLab ATS pode alocar simultaneamente. O número padrão é 0.
Se o comando falhar devido a nós de dispositivo ausentes, siga as etapas na mensagem de erro para carregar os módulos do kernel. Se o problema persistir, reinicie a máquina.
Configurar dispositivos virtuais remotos
Esta seção descreve as etapas para configurar o OmniLab ATS para dispositivos virtuais remotos.
Instalar dependências do Cuttlefish
Para instalar as dependências do Cuttlefish, siga estas etapas.
Instale os pacotes Debian no host remoto seguindo as etapas em Cuttlefish > Introdução.
Configure o número máximo de dispositivos virtuais no host remoto seguindo estas etapas:
- Edite
/etc/default/cuttlefish-host-resourcescom privilégio de raiz. - Defina
num_cvd_accountscomo o número máximo de dispositivos virtuais permitidos nesse host. - Execute
sudo systemctl restart cuttlefish-host-resources. - Execute
ifconfige verifique o número de interfacescvd-wtap-*.
- Edite
Criar uma conta SSH
Como o host do OmniLab ATS se conecta ao host remoto pelo SSH, é necessário preparar uma conta SSH no host remoto. Como o OmniLab ATS manipula os arquivos no diretório HOME, recomendamos que você crie uma conta dedicada.
O host do OmniLab ATS exige um par de chaves SSH para fazer login no host remoto sem uma senha. As etapas a seguir descrevem como configurar as chaves SSH:
- Para gerar uma chave privada e uma chave pública, execute
ssh-keygenno host do OmniLab ATS. - Faça o upload e anexe a chave pública a
~/.ssh/authorized_keysno host remoto.
Se a conta SSH for diferente da usada para instalar as dependências do Cuttlefish, para permitir que a conta SSH inicie o Cuttlefish, execute este comando no host remoto:
sudo usermod -aG kvm,cvdnetwork,render $USERIniciar o OmniLab ATS com dispositivos virtuais remotos
Antes de iniciar o OmniLab ATS, verifique se todas as instâncias do Cuttlefish 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 melhorar o desempenho, recomendamos configurar o host do OmniLab ATS e o host remoto em uma rede local.
Para ativar dispositivos virtuais remotos, execute este comando no host do OmniLab ATS:
mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEYUSER é o nome da conta SSH.
HOST é o endereço IPv4 do host remoto.
N é o número máximo de dispositivos virtuais que o OmniLab ATS pode alocar simultaneamente.
KEY é o caminho para a chave SSH privada no host do OmniLab ATS.
O comando testa a conexão com o host remoto antes de iniciar o OmniLab ATS.
Se ele mostrar uma mensagem de aviso, como The specified --remote_virtual_devices and --remote_ssh_key are invalid. no console, verifique a configuração do SSH.
Para evitar conflitos de recursos, um host do OmniLab ATS pode se conectar a no máximo um host remoto. Vários hosts do OmniLab 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.
Dispositivos selecionados
Na lista de dispositivos, o OmniLab ATS mostra dispositivos virtuais 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:local-virtual-device-ID para dispositivos virtuais locais; remote-virtual-ADDRESS-ID para dispositivos virtuais remotos. 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
Adicionar ações do dispositivo
Se você selecionar pelo menos um dispositivo virtual, a ação do dispositivo associada será adicionada à lista automaticamente. A ação consiste nos parâmetros TradeFed necessários e nos recursos de teste para criar dispositivos virtuais.
Figura 2. Ações do dispositivo para dispositivos virtuais locais
Figura 3. Ações do dispositivo 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_only_phone-userdebug 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_only_phone-img-*.zip. O binário do Acloud é criado no OmniLab 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.
Figura 4. Recursos de teste 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 de arquivos de saída. Clique em Conferir arquivos de saída para vê-los.
Figura 5. Resultados da execução de teste