Urządzenia wirtualne w stacji testów Android

Stacja testowa Androida obsługuje urządzenia wirtualne Cuttlefish, które umożliwiają przeprowadzanie testów bez fizycznych urządzeń z Androidem. Mątwy nadaje się do testowania funkcji niezależnych od sprzętu. Zanim zaczniesz używać urządzeń wirtualnych, postępuj zgodnie z przewodnikiem użytkownika, aby zainstalować aplikację Android Test Station.

ATS obsługuje urządzenia wirtualne w 2 trybach: lokalnym i zdalnym. W tabeli poniżej znajdziesz porównanie 2 trybów.

Lokalne urządzenia wirtualne Zdalne urządzenia wirtualne
Uruchamia się na hostach instancji roboczych ATS działa na hostach zdalnych, do których host roboczy ATS może uzyskać dostęp przez SSH
Procesor x86 Może to być x86 lub ARM w zależności od architektury hosta
Łatwiejsza konfiguracja Konfiguracja jest bardziej skomplikowana

Lokalne i zdalne urządzenia wirtualne można włączać niezależnie. Szczegółowe informacje o poszczególnych trybach znajdziesz tutaj:

Konfigurowanie lokalnych urządzeń wirtualnych

W tej sekcji opisaliśmy, jak skonfigurować ATS dla lokalnych urządzeń wirtualnych.

Zainstaluj zależności mątwy

Uruchom to polecenie, by upewnić się, że niezbędne moduły jądra zostały załadowane:

sudo modprobe -a kvm tun vhost_net vhost_vsock

Uruchamianie aplikacji Android Test Station za pomocą lokalnych urządzeń wirtualnych

Przed uruchomieniem ATS upewnij się, że wszystkie instancje Cuttlefish zostały zatrzymane. ATS automatycznie uruchamia i zatrzymuje urządzenia wirtualne w trakcie cyklu testowego, a istniejące instancje Cuttlefish są w konflikcie z instancjami zarządzanymi przez ATS. Szczegółowe informacje o zatrzymywaniu instancji Cuttlefish znajdziesz w sekcji Zatrzymywanie mątwy.

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 usługa ATS może jednocześnie przydzielić. Wartość domyślna to 0.

Jeśli polecenie nie powiedzie się z powodu braku węzłów urządzeń, wykonaj czynności podane w komunikacie o błędzie, aby wczytać moduły jądra. Jeśli problem będzie nadal występował, uruchom ponownie komputer.

Konfigurowanie zdalnych urządzeń wirtualnych

W tej sekcji opisaliśmy, jak skonfigurować 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 hoście zdalnym, wykonując czynności opisane na stronie Cuttlefish > Pierwsze kroki.

  2. Aby skonfigurować maksymalną liczbę urządzeń wirtualnych na hoście zdalnym, wykonaj te czynności:

    1. Edytuj plik /etc/default/cuttlefish-host-resources z uprawnieniami użytkownika root.
    2. Ustaw num_cvd_accounts na maksymalną liczbę urządzeń wirtualnych dozwolonych 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

Host ATS łączy się z hostem zdalnym przez SSH, więc musisz przygotować konto SSH na hoście zdalnym. Ponieważ ATS modyfikuje pliki w katalogu HOME, zalecamy utworzenie dedykowanego konta.

Host ATS wymaga pary kluczy SSH, aby zalogować się do hosta zdalnego bez hasła. Poniższe kroki opisują, jak skonfigurować klucze SSH:

  1. Aby wygenerować klucz prywatny i klucz publiczny, uruchom ssh-keygen na hoście ATS.
  2. Prześlij i dołącz klucz publiczny do adresu ~/.ssh/authorized_keys na hoście zdalnym.

Jeśli Twoje konto SSH jest inne niż używane do instalowania zależności Cuttlefish, aby umożliwić kontu SSH uruchomienie Cuttlefish, uruchom to polecenie na hoście zdalnym:

sudo usermod -aG kvm,cvdnetwork,render $USER

Uruchamianie ATS ze zdalnymi urządzeniami wirtualnymi

Przed uruchomieniem ATS upewnij się, że wszystkie instancje Cuttlefish zostały zatrzymane. ATS automatycznie uruchamia i zatrzymuje urządzenia wirtualne w trakcie cyklu testowego, a istniejące instancje Cuttlefish są w konflikcie z instancjami zarządzanymi przez ATS. Szczegółowe informacje o zatrzymywaniu instancji Cuttlefish znajdziesz w sekcji Zatrzymywanie mątwy.

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

Aby włączyć zdalne urządzenia wirtualne, uruchom to polecenie na hoście 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 usługa ATS może jednocześnie przydzielić.

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

Polecenie przetestować połączenie z hostem zdalnym przed uruchomieniem ATS. Jeśli w konsoli wyświetli się komunikat ostrzegawczy, na przykład The specified --remote_virtual_devices and --remote_ssh_key are invalid., sprawdź konfigurację SSH.

Aby uniknąć konfliktów zasobów, host ATS może łączyć się maksymalnie z 1 hostem zdalnym. Z jednym hostem zdalnym nie można w tym samym czasie połączyć się z kilkoma hostami ATS.

Przeprowadzanie testów na urządzeniach wirtualnych

W tej sekcji dowiesz się, jak przeprowadzać testy na lokalnych lub zdalnych urządzeniach wirtualnych.

Wybierz urządzenia

System ATS wyświetla urządzenia wirtualne na liście urządzeń jako obiekty zastępcze, a nie ich faktyczne numery seryjne. Obiekty zastępcze mają format HOSTNAME:local-virtual-device-ID w przypadku lokalnych urządzeń wirtualnych; remote-virtual-ADDRESS-ID w przypadku zdalnych urządzeń wirtualnych. Dostępne stany to Dostępne lub Przydzielone. Obiekt zastępczy w stanie Dostępne oznacza, że urządzenie wirtualne nie jest uruchomione i można je przydzielić na potrzeby testu.

Wybierz urządzenia wirtualne

Rysunek 1. Wybieranie urządzeń wirtualnych

Dodaj działania 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.

Działania lokalne na urządzeniu wirtualnym

Rysunek 2. Działania na lokalnych urządzeniach wirtualnych

Działania na zdalnym urządzeniu wirtualnym

Rysunek 3. Działania na zdalnych urządzeniach wirtualnych

Ustawianie zasobów testowych

Urządzenia wirtualne Cuttlefish wymagają 3 zasobów testowych: maszyn wirtualnych, 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 wbudowany w procesor ATS i jest zgodny ze wszystkimi wersjami Cuttlefish. Domyślny URL pobierania pliku binarnego Acloud można zmienić tylko na potrzeby debugowania.

Zasoby do testowania urządzeń wirtualnych

Rysunek 4. Testowanie zasobów dla urządzeń wirtualnych

Wyświetl uruchomienia testowe

Logi urządzenia, w tym kernel.log, host_log.txt i launcher.log, są zbierane w folderze pliku wyjściowego. Aby je zobaczyć, kliknij Wyświetl pliki wyjściowe.

Wyniki biegu testowego

Rysunek 5. Wyniki testu