Aplikacja Cloud Orchestration zapewnia wydajny i skalowalny sposób zarządzania instancjami Cuttlefish, szczególnie w przypadku urządzeń wirtualnych opartych na architekturze ARM (CHD). OmniLab ATS obsługuje Cloud Orchestration, dzięki czemu możesz przeprowadzać testy na urządzeniach wirtualnych. Zanim zaczniesz korzystać z urządzeń wirtualnych , zainstaluj OmniLab ATS, postępując zgodnie z instrukcjami w OmniLab Android Test Station.
Przegląd
Cloud Orchestration umożliwia OmniLab ATS delegowanie zarządzania instancjami Cuttlefish do specjalnej usługi Cloud Orchestrator. To podejście ma kilka zalet w porównaniu z dotychczasowymi trybami lokalnym i zdalnym, a jednocześnie zachowuje znajomy interfejs użytkownika:
- Równoległe uruchamianie instancji: umożliwia jednoczesne uruchamianie wielu instancji Cuttlefish, co znacznie skraca czas oczekiwania przed rozpoczęciem testów.
- Skalowalność: nadaje się do środowisk testowych na dużą skalę.
- Izolacja zasobów: oddziela środowisko wykonywania testów (ATS worker) od środowiska emulacji urządzenia.
Wymagania wstępne
- Komputer hosta, na którym można uruchomić Dockera
- Dostęp do obrazów Dockera z orkiestracją Cuttlefish
Konfigurowanie usługi Cloud Orchestrator
Usługa Cloud Orchestrator zarządza cyklem życia instancji Cuttlefish. Możesz wdrożyć usługę w różnych środowiskach. Obsługuje ona architektury x86 i ARM:
- Ten sam host co ATS worker: działa w kontenerze Dockera na tym samym komputerze.
- Oddzielny komputer: działa na serwerze lokalnym, na którym można uruchomić Dockera.
- Instancja w chmurze: działa na maszynie wirtualnej w środowisku chmurowym, np. w Google Compute Engine.
Instalowanie i konfigurowanie usługi
Aby uruchomić usługę, postępuj zgodnie z instrukcjami w pliku README usługi Cloud Android Orchestration.
Uwierzytelnianie i uprawnienia
Jeśli usługa Cloud Orchestrator działa na komputerze zdalnym, upewnij się, że host ATS worker ma uprawnienia niezbędne do uzyskania do niej dostępu za pomocą żądań HTTP. Jeśli połączenie HTTP jest niedozwolone, może być konieczne skonfigurowanie przekierowania portów SSH. Więcej informacji znajdziesz w artykule Wypróbuj Cloud Orchestrator.
Oczekiwany stan
Po pomyślnym uruchomieniu usługa Cloud Orchestrator powinna być dostępna za pomocą protokołu HTTP. Jej stan możesz sprawdzić, wysyłając zapytanie do interfejsu API:
- Pingowanie usługi: powinna być dostępna z hosta OmniLab ATS worker. Na przykład uruchomienie polecenia
curl -I http://localhost:8080/v1/zones/local/hostspowinno zwrócić odpowiedź HTTP z kodem powodzenia (HTTP/1.1 200 OKlub przekierowanie302 Founddo/username), co potwierdza, że usługa jest aktywna i dostępna.
Konfigurowanie OmniLab ATS na potrzeby Cloud Orchestration
Zanim uruchomisz OmniLab ATS, upewnij się, że wszystkie instancje Cuttlefish na hoście OmniLab ATS worker są zatrzymane. OmniLab ATS automatycznie uruchamia i zatrzymuje urządzenia wirtualne podczas cyklu testowego, a istniejące instancje Cuttlefish powodują konflikt z instancjami zarządzanymi przez OmniLab ATS. Więcej informacji o zatrzymywaniu instancji Cuttlefish znajdziesz w artykule Zatrzymywanie Cuttlefish.
Aby włączyć Cloud Orchestration w OmniLab ATS, podczas uruchamiania OmniLab ATS przekaż określone flagi:
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: ustawia maksymalną liczbę urządzeń wirtualnych zarządzanych przez Cloud Orchestrator, które OmniLab ATS może jednocześnie przydzielić. Domyślna liczba to 0.--orchestration_service_url: określa adres URL, na którym nasłuchuje usługa Cloud Orchestration, np.http://localhost:8080.--use_host_network: używa przestrzeni nazw sieci hosta na potrzeby kontenera. Jest to wymagane, aby uzyskać dostęp do usługi Cloud Orchestration.--force_ats_version 2: wymusza użycie OmniLab ATS 2.0, które jest wymagane w przypadku Cloud Orchestration. Więcej informacji znajdziesz w przewodniku uaktualniania do OmniLab ATS 2.0.--force_update: pobiera najnowszą kompilację kontenera z funkcjami ATS 2.0 i Cloud Orchestration.
Konfigurowanie specyfikacji sprzętowych urządzenia wirtualnego (opcjonalnie)
Domyślnie każda instancja urządzenia wirtualnego zarządzanego przez Cloud Orchestration jest wyposażona w 4 procesory i 8192 MB (8 GB) pamięci RAM. Podczas uruchamiania OmniLab ATS z Cloud Orchestration możesz dostosować liczbę rdzeni procesora i przydział pamięci dla instancji urządzeń wirtualnych, przekazując --android_jit_emulator_cpus i --android_jit_emulator_memory_mb do serwera laboratorium w poleceniu mtt start za pomocą --extra_docker_args:
mtt start --max_orchestration_virtual_devices N \
--orchestration_service_url=http://HOST:PORT \
--use_host_network \
--force_ats_version 2 \
--force_update \
--extra_docker_args '-e LAB_SERVER_OPTS="--android_jit_emulator_cpus=CPUS --android_jit_emulator_memory_mb=MEMORY_MB"'--android_jit_emulator_cpus: ustawia liczbę rdzeni procesora dla każdej instancji urządzenia wirtualnego. Jeśli nie jest ustawiona lub ma wartość ≤ 0, domyślnie przyjmuje wartość4.--android_jit_emulator_memory_mb: ustawia pamięć w megabajtach (MB) dla każdej instancji urządzenia wirtualnego. Jeśli nie jest ustawiona lub ma wartość ≤ 0, domyślnie przyjmuje wartość8192.
Przeprowadzanie testu na urządzeniach zarządzanych przez Cloud Orchestration
W tej sekcji opisujemy, jak przeprowadzić test na urządzeniach wirtualnych zarządzanych przez Cloud Orchestration.
Wybieranie urządzeń
Na liście urządzeń OmniLab ATS wyświetla urządzenia wirtualne zarządzane przez Cloud Orchestration jako symbole zastępcze zamiast ich rzeczywistych numerów seryjnych. Symbole zastępcze są wyświetlane
w formacie HOSTNAME:PORT (np.
thehostname:6520). Stany to Dostępne lub Przydzielone. Symbol zastępczy w stanie Dostępne oznacza, że urządzenie wirtualne nie działa i można je przydzielić do testu.
Rysunek 1. Wybieranie urządzeń wirtualnych zarządzanych przez Cloud Orchestration.
Dodawanie działań na urządzeniu
Gdy test jest zaplanowany na tych urządzeniach, ATS automatycznie dodaje wymagane działania na urządzeniu, aby udostępnić instancje Cuttlefish i zarządzać nimi podczas cyklu testowego.
Rysunek 2. Automatyczne działania na urządzeniu.
Ustawianie zasobów testowych
Podczas planowania testu musisz podać wymagane zasoby testowe. W sekcji Ustaw zasoby testowe upewnij się, że przesłane pliki są zmapowane na prawidłowe nazwy zasobów:
- Zmapuj pakiet narzędzi hosta, np.
cvd-host_package.tar.gz, na nazwęcvd_host_package. - Zmapuj plik ZIP z obrazem urządzenia na nazwę
cvd_device_image.
Rysunek 3. Mapowanie zasobów testowych.
Wyświetlanie przebiegów testów i logów
Po zakończeniu testu możesz wyświetlić logi w sekcji plików wyjściowych. Logi zbierane specjalnie w przypadku instancji zarządzanych przez Cloud Orchestrator:
launcher.log: logi z programu uruchamiającego Cuttlefish.kernel.log: standardowy log jądra Androida.