Virtuelle Geräte in Android Test Station

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:

  1. Installieren Sie die Debian-Pakete auf dem Remote-Host. Folgen Sie dazu den Schritten unter Cuttlefish > Jetzt starten.

  2. Konfigurieren Sie die maximale Anzahl virtueller Geräte auf dem Remote-Host mit den folgenden Schritten:

    1. Bearbeiten Sie /etc/default/cuttlefish-host-resources mit Root-Berechtigung.
    2. Legen Sie für num_cvd_accounts die maximale Anzahl virtueller Geräte fest, die auf diesem Host zugelassen werden sollen.
    3. Führen Sie sudo systemctl restart cuttlefish-host-resources aus.
    4. Führen Sie ifconfig aus und prüfen Sie die Anzahl der cvd-wtap-*-Schnittstellen.

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:

  1. Führen Sie ssh-keygen auf dem ATS-Host aus, um einen privaten und einen öffentlichen Schlüssel zu generieren.
  2. 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.

Virtuelle Geräte auswählen

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.

Aktionen für lokale virtuelle Geräte

Abbildung 2: Geräteaktionen für lokale virtuelle Geräte

Remote-Aktionen für 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.

Ressourcen zum Testen virtueller Geräte

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.

Ergebnisse des Testlaufs

Abbildung 5: Ergebnisse des Testlaufs