Dispositivi virtuali in OmniLab ATS

OmniLab ATS supporta i dispositivi virtuali Cuttlefish che consentono di eseguire test senza dispositivi Android fisici. Cuttlefish è adatto per testare funzioni indipendenti dall'hardware. Prima di iniziare a utilizzare i dispositivi virtuali, segui la guida dell'utente per installare OmniLab ATS.

OmniLab ATS supporta i dispositivi virtuali in due modalità: locale e remota. La tabella seguente offre un confronto delle due modalità.

Dispositivi virtuali locali Dispositivi virtuali remoti
Esecuzione su host worker ATS Viene eseguito su host remoti a cui gli host di lavoro ATS possono accedere tramite SSH
Basato su x86 Può essere x86 o ARM a seconda dell'architettura degli host
Configurazione più facile Più complicato da configurare

I dispositivi virtuali locali e remoti possono essere attivati indipendentemente. Per maggiori dettagli su ogni modalità, vedi:

Configurare dispositivi virtuali locali

In questa sezione vengono descritti i passaggi per configurare OmniLab ATS per i dispositivi virtuali locali.

Installa le dipendenze di Cuttlefish

Esegui il seguente comando per assicurarti che i moduli del kernel necessari siano caricati:

sudo modprobe -a kvm tun vhost_net vhost_vsock

Avvia OmniLab ATS con dispositivi virtuali locali

Prima di avviare OmniLab ATS, assicurati che tutte le istanze Cuttlefish siano arrestate. OmniLab ATS avvia e arresta automaticamente i dispositivi virtuali durante il ciclo di test e le istanze Cuttlefish esistenti sono in conflitto con le istanze gestite da OmniLab ATS. Per maggiori dettagli sull'arresto delle istanze Seppia, vedi Arrestare seppia.

Per abilitare i dispositivi virtuali locali, esegui:

mtt start --max_local_virtual_devices N

N è il numero massimo di dispositivi virtuali che OmniLab ATS può allocare contemporaneamente. Il numero predefinito è 0.

Se il comando non va a buon fine a causa di nodi del dispositivo mancanti, segui i passaggi indicati nel messaggio di errore per caricare i moduli del kernel. Se il problema persiste, riavvia la macchina.

Configura dispositivi virtuali remoti

In questa sezione vengono descritti i passaggi per configurare OmniLab ATS per i dispositivi virtuali remoti.

Installa le dipendenze di Cuttlefish

Per installare le dipendenze di Cuttlefish, segui questi passaggi.

  1. Installa i pacchetti Debian sull'host remoto seguendo i passaggi descritti in Cuttlefish > Inizia.

  2. Configura il numero massimo di dispositivi virtuali sull'host remoto svolgendo i seguenti passaggi:

    1. Modifica /etc/default/cuttlefish-host-resources con privilegio root.
    2. Imposta num_cvd_accounts sul numero massimo di dispositivi virtuali da consentire su questo host.
    3. Esegui sudo systemctl restart cuttlefish-host-resources.
    4. Esegui ifconfig e verifica il numero di interfacce cvd-wtap-*.

Creare un account SSH

Poiché l'host OmniLab ATS si connette all'host remoto tramite SSH, devi preparare un account SSH sull'host remoto. Poiché OmniLab ATS manipola i file nella directory HOME, ti consigliamo di creare un account dedicato.

L'host OmniLab ATS richiede una coppia di chiavi SSH per accedere all'host remoto senza una password. I passaggi seguenti spiegano come configurare le chiavi SSH:

  1. Per generare una chiave privata e una chiave pubblica, esegui ssh-keygen sull'host OmniLab ATS.
  2. Carica e accoda la chiave pubblica a ~/.ssh/authorized_keys sull'host remoto.

Se il tuo account SSH è diverso da quello utilizzato per installare le dipendenze di Cuttlefish, per consentire all'account SSH di avviare Cuttlefish, esegui questo comando sull'host remoto:

