Android 9 Vendor Test Suite (VTS), cihaz yapılandırmasını kullanarak hangi VTS testlerinin atlanması gerektiğini belirlemek için bir çalışma zamanı yöntemini destekler.
VTS test esnekliği
Android 8.0'dan itibaren, Android 8.0 ve sonraki sürümlerle kullanıma sunulan tüm cihazlar için VTS testleri zorunludur. Ancak tüm VTS testleri tüm cihaz hedefleri için geçerli değildir. Örneğin:
- Belirli bir cihaz bir test HAL'sini (ör. IR) desteklemiyorsa VTS'nin bu HAL testine yönelik testleri söz konusu cihaz hedefinde çalıştırması gerekmez.
- Aynı çip üzerinde sistemi ve satıcı görüntüsünü paylaşan ancak farklı donanım işlevlerine sahip birden fazla cihaz varsa VTS, belirli bir cihaz hedefi için testin çalıştırılıp çalıştırılmaması gerektiğini belirlemelidir.
VTS test türleri
VTS aşağıdaki test türlerini içerir:
- Uygunluk testleri, çerçeve ile tedarikçi bölümleri arasındaki uyumluluğu sağlar. Bu testlerin, Android 8.0 veya sonraki sürümlerle kullanıma sunulan cihazlarda çalıştırılması (ve geçilmesi) gerekir.
- Uygunluk dışı testleri, satıcıların ürün kalitesini (performans/bulanıklaştırma vb.) iyileştirmesine 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ı ile çalışan testler uygunluk testleri olarak kabul edilir.
Desteklenen HAL'leri belirleme
VTS, hedef cihazın 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
özelliği, HAL'ın çerçeve tarafından kesinlikle gerekli olup olmadığını gösterir.- Dosya, aynı HAL için (aynı adla) ancak farklı sürüm ve arayüzlerle 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 1.0 sürümüyle çalışabileceği ve 1.1'den daha yüksek bir sürüm gerektirmediği anlamına gelir.
- Cihaz
manifest.xml
. Tedarikçi 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üzlerle birden fazla giriş içerebilir.
- Dosya, bir giriş için yalnızca tek bir
version
yapılandırması içeriyorsaversion1.2
, tedarikçinin 1.0-1.2 arasındaki tüm sürümleri desteklediği anlamına gelir.
- lshal. Cihazda,
hwservicemanager
ile kaydedilen HAL hizmetleri hakkında çalışma zamanı bilgilerini gösteren bir araç. Örnek:android.hardware.vibrator@1.0::IVibrator/default
lshal
, geçiş uygulamalarıyla (yani cihazda ilgili-impl.so
dosyası bulunan) tüm HAL'leri de gösterir. Örnek:android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/) android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
Uygunluk testleri
VTS, uygunluk testleri için cihaz tarafından sağlanan tüm HAL örneklerini belirlemek (ve test etmek) üzere satıcı manifestine güvenir. Karar akışı:
Uygunluk dışı testler
VTS, uygunluk testleri için lshal
dosyasında belirtilmeyen deneysel HAL'leri belirlemek (ve test etmek) amacıyla tedarikçi manifestosunu ve lshal
çıktılarını kullanır.manifest.xml
Karar akışı:
Tedarikçi manifestini bulma
VTS, satıcı manifest.xml
dosyasını aşağıdaki yerlerde ve sırayla kontrol eder:
/vendor/etc/vintf/manifest.xml
+ ODM manifesti (Aynı HAL her iki yerde de tanımlanmışsa ODM manifesti,/vendor/etc/vintf/manifest.xml
içindeki manifesti geçersiz kılar)/vendor/etc/vintf/manifest.xml
- Aşağıdaki dosyalardan şu 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 edilebilirliği kontrol aracı
vts_testibility_checker
, VTS ile birlikte paketlenmiş bir ikilidir ve belirli bir HAL testinin test edilebilir olup olmadığını belirlemek için VTS test çerçevesi tarafından çalışma zamanında kullanılır. Tedarikçi manifest dosyasını yüklemek ve ayrıştırmak için libvintf
temel alınır ve önceki bölümde açıklanan karar akışı uygulanır.
vts_testability_check
uygulamasını kullanmak için:
- Uygunluk 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
çıkışı aşağıdaki JSON biçimini 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 üzere VtsHalHidlTargetTestEnvBase
şablonunu kullandığından emin olun. VTS test çerçevesi, testi önceden işlerken kayıtlı HAL'leri çıkarabilir.
Uygunluk testleri için /system/etc/vintf/manifest.xml
bölümünü de inceleyebilirsiniz. Burada bir HAL tanımlanmışsa VTS bunu test etmelidir. (Sistem tarafından sağlanan HAL hizmetleri (ör. graphics.composer/vr
) için HAL'ler /system/manifest.xml
içinde tanımlanır.)