OmniLab ATS obsługuje wirtualne urządzenia 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, zainstaluj OmniLab ATS zgodnie z przewodnikiem użytkownika.
OmniLab ATS obsługuje urządzenia wirtualne w 2 trybach: lokalnym i zdalnym. W tabeli poniżej znajdziesz porównanie tych 2 trybów.
Lokalne urządzenia wirtualne | Zdalne urządzenia wirtualne |
---|---|
Działa na hostach roboczych ATS | Działa na hostach zdalnych, do których hosty robocze ATS mogą uzyskać dostęp za pomocą protokołu SSH. |
x86 | Może to być x86 lub ARM w zależności od architektury hosta. |
Łatwiejsza konfiguracja | Bardziej skomplikowana konfiguracja |
Lokalne i zdalne urządzenia wirtualne można włączać niezależnie. Szczegółowe informacje o poszczególnych trybach znajdziesz w tych artykułach:
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 Cuttlefish
Aby sprawdzić, czy niezbędne moduły jądra są załadowane, uruchom to polecenie:
sudo modprobe -a kvm tun vhost_net vhost_vsock
Uruchamianie OmniLab ATS na lokalnych urządzeniach wirtualnych
Zanim uruchomisz OmniLab ATS, upewnij się, że 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. Więcej informacji o zatrzymywaniu instancji Cuttlefish znajdziesz w artykule Zatrzymywanie Cuttlefish.
Aby włączyć lokalne urządzenia wirtualne, uruchom polecenie:
mtt start --max_local_virtual_devices N
N
to maksymalna liczba urządzeń wirtualnych, które OmniLab ATS może przydzielić jednocześnie. Domyślna liczba 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 nadal się nie uda, uruchom ponownie urządzenie.
Konfigurowanie zdalnych urządzeń wirtualnych
W tej sekcji opisaliśmy, jak skonfigurować OmniLab ATS na potrzeby zdalnych urządzeń wirtualnych.
Instalowanie zależności Cuttlefish
Aby zainstalować zależności Cuttlefish, wykonaj te czynności.
Zainstaluj pakiety Debiana na hoście zdalnym, wykonując czynności opisane w artykule Cuttlefish > Rozpoczęcie.
Skonfiguruj maksymalną liczbę urządzeń wirtualnych na hoście zdalnym, wykonując te czynności:
- Edytuj
/etc/default/cuttlefish-host-resources
z uprawnieniami roota. - Ustaw
num_cvd_accounts
na maksymalną liczbę urządzeń wirtualnych, które mają być dozwolone na tym hoście. - Uruchom
sudo systemctl restart cuttlefish-host-resources
. - Uruchom
ifconfig
i sprawdź liczbę interfejsówcvd-wtap-*
.
- Edytuj
Tworzenie konta SSH
Host OmniLab ATS łączy się z hostem zdalnym za pomocą protokołu SSH, dlatego musisz przygotować konto SSH na hoście zdalnym. OmniLab ATS manipuluje plikami w katalogu HOME, dlatego zalecamy utworzenie specjalnego konta.
Host OmniLab ATS wymaga pary kluczy SSH, aby zalogować się na hosta zdalnego bez hasła. Poniżej znajdziesz instrukcje konfigurowania kluczy SSH:
- Aby wygenerować klucz prywatny i klucz publiczny, uruchom
ssh-keygen
na hoście OmniLab ATS. - Prześlij i dołącz klucz publiczny do
~/.ssh/authorized_keys
na hoście zdalnym.
Jeśli Twoje konto SSH różni się od konta użytego do zainstalowania zależności Cuttlefish, aby umożliwić uruchomienie Cuttlefish na koncie SSH, uruchom to polecenie na hoście zdalnym:
sudo usermod -aG kvm,cvdnetwork,render $USER
Uruchamianie OmniLab ATS na zdalnych urządzeniach wirtualnych
Zanim uruchomisz OmniLab ATS, upewnij się, że 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. Więcej informacji o zatrzymywaniu instancji Cuttlefish znajdziesz w artykule Zatrzymywanie Cuttlefish.
Aby uzyskać lepszą wydajność, zalecamy skonfigurowanie hosta OmniLab ATS i hosta zdalnego w sieci lokalnej.
Aby włączyć zdalne urządzenia wirtualne, 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 hosta zdalnego.
N
to maksymalna liczba urządzeń wirtualnych, które OmniLab ATS może przydzielić jednocześnie.
KEY
to ścieżka do prywatnego klucza SSH na hoście OmniLab ATS.
Polecenie testuje połączenie z hostem zdalnym przed uruchomieniem OmniLab ATS.
Jeśli w konsoli pojawi się komunikat ostrzegawczy, np.
The specified --remote_virtual_devices and --remote_ssh_key are invalid.
sprawdź konfigurację SSH.
Aby uniknąć konfliktów zasobów, host OmniLab ATS może łączyć się z maksymalnie 1 hostem zdalnym. Wiele hostów OmniLab ATS nie może łączyć się z jednym hostem zdalnym w tym samym czasie.
Przeprowadzanie testu na urządzeniach wirtualnych
W tej sekcji znajdziesz instrukcje przeprowadzania testów na lokalnych lub zdalnych urządzeniach wirtualnych.
Wybierz urządzenia
Na liście urządzeń OmniLab ATS wyświetla urządzenia wirtualne jako symbole zastępcze zamiast ich rzeczywistych numerów seryjnych. W przypadku lokalnych urządzeń wirtualnych symbole zastępcze są wyświetlane w formacie HOSTNAME:local-virtual-device-ID, a w przypadku zdalnych urządzeń wirtualnych – remote-virtual-ADDRESS-ID. Stany to Dostępne lub Przydzielone. Symbol zastępczy w stanie Dostępny oznacza, że urządzenie wirtualne nie jest uruchomione i można je przydzielić do testu.
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 do tworzenia urządzeń wirtualnych.
Rysunek 2. Działania na urządzeniach wirtualnych w sieci lokalnej
Rysunek 3. Działania 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 typowym kompilacji Cuttlefish (np. aosp_cf_x86_64_only_phone-userdebug
na ci.android.com) narzędzia maszyny wirtualnej są spakowane w cvd-host_package.tar.gz
, a obrazy znajdują się w aosp_cf_x86_64_only_phone-img-*.zip
. Plik binarny Acloud jest tworzony w OmniLab ATS i jest zgodny ze wszystkimi wersjami Cuttlefish. Domyślny adres URL pobierania pliku binarnego Acloud należy zmieniać tylko na potrzeby debugowania.
Rysunek 4. Zasoby testowe dla urządzeń wirtualnych
Wyświetlanie uruchomień testów
Dzienniki urządzenia, w tym kernel.log
, host_log.txt
i launcher.log
, są zbierane w folderze plików wyjściowych. Aby je wyświetlić, kliknij View Output Files (Wyświetl pliki wyjściowe).
Rysunek 5. Wyniki testu