Virtuelle Geräte in OmniLab ATS

OmniLab ATS unterstützt Cuttlefish-Geräte mit denen Sie Tests ohne physische Android-Geräte ausführen können. Cuttlefish eignet sich zum Testen von hardwareunabhängigen Funktionen. Folgen Sie der Anleitung, um OmniLab ATS zu installieren, bevor Sie virtuelle Geräte verwenden.

OmniLab ATS unterstützt virtuelle Geräte in drei Modi: lokal, remote und Cloud-Orchestrierung. In der folgenden Tabelle werden die Modi verglichen.

Lokale virtuelle GeräteVirtuelle Remote-GeräteCloud-Orchestrierung
Wird auf ATS-Worker-Hosts ausgeführtWird auf Remote-Hosts ausgeführt, auf die ATS-Worker-Hosts über SSH zugreifen könnenWird auf lokalen oder Remote-Hosts ausgeführt, die von Cloud Orchestrator verwaltet werden
x86-basiertKann je nach Hostarchitektur x86 oder ARM sein Kann je nach Hostarchitektur x86 oder ARM sein
Einfacher einzurichtenKomplizierter einzurichtenLeistungsstark, skalierbar, unterstützt das parallele Starten von Instanzen

Sie können die Modi für lokale und virtuelle Remote-Geräte unabhängig voneinander aktivieren. Alternativ können Sie die Cloud-Orchestrierung aktivieren, die als moderne Alternative dient und alle Funktionen beider Modi bietet. Außerdem bietet sie wichtige Vorteile wie das parallele Starten von Instanzen und eine bessere Ressourcenisolation. 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 Kernel-Module 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 werden. OmniLab ATS startet und beendet die virtuellen Geräte automatisch während des Testzyklus. Vorhandene Cuttlefish-Instanzen stehen im Konflikt mit Instanzen, die von OmniLab ATS verwaltet werden. Weitere Informationen zum Beenden von Cuttlefish-Instanzen finden Sie unter Cuttlefish beenden.

Führen Sie Folgendes aus, um lokale virtuelle Geräte zu aktivieren:

mtt start --max_local_virtual_devices N

N ist die maximale Anzahl virtueller Geräte, die OmniLab ATS gleichzeitig zuweisen kann. Der Standardwert ist 0.

Wenn der Befehl aufgrund fehlender Geräteknoten fehlschlägt, folgen Sie der Anleitung in der Fehlermeldung, um die Kernel-Module zu laden. Wenn der Fehler weiterhin auftritt, starten Sie den Computer neu.

Virtuelle Remote-Geräte einrichten

In diesem Abschnitt werden die Schritte zum Einrichten von OmniLab ATS für virtuelle Remote-Geräte beschrieben.

Cuttlefish-Abhängigkeiten installieren

So installieren Sie Cuttlefish-Abhängigkeiten:

  1. Installieren Sie die Debian-Pakete auf dem Remote-Host . Folgen Sie dazu der Anleitung unter Cuttlefish > Erste Schritte.

  2. Konfigurieren Sie die maximale Anzahl virtueller Geräte auf dem Remote-Host . Folgen Sie dazu dieser Anleitung:

    1. Bearbeiten Sie /etc/default/cuttlefish-host-resources mit Root-Berechtigung.
    2. Legen Sie num_cvd_accounts auf die maximale Anzahl virtueller Geräte fest, die auf diesem Host zulässig sind.
    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 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 manipuliert, empfehlen wir, ein separates Konto zu erstellen.

Der OmniLab 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 OmniLab ATS-Host aus, um einen privaten und einen öffentlichen Schlüssel zu generieren.
  2. Laden Sie den öffentlichen Schlüssel hoch und fügen Sie ihn auf dem Remote-Host an ~/.ssh/authorized_keys an.

Wenn sich Ihr SSH-Konto von dem Konto unterscheidet, das zum Installieren von Cuttlefish-Abhängigkeiten verwendet wurde, führen Sie den folgenden Befehl auf dem Remote-Host aus, um dem SSH-Konto das Starten von Cuttlefish zu ermöglichen:

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 werden. OmniLab ATS startet und beendet die virtuellen Geräte automatisch während des Testzyklus. Vorhandene Cuttlefish-Instanzen stehen im 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 Warnmeldung 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 nur eine Verbindung zu einem Remote-Host herstellen. 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 werden die Schritte zum Ausführen eines Tests auf lokalen oder virtuellen Remote-Geräten beschrieben.

Ausgewählte Geräte

In der Geräteliste werden virtuelle Geräte in OmniLab ATS als Platzhalter anstelle ihrer tatsächlichen Seriennummern angezeigt. 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 für den 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 der Liste hinzugefügt werden. Die Aktion besteht aus den erforderlichen TradeFed-Parametern und Testressourcen zum Erstellen virtueller Geräte.

Lokale Aktionen für virtuelle Geräte

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

Aktionen für virtuelle Geräte per Fernzugriff

Abbildung 3 : Geräteaktionen für virtuelle Remote-Geräte

Testressourcen festlegen

Für Cuttlefish-Geräte sind drei Testressourcen erforderlich: die Tools für virtuelle Maschinen , die Images und Acloud. In einem typischen Cuttlefish-Build (z. B. aosp_cf_x86_64_only_phone-userdebug 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_only_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 Debugging-Zwecken geändert werden.

Testressourcen für virtuelle Geräte

Abbildung 4 : Testressourcen für virtuelle Geräte

Testläufe ansehen

Die Gerätelogs, einschließlich kernel.log, host_log.txt und launcher.log, werden im Ordner mit den Ausgabedateien erfasst. Klicken Sie auf Ausgabedateien ansehen , um sie aufzurufen.

Ergebnisse des Testlaufs

Abbildung 5 : Ergebnisse des Testlaufs