sudo usermod -aG kvm,cvdnetwork,render $USER

Avvia OmniLab ATS con dispositivi virtuali remoti

Prima di avviare OmniLab ATS, assicurati che tutte le istanze di Cuttlefish siano arrestate. OmniLab ATS avvia e arresta automaticamente i dispositivi virtuali durante il ciclo di test e le istanze Cuttlefish esistenti sono in conflitto con le istanze gestite da OmniLab ATS. Per informazioni dettagliate sull'arresto delle istanze Cuttlefish, consulta Interrompere Cuttlefish.

Per un rendimento migliore, ti consigliamo di configurare l'host OmniLab ATS e l'host remoto in una rete locale.

Per attivare i dispositivi virtuali remoti, esegui questo comando sull'host OmniLab ATS:

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

USER è il nome dell'account SSH.

HOST è l'indirizzo IPv4 dell'host remoto.

N è il numero massimo di dispositivi virtuali che OmniLab ATS può allocare contemporaneamente.

KEY è il percorso della chiave SSH privata sull'host OmniLab ATS.

Il comando testa la connessione all'host remoto prima di avviare OmniLab ATS. Se viene visualizzato un messaggio di avviso come The specified --remote_virtual_devices and --remote_ssh_key are invalid. sulla console, devi controllare la configurazione SSH.

Per evitare conflitti tra le risorse, un host ATS di OmniLab può connettersi al massimo a un host remoto. Più host OmniLab ATS non possono connettersi a un host remoto contemporaneamente.

Eseguire un test con dispositivi virtuali

Questa sezione descrive i passaggi per eseguire un test su dispositivi virtuali locali o remoti.

Seleziona dispositivi

Nell'elenco dei dispositivi, OmniLab ATS mostra i dispositivi virtuali come segnaposto anziché come numeri di serie effettivi. I segnaposto vengono visualizzati nel formato HOSTNAME:ID-dispositivo-virtuale-locale per i dispositivi virtuali locali; INDIRIZZO-ID-dispositivo-virtuale-remoto per i dispositivi virtuali remoti. Gli stati sono Disponibile o Allocato. Un segnaposto nello stato Disponibile indica che il dispositivo virtuale non è in esecuzione e può essere allocato per il test.

Seleziona dispositivi virtuali

Figura 1. Selezione di dispositivi virtuali

Aggiungere azioni dei dispositivi

Se selezioni almeno un dispositivo virtuale, l'azione del dispositivo associata dovrebbe essere aggiunta automaticamente all'elenco. L'azione è composta dai parametri TradeFed obbligatori e dalle risorse di test per creare dispositivi virtuali.

Azioni dispositivo virtuale locale

Figura 2. Azioni del dispositivo per i dispositivi virtuali locali

Azioni dispositivo virtuale remoto

Figura 3. Azioni del dispositivo per i dispositivi virtuali remoti

Imposta le risorse di test

I dispositivi virtuali Cuttlefish richiedono tre risorse di test: gli strumenti per le macchine virtuali, le immagini e Acloud. In una tipica build Cuttlefish (ad esempio, aosp_cf_x86_64_phone su ci.android.com), gli strumenti per le macchine virtuali sono pacchettizzati in cvd-host_package.tar.gz e le immagini in aosp_cf_x86_64_phone-img-*.zip. Il programma binario Acloud è integrato in OmniLab ATS ed è compatibile con tutte le versioni di Cuttlefish. L'URL di download predefinito del file binario Acloud deve essere modificato solo per scopi di debug.

Risorse per i test dei dispositivi virtuali

Figura 4. Risorse di test per i dispositivi virtuali

Visualizzare le esecuzioni dei test

I log del dispositivo, inclusi kernel.log, host_log.txt e launcher.log, vengono raccolti nella cartella del file di output. Fai clic su Visualizza file di output per visualizzarli.

Risultati dell'esecuzione del test

Figura 5. Risultati dell'esecuzione del test