Urządzenia wirtualne w systemie OmniLab ATS

OmniLab ATS obsługuje urządzenia wirtualne Cuttlefish, które umożliwiają przeprowadzanie testów bez fizycznych urządzeń z Androidem. Cuttlefish nadaje się do testowania funkcji niezależnych od sprzętu. Zanim zaczniesz korzystać z urządzeń wirtualnych, postępuj zgodnie z przewodnikiem użytkownika, aby zainstalować OmniLab ATS.

OmniLab ATS obsługuje urządzenia wirtualne w 2 trybach: lokalnym i zdalnym. Poniższa tabela zawiera porównanie tych dwóch trybów.

Lokalne urządzenia wirtualne Zdalne wirtualne urządzenia
działa na hostach roboczych ATS; działa na hostach zdalnych, do których host roboczy ATS może uzyskać dostęp przez SSH
Bazujące na procesorach x86 Może to być architektura x86 lub ARM w zależności od architektury hosta.
Łatwiejsza konfiguracja trudniejsza konfiguracja,

Lokalne i zdalne urządzenia wirtualne można włączać niezależnie. Szczegółowe informacje o każdym trybie:

Konfigurowanie lokalnych urządzeń wirtualnych

W tej sekcji opisano czynności, które należy wykonać, aby skonfigurować OmniLab ATS na potrzeby lokalnych urządzeń wirtualnych.

Instalowanie zależności Cutletfish

Aby sprawdzić, czy wczytano niezbędne moduły jądra, uruchom to polecenie:

sudo modprobe -a kvm tun vhost_net vhost_vsock

Uruchamianie OmniLab ATS z lokalnymi urządzeniami wirtualnymi

Przed uruchomieniem OmniLab ATS sprawdź, czy wszystkie instancje Cuttlefish są zatrzymane. Podczas cyklu testowania OmniLab ATS automatycznie uruchamia i zatrzymuje urządzenia wirtualne, a istniejące instancje Cuttlefish są w konflikcie z instancjami zarządzanymi przez OmniLab ATS. Szczegółowe informacje o zatrzymywaniu instancji Cuttlefish znajdziesz w artykule Zatrzymywanie Cuttlefish.

Aby włączyć lokalne urządzenia wirtualne, uruchom:

mtt start --max_local_virtual_devices N

N to maksymalna liczba urządzeń wirtualnych, które OmniLab ATS może jednocześnie przydzielić. Wartość domyślna to 0.

Jeśli polecenie nie powiedzie się z powodu braku węzłów urządzenia, wykonaj czynności opisane w komunikacie o błędzie, aby załadować moduły jądra. Jeśli problem nie ustąpi, uruchom ponownie komputer.

Konfigurowanie zdalnych urządzeń wirtualnych

W tej sekcji opisano czynności, które należy wykonać, aby skonfigurować OmniLab ATS dla zdalnych urządzeń wirtualnych.

Zainstaluj zależności mątwy

Aby zainstalować zależności Cuttlefish, wykonaj te czynności.

  1. Zainstaluj pakiety Debiana na zdalnym hoście, wykonując czynności opisane w sekcji Cuttlefish > Pierwsze kroki.

  2. Skonfiguruj maksymalną liczbę urządzeń wirtualnych na hoście zdalnym, wykonując te czynności:

    1. Edytuj /etc/default/cuttlefish-host-resources z uprawnieniami root.
    2. Ustaw wartość parametru num_cvd_accounts na maksymalną liczbę urządzeń wirtualnych, które mają być dozwolone na tym hoście.
    3. Uruchom sudo systemctl restart cuttlefish-host-resources.
    4. Uruchom ifconfig i sprawdź liczbę interfejsów cvd-wtap-*.

Utwórz konto SSH

Ponieważ host OmniLab ATS łączy się z hostem zdalnym przez SSH, musisz przygotować konto SSH na hoście zdalnym. Ponieważ OmniLab ATS manipuluje plikami w katalogu DOM, zalecamy utworzenie dedykowanego konta.

Host usługi OmniLab ATS wymaga pary kluczy SSH do logowania się na hosta zdalnego bez hasła. Aby skonfigurować klucze SSH, wykonaj te czynności:

  1. Aby wygenerować klucz prywatny i publiczny, uruchom ssh-keygen na hoście OmniLab ATS.
  2. Prześlij klucz publiczny i dodaj go do pliku ~/.ssh/authorized_keys na hoście zdalnym.

