Android 9 Satıcı Test Paketi (VTS), söz konusu cihaz hedefi için hangi VTS testlerinin atlanması gerektiğini belirlemek üzere cihaz yapılandırmasını kullanmaya yönelik bir çalışma zamanı yöntemini destekler.
VTS testi esnekliği
Android 8.0'dan itibaren, Android 8.0 ve sonraki sürümleriyle başlatılan tüm cihazlar için VTS testleri gereklidir. Ancak tüm VTS testleri tüm cihaz hedeflerine uygulanmaz. Örneğin:
- Belirli bir cihaz bir HAL testini (örn. IR) desteklemiyorsa, VTS'nin söz konusu HAL testi için söz konusu cihaz hedefine yönelik testler yapmasına gerek yoktur.
- Birkaç cihaz aynı SoC'yi ve satıcı görüntüsünü paylaşıyor ancak farklı donanım işlevlerine sahipse, VTS'nin belirli bir cihaz hedefi için bir testin çalıştırılması mı yoksa atlanması mı gerektiğini belirlemesi gerekir.
VTS test türleri
VTS aşağıdaki test türlerini içerir:
- Uyumluluk testleri, çerçeve ve satıcı bölümleri arasındaki uyumluluğu sağlar. Bu testlerin Android 8.0 veya sonraki sürümlerle başlatılan cihazlarda çalıştırılması (ve geçilmesi) gerekir.
- Uygunsuzluk testleri, satıcıların ürün kalitesini (performans/tüylenme vb.) iyileştirmelerine yardımcı olur. Bu testler satıcılar için isteğe bağlıdır.
Bir testin uygunluk testi olup olmadığı hangi plana ait olduğuna bağlıdır. VTS planıyla yürütülen testler uyumluluk testleri olarak kabul edilir.
Desteklenen HAL'leri belirleyin
VTS, cihaz hedefinin belirli bir HAL'yi destekleyip desteklemediğini belirlemek için aşağıdaki dosyaları kullanabilir:
-
/system/compatibility_matrix.xml
. Çerçevenin gerektirdiği HAL örneklerini talep eder. Örnek:<hal format="hidl" optional="true"> <name>android.hardware.vibrator</name> <version>1.0-1</version> <interface> <name>IVibrator</name> <instance>default</instance> </interface> </hal>
-
optional
öznitelik, HAL'in çerçeve tarafından kesinlikle gerekli olup olmadığını belirtir. - Dosya aynı HAL için (aynı adla), ancak farklı sürüm ve arayüzlere sahip birden fazla giriş içerebilir.
- Dosya, aynı giriş için birden fazla
version
yapılandırması içerebilir; bu, çerçevenin farklı sürümlerle çalışabileceğini gösterir. -
version1.0-1
, çerçevenin en düşük sürüm 1.0 ile çalışabileceği ve 1.1'den daha yüksek bir sürüm gerektirmediği anlamına gelir.
-
- Cihaz
manifest.xml
. Satıcı tarafından sağlanan HAL örneklerini talep eder. Örnek:<hal format="hidl"> <name>android.hardware.vibrator</name> <transport>hwbinder</transport> <version>1.2</version> <interface> <name>IVibrator</name> <instance>default</instance> </interface> </hal>
- Dosya aynı HAL için (aynı adla), ancak farklı sürüm ve arayüzlere sahip birden fazla giriş içerebilir.
- Dosya bir giriş için yalnızca tek bir
version
yapılandırması içeriyorsaversion1.2
, satıcının 1.0~1.2 arasındaki tüm sürümleri desteklediği anlamına gelir.
- Ishal .
hwservicemanager
kayıtlı HAL hizmetleri hakkında çalışma zamanı bilgilerini gösteren, cihazdaki bir araç. Örnek:android.hardware.vibrator@1.0::IVibrator/default
lshal
ayrıca doğrudan geçiş uygulamaları olan (yani cihazda karşılık gelen-impl.so
dosyasına sahip) tüm HAL'leri gösterir. Örnek:android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/) android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
Uygunluk testleri
Uyumluluk testleri için VTS, cihaz tarafından sağlanan tüm HAL örneklerini belirlemek (ve test etmek) için satıcı bildirimine güvenir. Karar akışı:
Uygunsuzluk testleri
Uygunsuzluk testleri için VTS, manifest.xml
dosyasında talep edilmeyen deneysel HAL'leri belirlemek (ve test etmek) için satıcı bildirimine ve lshal
çıktılarına güvenir. Karar akışı:
Satıcı bildirimini bulun
VTS, satıcı manifest.xml
dosyasını aşağıdaki yerlerde aşağıdaki sırayla kontrol eder:
-
/vendor/etc/vintf/manifest.xml
+ ODM bildirimi (Her iki yerde de aynı HAL tanımlanmışsa, ODM bildirimi/vendor/etc/vintf/manifest.xml
içindekini geçersiz kılar) -
/vendor/etc/vintf/manifest.xml
- Aşağıdaki dosyalardan aşağıdaki sırayla yüklenen ODM
manifest.xml
dosyası:-
/odm/etc/vintf/manifest_$(ro.boot.product.hardware.sku).xml
-
/odm/etc/vintf/manifest.xml
-
/odm/etc/manifest_$(ro.boot.product.hardware.sku).xml
-
/odm/etc/manifest.xml
-
/vendor/manifest.xml
-
VTS test edilebilirlik denetleyicisi
vts_testibility_checker
, VTS ile paketlenmiş bir ikili dosyadır ve belirli bir HAL testinin test edilebilir olup olmadığını belirlemek için çalışma zamanında VTS test çerçevesi tarafından kullanılır. Satıcı bildirim dosyasını yüklemek ve ayrıştırmak için libvintf
temel alır ve önceki bölümde açıklanan karar akışını uygular.
vts_testability_check
kullanmak için:
- Uyumluluk testi için:
vts_testability_check -c -b <bitness> <hal@version>
- Uygunsuzluk testi için:
vts_testability_check -b <bitness> <hal@version>
vts_testability_check
çıktısı aşağıdaki json formatını kullanır:
{testable: <True/False> Instances: <list of instance names of HAL service>}
Erişilen HAL'leri belirleme
VTS testleri tarafından hangi HAL'lere erişildiğini belirlemek için her HAL testinin, testte erişilen HAL'leri kaydetmek için VtsHalHidlTargetTestEnvBase
şablonunu kullandığından emin olun. VTS test çerçevesi daha sonra testin ön işlenmesi sırasında kayıtlı HAL'leri çıkarabilir.
Uyumluluk testleri için /system/etc/vintf/manifest.xml
da kontrol edebilirsiniz. Burada bir HAL tanımlanmışsa VTS'nin bunu test etmesi gerekir. (Sistem tarafından sağlanan HAL hizmetleri için (örneğin, graphics.composer/vr
), HAL'ler /system/manifest.xml
dosyasında bildirilir.)