OmniLab ATS unterstützt virtuelle Cuttlefish-Geräte, mit denen Sie Tests ohne physische Android-Geräte ausführen können. Cuttlefish eignet sich zum Testen hardwareunabhängiger Funktionen. Bevor Sie virtuelle Geräte verwenden können, müssen Sie OmniLab ATS gemäß der Anleitung installieren.
OmniLab ATS unterstützt virtuelle Geräte in zwei Modi: lokal und remote. In der folgenden Tabelle werden die beiden Modi verglichen.
Lokale virtuelle Geräte | Virtuelle Remote-Geräte |
---|---|
Wird auf ATS-Worker-Hosts ausgeführt | Wird auf Remote-Hosts ausgeführt, auf die ATS-Worker-Hosts über SSH zugreifen können |
x86-basiert | Kann je nach Architektur des Hosts x86 oder ARM sein |
Einfachere Einrichtung | Komplexere Einrichtung |
Lokale und Remote-virtuelle Geräte können unabhängig voneinander aktiviert werden. Weitere Informationen zu den einzelnen Modi finden Sie unter:
Lokale virtuelle Geräte einrichten
In diesem Abschnitt werden die Schritte zum Einrichten von OmniLab ATS für lokale virtuelle Geräte beschrieben.
Cuttlefish-Abhängigkeiten installieren
Führen Sie den folgenden Befehl aus, um sicherzustellen, dass die erforderlichen Kernelmodule geladen sind:
sudo modprobe -a kvm tun vhost_net vhost_vsock
OmniLab ATS mit lokalen virtuellen Geräten starten
Bevor Sie OmniLab ATS starten, müssen alle Cuttlefish-Instanzen beendet sein. OmniLab ATS startet und beendet die virtuellen Geräte während des Testzyklus automatisch und bestehende Cuttlefish-Instanzen stehen in Konflikt mit Instanzen, die von OmniLab ATS verwaltet werden. Weitere Informationen zum Beenden von Cuttlefish-Instanzen finden Sie unter Cuttlefish beenden.
So aktivieren Sie lokale virtuelle Geräte:
mtt start --max_local_virtual_devices N
N
ist die maximale Anzahl virtueller Geräte, die OmniLab ATS gleichzeitig zuweisen kann. Die Standardanzahl ist 0.
Wenn der Befehl aufgrund fehlender Geräteknoten fehlschlägt, folgen Sie der Anleitung in der Fehlermeldung, um die Kernelmodule zu laden. Wenn das Problem weiterhin besteht, starte den Computer neu.
Virtuelle Remote-Geräte einrichten
In diesem Abschnitt wird beschrieben, wie Sie OmniLab ATS für Remote-virtuelle Geräte einrichten.
Cuttlefish-Abhängigkeiten installieren
So installieren Sie Cuttlefish-Abhängigkeiten:
Installieren Sie die Debian-Pakete auf dem Remote-Host. Folgen Sie dazu der Anleitung unter Cuttlefish > Erste Schritte.
So konfigurieren Sie die maximale Anzahl von virtuellen Geräten auf dem Remote-Host:
- Bearbeiten Sie
/etc/default/cuttlefish-host-resources
mit Root-Berechtigungen. - Legen Sie für
num_cvd_accounts
die maximale Anzahl virtueller Geräte fest, die auf diesem Host zugelassen werden sollen. - Führen Sie
sudo systemctl restart cuttlefish-host-resources
aus. - Führen Sie
ifconfig
aus und prüfen Sie die Anzahl dercvd-wtap-*
-Schnittstellen.
- Bearbeiten Sie
SSH-Konto erstellen
Da der OmniLab ATS-Host über SSH eine Verbindung zum Remote-Host herstellt, müssen Sie auf dem Remote-Host ein SSH-Konto vorbereiten. Da OmniLab ATS die Dateien im HOME-Verzeichnis bearbeitet, empfehlen wir, ein eigenes Konto zu erstellen.
Der OmniLab ATS-Host benötigt ein SSH-Schlüsselpaar, um sich ohne Passwort beim Remote-Host anzumelden. In den folgenden Schritten wird beschrieben, wie Sie die SSH-Schlüssel einrichten:
- Führen Sie
ssh-keygen
auf dem OmniLab ATS-Host aus, um einen privaten und einen öffentlichen Schlüssel zu generieren. - Laden Sie den öffentlichen Schlüssel auf den Remote-Host hoch und hängen Sie ihn an
~/.ssh/authorized_keys
an.
Wenn sich Ihr SSH-Konto von dem unterscheidet, das zum Installieren der Cuttlefish-Abhängigkeiten verwendet wurde, führen Sie auf dem Remotehost diesen Befehl aus, damit das SSH-Konto Cuttlefish starten kann:
sudo usermod -aG kvm,cvdnetwork,render $USER
OmniLab ATS mit virtuellen Remote-Geräten starten
Bevor Sie OmniLab ATS starten, müssen alle Cuttlefish-Instanzen beendet sein. OmniLab ATS startet und beendet die virtuellen Geräte während des Testzyklus automatisch und bestehende Cuttlefish-Instanzen stehen in Konflikt mit Instanzen, die von OmniLab ATS verwaltet werden. Weitere Informationen zum Beenden von Cuttlefish-Instanzen finden Sie unter Cuttlefish beenden.
Für eine bessere Leistung empfehlen wir, den OmniLab ATS-Host und den Remote-Host in einem lokalen Netzwerk einzurichten.
Führen Sie den folgenden Befehl auf dem OmniLab ATS-Host aus, um virtuelle Remote-Geräte zu aktivieren:
mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEY
USER
ist der Name des SSH-Kontos.
HOST
ist die IPv4-Adresse des Remote-Hosts.
N
ist die maximale Anzahl virtueller Geräte, die OmniLab ATS gleichzeitig zuweisen kann.
KEY
ist der Pfad zum privaten SSH-Schlüssel auf dem OmniLab ATS-Host.
Mit dem Befehl wird die Verbindung zum Remote-Host getestet, bevor OmniLab ATS gestartet wird.
Wenn in der Konsole eine Warnung wie The specified --remote_virtual_devices and --remote_ssh_key are invalid.
angezeigt wird, sollten Sie Ihre SSH-Einrichtung prüfen.
Um Ressourcenkonflikte zu vermeiden, kann ein OmniLab ATS-Host mit maximal einem Remote-Host verbunden werden. Mehrere OmniLab ATS-Hosts können nicht gleichzeitig eine Verbindung zu einem Remote-Host herstellen.
Test mit virtuellen Geräten ausführen
In diesem Abschnitt wird beschrieben, wie Sie einen Test auf lokalen oder Remote-virtuellen Geräten ausführen.
Geräte auswählen
In der Geräteliste zeigt OmniLab ATS virtuelle Geräte als Platzhalter anstelle ihrer tatsächlichen Seriennummern an. Die Platzhalter werden im Format HOSTNAME:local-virtual-device-ID für lokale virtuelle Geräte und remote-virtual-ADDRESS-ID für Remote-virtuelle Geräte angezeigt. Die Status sind entweder Verfügbar oder Zugewiesen. Ein Platzhalter im Status Verfügbar gibt an, dass das virtuelle Gerät nicht ausgeführt wird und für den Test zugewiesen werden kann.
Abbildung 1. Virtuelle Geräte auswählen
Geräteaktionen hinzufügen
Wenn Sie mindestens ein virtuelles Gerät auswählen, sollte die zugehörige Geräteaktion automatisch zur Liste hinzugefügt werden. Die Aktion besteht aus den erforderlichen TradeFed-Parametern und Testressourcen zum Erstellen virtueller Geräte.
Abbildung 2. Geräteaktionen für lokale virtuelle Geräte
Abbildung 3 Geräteaktionen für virtuelle Remote-Geräte
Testressourcen festlegen
Virtuelle Cuttlefish-Geräte benötigen drei Testressourcen: die VM-Tools, die Images und Acloud.
In einem typischen Cuttlefish-Build (z. B. aosp_cf_x86_64_phone
auf ci.android.com) sind die Tools für virtuelle Maschinen in cvd-host_package.tar.gz
und die Images in aosp_cf_x86_64_phone-img-*.zip
verpackt. Die Acloud-Binärdatei wird in OmniLab ATS erstellt und ist mit allen Versionen von Cuttlefish kompatibel. Die Standard-Download-URL der Acloud-Binärdatei muss nur zu Debug-Zwecken geändert werden.
Abbildung 4 Ressourcen für virtuelle Geräte testen
Testläufe ansehen
Die Gerätelogs, einschließlich kernel.log
, host_log.txt
und launcher.log
, werden im Ausgabedateiordner erfasst. Klicken Sie auf Ausgabedateien anzeigen, um sie anzuzeigen.
Abbildung 5: Testlaufergebnisse