Android 9 zapewnia możliwość uzyskania dostępu do usługi nazwa danej instancji HAL na podstawie urządzenia, na którym Vendor Test Suite Trwają testy VTS. Przeprowadzam testy HAL VTS, które rozpoznają nazwy usługi pozwala programistom na automatyzację testowania rozszerzeń dostawców, wielu HAL oraz wiele instancji HAL podczas testów VTS po stronie miejsca docelowego i hosta.
Informacje o nazwach usług
Każda instancja uruchomionej usługi HAL rejestruje się przy użyciu nazwy usługi.
W poprzednich wersjach Androida deweloperzy przeprowadzający testy VTS HAL byli
wymagane do ustawienia prawidłowej nazwy usługi dla klienta testowego w
getService()
lub pozostaw nazwę pustą i użyj wartości domyślnej
nazwa usługi. Wady tego podejścia obejmują:
- Wybór odpowiedniej usługi polegał na wiedzy programisty testu imię i nazwisko.
- Domyślnie ograniczone do testowania w jednej instancji usługi.
- ręczną konserwację nazw usług (np. gdy nazwy są zakodowane na stałe, jeśli nazwa usługi się zmieni, trzeba będzie zaktualizować ją ręcznie.
W Androidzie 9 deweloperzy mogą automatycznie pobierać nazwa usługi dla danej instancji HAL określona na podstawie testowanego urządzenia. Zalety tej metody obejmują możliwość testowania:
- Rozszerzenia HAL dostawców. Jeśli na przykład dostawca ma wdrożenie interfejsu HAL Camera.provider, który działa na urządzeniach dostawców z dostosowana nazwa usługi, VTS może zidentyfikować instancję dostawcy i uruchomić test i ochrony danych.
- Wiele instancji HAL. Na przykład, gdy tag
HAL
graphics.composer
ma 2 instancje (jedną z nazwą usługi) „domyślnie” i jednej o nazwie usługi „vr”), VTS może identyfikować zarówno instancje, przeprowadź test na każdej z nich. - Testowanie wielu HAL. Używany podczas testowania wielu HAL z użyciem w wielu instancjach, np. przy uruchamianiu testu VTS, który sprawdza, klucz HAL i sterownik HAL współpracują ze sobą, VTS może testować wszystkie kombinacje instancji usług dla tych HAL.
Testy po stronie docelowej
Aby włączyć świadomość nazwy usługi na potrzeby testów po stronie docelowej, Android
9 obejmuje środowisko testowe z możliwością dostosowania.
(VtsHalHidlTargetTestEnvBase
)
który udostępnia interfejsy do:
- Zarejestruj HAL kierowania w teście.
- Wymień wszystkie zarejestrowane HAL.
- Pobieranie nazw usług dla zarejestrowanych HAL udostępnianych przez platformę VTS.
Platforma VTS zapewnia też obsługę tych obszarów w czasie działania:
- Wstępne przetwarzanie testowego pliku binarnego w celu pobrania wszystkich zarejestrowanych wartości HAL testowych.
- Identyfikowanie wszystkich działających instancji usługi i pobieranie nazwy usługi dla
każdej instancji (pobrane na podstawie parametru
vendor/manifest.xml
). - Obliczam wszystkie kombinacje instancji (na potrzeby obsługi wielu HAL testowanie).
- Generowanie nowego testu dla każdej instancji usługi (kombinacji).
Przykład:
Konfigurowanie testów po stronie docelowej z uwzględnieniem nazw usług
Aby skonfigurować środowisko testowe na potrzeby testowania nazw usług po stronie docelowej:
- Zdefiniuj
testEnvironment
na podstawieVtsHalHidlTargetTestEnvBase
i zarejestruj testowe wartości HAL:#include <VtsHalHidlTargetTestEnvBase.h> class testEnvironment : public::testing::VtsHalHidlTargetTestEnvBase { virtual void registerTestServices() override { registerTestService<IFoo>(); } };
- Aby zdać, użyj pakietu
getServiceName()
udostępnionego przez środowisko testowe nazwa usługi:::testing::VtsHalHidlTargetTestBase::getService<IFoo>(testEnv->getServiceName<IFoo>("default")); // "default" is the default service name you want to use.
- Zarejestruj środowisko testowe w systemie
main()
iinitTest
:int main(int argc, char** argv) { testEnv = new testEnvironment(); ::testing::AddGlobalTestEnvironment(testEnv); ::testing::InitGoogleTest(&argc, argv); testEnv->init(argc, argv); return RUN_ALL_TESTS(); }
Dodatkowe przykłady znajdziesz tutaj:
VtsHalCameraProviderV2_4TargetTest.cpp
Testy VTS po stronie hosta
Testy po stronie hosta VTS uruchamiają skrypty testowe po stronie hosta zamiast testowych plików binarnych na urządzeniu docelowym. Aby włączyć świadomość nazwy usługi w tych testach, możesz: użyj szablonów po stronie hosta, aby wielokrotnie uruchamiać ten sam skrypt testowy różne parametry (podobne do testu z parametrami gtest).
- Skrypt hal test określa wartość HAL kierowania. usług objętych testem.
-
hal_hidl_host_test
(podklasaparam_test
) pobiera zarejestrowane HAL do testów z skrypt testowy, identyfikuje odpowiednie nazwy usług dla testowej listy HAL, a następnie generuje kombinacje nazw usług (na potrzeby testowania wielu HAL) w ramach testu . Udostępnia też metodęgetHalServiceName()
, która zwraca odpowiednią nazwę usługi zgodnie z parametrem przekazanym do w bieżącym przypadku testowym. - param_test pozwala na akceptowanie listy parametrów i uruchamianie w przypadku poszczególnych parametrów. Na przykład dla każdego przypadku testowego generuje N nowych z parametrami przypadku testowego (N = rozmiar parametrów), każdy z określonym .
Konfigurowanie testów po stronie hosta z uwzględnieniem nazwy usługi
Aby skonfigurować środowisko testowe pod kątem testowania nazw usług po stronie hosta:
- Określ docelową usługę HAL w skrypcie testowym:
TEST_HAL_SERVICES = { "android.hardware.foo@1.0::IFoo" }
- Zadzwoń do użytkownika
getHalServiceName()
i przekaż nazwę, aby zainicjować halę:self.dut.hal.InitHidlHal( target_type='foo', target_basepaths=self.dut.libPaths, target_version=1.0, target_package='android.hardware.foo', target_component_name='IFoo', hw_binder_service_name =self.getHalServiceName("android.hardware.foo@1.0::IFoo"), bits=int(self.abi_bitness))
Dodatkowe przykłady znajdziesz tutaj:
VtsHalMediaOmxStoreV1_0HostTest.py
Rejestrowanie testowych HAL
W poprzednich wersjach Androida narzędzie VTS określało testową HAL na podstawie
<precondition-lshal>
opcja skonfigurowana w
AndroidTest.xml
Takie podejście było trudne w obsłudze (ponieważ
poprawnie skonfigurować test i zaktualizować
konfiguracji) i niedokładną (ponieważ zawierała tylko pakiet
i wersji, a nie interfejsu).
W Androidzie 9 VTS identyfikuje test HAL za pomocą świadomości nazwy usługi. Zarejestrowane wartości HAL testów są też przydatne w przypadku:
- Kontrole warunków wstępnych. Przed przeprowadzeniem testu HAL usługa VTS może Sprawdź, czy test HAL jest dostępny na urządzeniu docelowym i pomiń testy jeśli nie jest (patrz VTS) sprawdzenie możliwości testowania).
- Pomiar pokrycia. VTS obsługuje kod międzyprocesowy pomiar pokrycia przez wiedzę na temat testowania usług HAL, których chce używać do pomiaru (tzn. usuwania pokrycia w ramach procesu obsługi hal).