Virtuelle Geräte in OmniLab ATS

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:

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

  2. So konfigurieren Sie die maximale Anzahl von virtuellen Geräten auf dem Remote-Host:

    1. Bearbeiten Sie /etc/default/cuttlefish-host-resources mit Root-Berechtigungen.
    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 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:

  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 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.

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.

Lokale Aktionen für virtuelle Geräte

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

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

Ressourcen für Tests mit virtuellen Geräten

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.

Testlaufergebnisse

Abbildung 5: Testlaufergebnisse