Android Test Station unterstützt virtuelle Cuttlefish-Geräte, mit denen du Tests ohne physische Android-Geräte durchführen kannst. Sepia eignet sich zum Testen von hardwareunabhängigen Funktionen. Bevor du mit der Verwendung virtueller Geräte beginnst, folge dem Nutzerhandbuch zur Installation von Android Test Station.
ATS unterstützt virtuelle Geräte in zwei Modi: lokal und remote. Die folgende Tabelle enthält einen Vergleich der beiden Modi.
Lokale virtuelle Geräte | Virtuelle Remote-Geräte |
---|---|
Ausführung auf ATS-Worker-Hosts | 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-VMs können unabhängig voneinander aktiviert werden. Weitere Informationen zu den einzelnen Modi finden Sie unter:
Lokale virtuelle Geräte einrichten
In diesem Abschnitt wird beschrieben, wie Sie ATS für lokale virtuelle Geräte einrichten.
Cuttlefish-Abhängigkeiten installieren
Führen Sie den folgenden Befehl aus, damit die erforderlichen Kernelmodule geladen werden:
sudo modprobe -a kvm tun vhost_net vhost_vsock
Android Test Station mit lokalen virtuellen Geräten starten
Stellen Sie vor dem Starten von ATS sicher, dass alle Cuttlefish-Instanzen beendet sind. ATS startet und beendet die virtuellen Geräte während des Testzyklus automatisch und vorhandene Cuttlefish-Instanzen stehen in Konflikt mit von ATS verwalteten Instanzen. Weitere Informationen zum Beenden von Sepien-Instanzen finden Sie unter Tintenfisch stoppen.
Führen Sie folgenden Befehl aus, um lokale virtuelle Geräte zu aktivieren:
mtt start --max_local_virtual_devices N
N
ist die maximale Anzahl virtueller Geräte, die ATS gleichzeitig zuweisen kann. Die Standardzahl ist 0.
Wenn der Befehl aufgrund fehlender Geräteknoten fehlschlägt, folgen Sie den Schritten in der Fehlermeldung, um die Kernelmodule zu laden. Wenn der Fehler weiterhin auftritt, starten Sie den Computer neu.
Virtuelle Remote-Geräte einrichten
In diesem Abschnitt wird beschrieben, wie Sie ATS für virtuelle Remote-Geräte einrichten.
Cuttlefish-Abhängigkeiten installieren
Gehen Sie wie folgt vor, um Cuttlefish-Abhängigkeiten zu installieren:
Installieren Sie die Debian-Pakete auf dem Remote-Host. Folgen Sie dazu den Schritten unter Cuttlefish > Jetzt starten.
Konfigurieren Sie die maximale Anzahl virtueller Geräte auf dem Remote-Host mit den folgenden Schritten:
- Bearbeiten Sie
/etc/default/cuttlefish-host-resources
mit Root-Berechtigung. - 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 ATS-Host über SSH eine Verbindung zum Remote-Host herstellt, müssen Sie ein SSH-Konto auf dem Remote-Host vorbereiten. Da ATS die Dateien im HOME-Verzeichnis bearbeitet, empfehlen wir, ein eigenes Konto zu erstellen.
Der ATS-Host benötigt ein Paar SSH-Schlüssel, 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 ATS-Host aus, um einen privaten und einen öffentlichen Schlüssel zu generieren. - Laden Sie den öffentlichen Schlüssel auf dem Remote-Host hoch und hängen Sie ihn an
~/.ssh/authorized_keys
an.
Wenn sich Ihr SSH-Konto von dem unterscheidet, das zum Installieren von Cuttlefish-Abhängigkeiten verwendet wird, führen Sie den folgenden Befehl auf dem Remote-Host aus, damit das SSH-Konto Cuttlefish starten kann:
sudo usermod -aG kvm,cvdnetwork,render $USER
ATS mit virtuellen Remote-Geräten starten
Stellen Sie vor dem Starten von ATS sicher, dass alle Cuttlefish-Instanzen beendet sind. ATS startet und beendet die virtuellen Geräte während des Testzyklus automatisch und vorhandene Cuttlefish-Instanzen stehen in Konflikt mit von ATS verwalteten Instanzen. Weitere Informationen zum Beenden von Sepien-Instanzen finden Sie unter Tintenfisch stoppen.
Für eine bessere Leistung empfehlen wir, den ATS-Host und den Remote-Host in einem lokalen Netzwerk einzurichten.
Führen Sie den folgenden Befehl auf dem 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 ATS gleichzeitig zuweisen kann.
KEY
ist der Pfad zum privaten SSH-Schlüssel auf dem ATS-Host.
Der Befehl testet die Verbindung zum Remote-Host, bevor ATS gestartet wird.
Wenn in der Konsole eine Warnmeldung wie The specified --remote_virtual_devices and --remote_ssh_key are invalid.
angezeigt wird, sollten Sie die SSH-Einrichtung prüfen.
Um Ressourcenkonflikte zu vermeiden, kann ein ATS-Host eine Verbindung zu maximal einem Remote-Host herstellen. Mehrere ATS-Hosts können nicht gleichzeitig eine Verbindung zu einem Remote-Host herstellen.
Test mit virtuellen Geräten ausführen
In diesem Abschnitt werden die Schritte zum Ausführen eines Tests auf lokalen oder Remote-VMs beschrieben.
Geräte auswählen
In der Geräteliste zeigt 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 virtuelle Remote-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 dem 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 virtuellen Maschinentools in cvd-host_package.tar.gz
und die Images in aosp_cf_x86_64_phone-img-*.zip
gepackt. Das Acloud-Binärprogramm ist in ATS eingebunden und mit allen Versionen von Cuttlefish kompatibel. Die Standard-Download-URL des Acloud-Binärprogramms muss nur zu Fehlerbehebungszwecken geändert werden.
Abbildung 4: Ressourcen für virtuelle Geräte testen
Testausführungen 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: Ergebnisse des Testlaufs