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äte | Virtuelle Remote-Geräte | Cloud-Orchestrierung |
|---|---|---|
| Wird auf ATS-Worker-Hosts ausgeführt | Wird auf Remote-Hosts ausgeführt, auf die ATS-Worker-Hosts über SSH zugreifen können | Wird auf lokalen oder Remote-Hosts ausgeführt, die von Cloud Orchestrator verwaltet werden |
| x86-basiert | Kann je nach Hostarchitektur x86 oder ARM sein | Kann je nach Hostarchitektur x86 oder ARM sein |
| Einfacher einzurichten | Komplizierter einzurichten | Leistungsstark, 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
- Virtuelle Remote-Geräte einrichten
- Virtuelle Geräte mit Cloud-Orchestrierung einrichten
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_vsockOmniLab 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 NN 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:
Installieren Sie die Debian-Pakete auf dem Remote-Host . Folgen Sie dazu der Anleitung unter Cuttlefish > Erste Schritte.
Konfigurieren Sie die maximale Anzahl virtueller Geräte auf dem Remote-Host . Folgen Sie dazu dieser Anleitung:
- Bearbeiten Sie
/etc/default/cuttlefish-host-resourcesmit Root-Berechtigung. - Legen Sie
num_cvd_accountsauf die maximale Anzahl virtueller Geräte fest, die auf diesem Host zulässig sind. - Führen Sie
sudo systemctl restart cuttlefish-host-resourcesaus. - Führen Sie
ifconfigaus 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 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:
- Führen Sie
ssh-keygenauf dem OmniLab ATS-Host aus, um einen privaten und einen öffentlichen Schlüssel zu generieren. - Laden Sie den öffentlichen Schlüssel hoch und fügen Sie ihn auf dem Remote-Host an
~/.ssh/authorized_keysan.
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 $USEROmniLab 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 KEYUSER 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.
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.
Abbildung 2 : Geräteaktionen für lokale virtuelle Geräte
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.
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.
Abbildung 5 : Ergebnisse des Testlaufs