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 le funzioni indipendenti dall'hardware. Prima di iniziare a utilizzare i dispositivi virtuali, segui la guida utente per installare OmniLab ATS.

OmniLab ATS supporta i dispositivi virtuali in tre modalità: locale, remota e Cloud Orchestration. La tabella seguente fornisce un confronto tra le modalità.

Dispositivi virtuali localiDispositivi virtuali remotiCloud Orchestration
Viene eseguito sugli host worker ATSViene eseguito su host remoti a cui gli host worker ATS possono accedere tramite SSHViene eseguito su host locali o remoti gestiti da Cloud Orchestrator
Basato su x86Può essere x86 o ARM a seconda dell'architettura dell'host Può essere x86 o ARM a seconda dell'architettura dell'host
Configurazione più facileConfigurazione più complicataScalabile, ad alte prestazioni, supporta l'avvio parallelo delle istanze

Puoi attivare le modalità dei dispositivi virtuali locali e remoti in modo indipendente. In alternativa, puoi attivare Cloud Orchestration, che funge da sostituzione moderna e offre la piena parità di funzionalità con entrambe le modalità, oltre a vantaggi chiave come l'avvio parallelo delle istanze e un migliore isolamento delle risorse. Per i dettagli su ogni modalità, consulta:

Configurare i dispositivi virtuali locali

Questa sezione descrive i passaggi per configurare OmniLab ATS per i dispositivi virtuali locali.

Installare le dipendenze di Cuttlefish

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

sudo modprobe -a kvm tun vhost_net vhost_vsock

Avviare 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 di Cuttlefish esistenti sono in conflitto con le istanze gestite da OmniLab ATS. Per i dettagli sull'arresto delle istanze di Cuttlefish, consulta Arrestare 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 della mancanza di nodi del dispositivo, segui i passaggi indicati nel messaggio di errore per caricare i moduli kernel. Se il problema persiste, riavvia la macchina.

Configurare i dispositivi virtuali remoti

Questa sezione descrive i passaggi per configurare OmniLab ATS per i dispositivi virtuali remoti.

Installare 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 seguendo questi passaggi:

    1. Modifica /etc/default/cuttlefish-host-resources con privilegi di 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 password. I seguenti passaggi 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 aggiungi la chiave pubblica a ~/.ssh/authorized_keys sull'host remoto.

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

sudo usermod -aG kvm,cvdnetwork,render $USER

Avviare 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 di Cuttlefish esistenti sono in conflitto con le istanze gestite da OmniLab ATS. Per i dettagli sull'arresto delle istanze di Cuttlefish, consulta Arrestare 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 a un solo 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.

Alcuni dispositivi

Nell'elenco dei dispositivi, OmniLab ATS visualizza i dispositivi virtuali come segnaposto anziché i numeri di serie effettivi. I segnaposto vengono visualizzati nel formato HOSTNAME:local-virtual-device-ID per i dispositivi virtuali locali; remote-virtual-ADDRESS-ID per i dispositivi virtuali remoti. Gli stati sono Available o Allocated. Un segnaposto nello stato Available indica che il dispositivo virtuale non è in esecuzione e può essere allocato per il test.

Seleziona Dispositivi virtuali

Figura 1. Selezione dei dispositivi virtuali

Aggiungere azioni dei dispositivi

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

Azioni del dispositivo virtuale locale

Figura 2. Azioni dei dispositivi per i dispositivi virtuali locali

Azioni del dispositivo virtuale remoto

Figura 3. Azioni dei dispositivi per i dispositivi virtuali remoti

Impostare le risorse di test

I dispositivi virtuali Cuttlefish richiedono tre risorse di test: gli strumenti della macchina virtuale , le immagini e Acloud. In una build Cuttlefish tipica (ad esempio, aosp_cf_x86_64_only_phone-userdebug su ci.android.com ), gli strumenti della macchina virtuale sono inclusi in cvd-host_package.tar.gz e le immagini sono in aosp_cf_x86_64_only_phone-img-*.zip. Il file 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 a scopo di debug.

Risorse per i test dei dispositivi virtuali

Figura 4. Risorse di test per dispositivi virtuali

Visualizzare le esecuzioni dei test

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

Risultati dell'esecuzione di test

Figura 5. Risultati dell'esecuzione del test