Dispositivi virtuali in OmniLab ATS

OmniLab ATS supporta i dispositivi virtuali Cuttlefish che ti 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
Viene eseguito sugli host di 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 in modo indipendente. Per maggiori dettagli su ogni modalità, vedi:

Configurare dispositivi virtuali locali

Questa sezione descrive 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 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 attivare 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.

Configurare dispositivi virtuali remoti

Questa sezione descrive 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 riportati di seguito descrivono 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 nella console viene visualizzato un messaggio di avviso come The specified --remote_virtual_devices and --remote_ssh_key are invalid., devi controllare la configurazione SSH.

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

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 associata al dispositivo dovrebbe essere aggiunta automaticamente all'elenco. L'azione è composta dai parametri TradeFed obbligatori e dalle risorse di test per creare dispositivi virtuali.

Azioni del dispositivo virtuale locale

Figura 2. Azioni del dispositivo per i dispositivi virtuali locali

Azioni del 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 di 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 sono in aosp_cf_x86_64_phone-img-*.zip. Il file Acloud è compilato 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