Cloud-Orchestrierung in OmniLab ATS

Die Cloud Orchestration App bietet eine leistungsstarke, skalierbare Möglichkeit zum Verwalten von Cuttlefish-Instanzen, insbesondere für ARM-basierte virtuelle Geräte (CHD). OmniLab ATS unterstützt Cloud Orchestration, sodass Sie Tests auf virtuellen Geräten ausführen können. Bevor Sie virtuelle Geräte verwenden, folgen Sie der Anleitung unter OmniLab Android Test Station, um OmniLab ATS zu installieren.

Übersicht

Mit Cloud Orchestration kann OmniLab ATS die Verwaltung von Cuttlefish-Instanzen an einen dedizierten Cloud Orchestrator-Dienst delegieren. Dieser Ansatz bietet mehrere Vorteile gegenüber den vorhandenen lokalen und Remote-Modi und sorgt gleichzeitig für eine vertraute Nutzererfahrung:

  • Paralleles Starten von Instanzen:Ermöglicht das gleichzeitige Starten mehrerer Cuttlefish-Instanzen, wodurch die Vorlaufzeit vor dem Start von Tests erheblich verkürzt wird.
  • Skalierbarkeit:Geeignet für umfangreiche Testumgebungen.
  • Ressourcenisolation:Entkoppelt die Testausführungsumgebung (ATS-Worker) von der Geräteemulationsumgebung.

Vorbereitung

  • Ein Hostcomputer, auf dem Docker ausgeführt werden kann
  • Zugriff auf die Docker-Images für die Cuttlefish-Orchestrierung

Cloud Orchestrator-Dienst einrichten

Der Cloud Orchestrator-Dienst verwaltet den Lebenszyklus von Cuttlefish-Instanzen. Sie können den Dienst in verschiedenen Umgebungen bereitstellen. Er unterstützt sowohl x86- als auch ARM-Architekturen:

  • Gleicher Host wie ATS-Worker:Wird in einem Docker-Container auf demselben Computer ausgeführt
  • Separater Computer:Wird auf einem lokalen Server ausgeführt, auf dem Docker ausgeführt werden kann
  • Cloud-Instanz:Wird auf einer virtuellen Maschine in einer Cloud-Umgebung ausgeführt, z. B. Google Compute Engine

Dienst installieren und einrichten

Folgen Sie der Anleitung in der README-Datei für die Cloud-Orchestrierung für Android , um den Dienst zu starten.

Authentifizierung und Berechtigungen

Wenn der Cloud Orchestrator-Dienst auf einem Remotecomputer ausgeführt wird, muss der ATS-Worker-Host die erforderlichen Berechtigungen haben, um über HTTP-Anfragen darauf zuzugreifen. Wenn keine HTTP-Verbindung zulässig ist, müssen Sie möglicherweise die SSH-Portweiterleitung einrichten. Weitere Informationen finden Sie unter Cloud Orchestrator testen.

Erwarteter Status

Nachdem der Cloud Orchestrator-Dienst erfolgreich gestartet wurde, sollte er über HTTP erreichbar sein. Sie können den Status prüfen, indem Sie die API abfragen:

  • Dienst anpingen:Der Dienstendpunkt sollte vom OmniLab ATS-Worker-Host aus erreichbar sein. Wenn Sie beispielsweise curl -I http://localhost:8080/v1/zones/local/hosts ausführen, sollte eine erfolgreiche HTTP Antwort zurückgegeben werden (entweder HTTP/1.1 200 OK oder eine 302 Found-Weiterleitung zu /username). Dadurch wird bestätigt, dass der Dienst aktiv und erreichbar ist.

OmniLab ATS für die Cloud-Orchestrierung konfigurieren

Bevor Sie OmniLab ATS starten, müssen alle Cuttlefish-Instanzen auf dem OmniLab ATS-Worker-Host 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.

Wenn Sie die Cloud-Orchestrierung in OmniLab ATS aktivieren möchten, übergeben Sie beim Starten von OmniLab ATS bestimmte Flags:

mtt start --max_orchestration_virtual_devices N \
  --orchestration_service_url=http://HOST:PORT \
  --use_host_network \
  --force_ats_version 2 \
  --force_update
  • --max_orchestration_virtual_devices: Legt die maximale Anzahl virtueller Geräte fest, die von Cloud Orchestrator verwaltet werden und die OmniLab ATS gleichzeitig zuweisen kann. Der Standardwert ist 0.
  • --orchestration_service_url: Gibt die URL an, an der der Cloud Orchestration-Dienst auf Anfragen wartet, z. B. http://localhost:8080.
  • --use_host_network: Verwendet den Netzwerk-Namespace des Hosts für den Container. Dies ist erforderlich, um auf den Cloud Orchestration-Dienst zuzugreifen.
  • --force_ats_version 2: Erzwingt die Verwendung von OmniLab ATS 2.0, das für die Cloud-Orchestrierung erforderlich ist. Weitere Informationen finden Sie im Upgrade-Leitfaden für OmniLab ATS 2.0.
  • --force_update: Ruft den neuesten Container-Build mit ATS 2.0- und Cloud Orchestration-Funktionen ab.

Test mit cloud-orchestrierten Geräten ausführen

In diesem Abschnitt werden die Schritte zum Ausführen eines Tests auf cloud-orchestrierten virtuellen Geräten beschrieben.

Ausgewählte Geräte

In der Geräteliste werden cloud-orchestrierte virtuelle Geräte in OmniLab ATS als Platzhalter anstelle ihrer tatsächlichen Seriennummern angezeigt. Die Platzhalter werden angezeigt im Format von HOSTNAME:PORT (z. B. thehostname:6520). Die Status sind entweder Verfügbar oder Zugewiesen. Ein Platzhalter mit dem Status Verfügbar gibt an, dass das virtuelle Gerät nicht ausgeführt wird und für den Test zugewiesen werden kann.

Cloud-Orchestrated Devices auswählen

Abbildung 1 : Cloud-orchestrierte virtuelle Geräte auswählen.

Geräteaktionen hinzufügen

Wenn ein Test auf diesen Geräten geplant ist, fügt ATS automatisch die erforderlichen Geräteaktionen hinzu, um die Cuttlefish-Instanzen während des Testzyklus bereitzustellen und zu verwalten.

Automatische Geräteaktionen

Abbildung 2 : Automatische Geräteaktionen.

Testressourcen festlegen

Wenn Sie einen Test planen, müssen Sie die erforderlichen Testressourcen angeben. Achten Sie im Abschnitt Testressourcen festlegen darauf, dass Sie die hochgeladenen Dateien den richtigen Ressourcennamen zuordnen:

  • Ordnen Sie das Host-Tool-Paket, z. B. cvd-host_package.tar.gz, dem Namen cvd_host_package zu.
  • Ordnen Sie die Gerätebild-Zip-Datei dem Namen cvd_device_image zu.

Testressourcen für die Cloud-Orchestrierung

Abbildung 3 : Testressourcen zuordnen.

Testläufe und Logs ansehen

Nach Abschluss des Tests können Sie die Logs im Abschnitt „Ausgabedateien“ ansehen. Zu den spezifischen Logs, die für von Cloud Orchestrator verwaltete Instanzen erfasst werden, gehören:

  • launcher.log: Logs vom Cuttlefish-Launcher
  • kernel.log: Standard-Android-Kernel-Log