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, zainstaluj OmniLab ATS zgodnie z instrukcją.
OmniLab ATS obsługuje urządzenia wirtualne w 3 trybach: lokalnym, zdalnym i administracji w chmurze. Poniższa tabela zawiera porównanie tych trybów.
| Lokalne urządzenia wirtualne | Zdalne urządzenia wirtualne | Administracja w chmurze |
|---|---|---|
| Działa na hostach roboczych ATS | Działa na hostach zdalnych, do których hosty robocze ATS mogą uzyskać dostęp przez SSH | Działa na hostach lokalnych lub zdalnych zarządzanych przez Cloud Orchestrator |
| x86 | W zależności od architektury hosta może to być x86 lub ARM | W zależności od architektury hosta może to być x86 lub ARM |
| Łatwiejsza konfiguracja | Bardziej skomplikowana konfiguracja | Wysoka wydajność, skalowalność, obsługa równoległego uruchamiania instancji |
Możesz niezależnie włączyć tryby lokalnych i zdalnych urządzeń wirtualnych. Możesz też włączyć orkiestrację w chmurze, która jest nowoczesnym rozwiązaniem zapewniającym pełną zgodność funkcji z obydwoma trybami oraz kluczowe zalety, takie jak równoległe uruchamianie instancji i lepsza izolacja zasobów. Więcej informacji o poszczególnych trybach znajdziesz w tych artykułach:
- Konfigurowanie lokalnych urządzeń wirtualnych
- Konfigurowanie zdalnych urządzeń wirtualnych
- Konfigurowanie urządzeń wirtualnych zarządzanych w chmurze
Konfigurowanie lokalnych urządzeń wirtualnych
W tej sekcji opisujemy, jak skonfigurować OmniLab ATS na potrzeby lokalnych urządzeń wirtualnych.
Instalowanie zależności Cuttlefish
Uruchom to polecenie, aby sprawdzić, czy załadowane są niezbędne moduły jądra:
sudo modprobe -a kvm tun vhost_net vhost_vsockUruchamianie OmniLab ATS z lokalnymi urządzeniami wirtualnymi
Zanim uruchomisz OmniLab ATS, zatrzymaj wszystkie instancje Cuttlefish. 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 to polecenie:
mtt start --max_local_virtual_devices NN to maksymalna liczba urządzeń wirtualnych, które OmniLab ATS może jednocześnie przydzielić. 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 problem będzie się powtarzał, uruchom ponownie komputer.
Konfigurowanie zdalnych urządzeń wirtualnych
W tej sekcji opisujemy, 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 > Pierwsze kroki.
Skonfiguruj maksymalną liczbę urządzeń wirtualnych na hoście zdalnym, wykonując te czynności:
- Edytuj plik
/etc/default/cuttlefish-host-resourcesz uprawnieniami roota. - Ustaw wartość
num_cvd_accountsna maksymalną liczbę urządzeń wirtualnych, które mają być dozwolone na tym hoście. - Uruchom polecenie
sudo systemctl restart cuttlefish-host-resources. - Uruchom polecenie
ifconfigi sprawdź liczbę interfejsówcvd-wtap-*.
- Edytuj plik
Tworzenie konta SSH
Ponieważ host OmniLab ATS łączy się z hostem zdalnym przez SSH, 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 logować się na hoście zdalnym bez hasła. Aby skonfigurować klucze SSH, wykonaj te czynności:
- Aby wygenerować klucz prywatny i klucz publiczny, uruchom polecenie
ssh-keygenna hoście OmniLab ATS. - Prześlij i dołącz klucz publiczny do pliku
~/.ssh/authorized_keysna hoście zdalnym.
Jeśli Twoje konto SSH różni się od konta używanego do instalowania zależności Cuttlefish, aby umożliwić uruchamianie Cuttlefish na koncie SSH, uruchom to polecenie na hoście zdalnym:
sudo usermod -aG kvm,cvdnetwork,render $USERUruchamianie OmniLab ATS ze zdalnymi urządzeniami wirtualnymi
Zanim uruchomisz OmniLab ATS, zatrzymaj wszystkie instancje Cuttlefish. 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 lokalnej sieci komputerowej.
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 KEYUSER to nazwa konta SSH.
HOST to adres IPv4 hosta zdalnego.
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.
Przed uruchomieniem OmniLab ATS polecenie sprawdza połączenie z hostem zdalnym.
Jeśli w konsoli pojawi się ostrzeżenie, 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 co najwyżej 1 hostem zdalnym. Wiele hostów OmniLab ATS nie może łączyć się z 1 hostem zdalnym w tym samym czasie.
Uruchamianie testu na urządzeniach wirtualnych
W tej sekcji opisujemy, jak uruchomić test na lokalnych lub zdalnych urządzeniach wirtualnych.
Wybieranie urządzeń
Na liście urządzeń OmniLab ATS wyświetla urządzenia wirtualne jako symbole zastępcze zamiast ich rzeczywistych numerów seryjnych. Symbole zastępcze są wyświetlane w formacie HOSTNAME:local-virtual-device-ID w przypadku lokalnych urządzeń wirtualnych oraz remote-virtual-ADDRESS-ID w przypadku zdalnych urządzeń wirtualnych. Stany to Dostępny lub Przydzielony. 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ądzeniach
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 lokalnych urządzeniach wirtualnych
Rysunek 3. Działania na zdalnych urządzeniach wirtualnych
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_only_phone-userdebug na
ci.android.com
) narzędzia maszyny wirtualnej są spakowane w pliku cvd-host_package.tar.gz, a
obrazy znajdują się w pliku aosp_cf_x86_64_only_phone-img-*.zip. Plik binarny Acloud jest wbudowany w OmniLab ATS i jest zgodny ze wszystkimi wersjami Cuttlefish. Domyślny adres URL pobierania pliku binarnego Acloud należy zmienić tylko na potrzeby debugowania.
Rysunek 4. Zasoby testowe dla urządzeń wirtualnych
Wyświetlanie uruchomień testów
Dzienniki urządzeń, w tym kernel.log, host_log.txt i launcher.log, są zbierane w folderze plików wyjściowych. Aby je zobaczyć, kliknij Wyświetl pliki wyjściowe.
Rysunek 5. Wyniki testu