Jeśli Twoje konto SSH jest inne niż konto użyte do zainstalowania zależności Cuttlefish, aby umożliwić temu pierwszemu uruchamianie Cuttlefish, uruchom to polecenie na hoście zdalnym:

sudo usermod -aG kvm,cvdnetwork,render $USER

Uruchamianie systemu OmniLab ATS przy użyciu zdalnych urządzeń wirtualnych

Przed uruchomieniem OmniLab ATS sprawdź, czy wszystkie instancje Cuttlefish 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. Szczegółowe informacje na temat zatrzymywania instancji Cuttlefish znajdziesz w artykule Zatrzymywanie mątwy.

Aby uzyskać lepszą wydajność, zalecamy skonfigurowanie hosta usługi ATS w OmniLab i hosta zdalnego w sieci lokalnej.

Aby włączyć urządzenia wirtualne zdalnie, uruchom to polecenie na hoście OmniLab ATS:

mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEY

USER to nazwa konta SSH.

HOST to adres IPv4 zdalnego hosta.

N to maksymalna liczba urządzeń wirtualnych, które OmniLab ATS może jednocześnie przydzielić.

KEY to ścieżka do prywatnego klucza SSH na hoście OmniLab ATS.

Polecenie przetestować połączenie z hostem zdalnym przed uruchomieniem OmniLab ATS. Jeśli na konsoli pojawi się komunikat ostrzeżenia, taki jak The specified --remote_virtual_devices and --remote_ssh_key are invalid. na konsoli, sprawdź konfigurację SSH.

Aby uniknąć konfliktów zasobów, host usługi ATS w OmniLab może łączyć się z maksymalnie 1 hostem zdalnym. Wiele hostów OmniLab ATS nie może połączyć się jednocześnie z 1 hostem zdalnym.

Wykonywanie testu na urządzeniach wirtualnych

W tej sekcji opisano, jak przeprowadzić test na lokalnych lub zdalnych urządzeniach wirtualnych.

Wybierz urządzenia

OmniLab ATS wyświetla urządzenia wirtualne na liście urządzeń jako obiekty zastępcze, a nie ich faktyczne numery seryjne. W przypadku urządzeń wirtualnych lokalnych migacze są wyświetlane w formacie NAZWA-HOSTA:identyfikator-lokalnego-urządzenia-wirtualnego, a w przypadku urządzeń wirtualnych zdalnych – w formacie identyfikator-adresu-urządzenia-wirtualnego. Dostępne stany to Dostępne lub Przydzielone. Zastępnik w stanie Dostępny oznacza, że urządzenie wirtualne nie działa i może zostać przydzielone do testu.

Wybierz urządzenia wirtualne

Rysunek 1. Wybieranie urządzeń wirtualnych

Dodawanie działań na urządzeniu

Jeśli wybierzesz co najmniej 1 urządzenie wirtualne, powiązane z nim działanie powinno zostać automatycznie dodane do listy. Działanie składa się z wymaganych parametrów TradeFed i zasobów testowych, które służą do tworzenia urządzeń wirtualnych.

Działania na lokalnym urządzeniu wirtualnym

Rysunek 2. Działania na urządzeniach w przypadku lokalnych urządzeń wirtualnych

Zdalne czynności na wirtualnym urządzeniu

Rysunek 3. Czynności na urządzeniach wirtualnych zdalnych

Ustawianie zasobów testowych

Urządzenia wirtualne Cuttlefish wymagają 3 zasobów testowych: narzędzi maszyny wirtualnej, obrazów i Acloud. W typowej kompilacji Cuttlefish (np. aosp_cf_x86_64_phone na ci.android.com) narzędzia maszyn wirtualnych są zapakowane w cvd-host_package.tar.gz, a obrazy w aosp_cf_x86_64_phone-img-*.zip. Plik binarny Acloud jest tworzony w OmniLab ATS i jest zgodny ze wszystkimi wersjami Cuttlefish. Domyślny adres URL do pobrania pliku binarnego Acloud musi zostać zmieniony tylko na potrzeby debugowania.

Zasoby do testowania urządzeń wirtualnych

Rysunek 4. Testowanie zasobów na urządzeniach wirtualnych

Wyświetl uruchomienia testowe

Logi urządzenia, w tym kernel.log, host_log.txtlauncher.log, są zbierane w folderze plików wyjściowych. Aby je wyświetlić, kliknij Wyświetl pliki wyjściowe.

Wyniki testu

Rysunek 5. Wyniki testu