Android 9 Satıcı Testi Paketi (VTS), ilgili cihaz hedefi için hangi VTS testlerinin atlanması gerektiğini belirlemek amacıyla 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ü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. Örnek:
- Belirli bir cihaz test HAL'ini (ör. IR) desteklemiyorsa VTS'nin bu HAL testi için söz konusu cihaz hedefine yönelik testler çalıştırması gerekmez.
- Birkaç cihaz aynı SoC ve tedarikçi firma görüntüsünü paylaşıyorsa ancak farklı donanım işlevlerine sahipse VTS, belirli bir cihaz hedefi için bir testin çalıştırılıp çalıştırılmayacağını veya atlanıp atlanmayacağını belirlemelidir.
VTS test türleri
VTS aşağıdaki test türlerini içerir:
- Uyumluluk testleri, çerçeve ile tedarikçi firma bölümleri arasında uyumluluk sağlar. Bu testlerin, Android 8.0 veya sonraki sürümlerle kullanıma sunulan cihazlarda çalıştırılması (ve geçilmesi) gerekir.
- Uygunsuzluk testleri, tedarikçilerin ürün kalitesini (performans/karmaşıklaştırma vb.) iyileştirmesine yardımcı olur. Bu testler tedarikçiler için isteğe bağlıdır.
Testin uygunluk testi olup olmadığı, hangi plana ait olduğuna bağlıdır. VTS planıyla çalıştırılan testler uygunluk testleri olarak kabul edilir.
Desteklenen HAL'leri belirleme
VTS, cihaz hedefini belirli bir HAL'i destekleyip desteklemediğini belirlemek için aşağıdaki dosyaları kullanabilir:
/system/compatibility_matrix.xml
. Çerçeve tarafından istenen 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'in çerçeve tarafından zorunlu kılınıp kılınmadığını gösterir.- Dosya aynı HAL için aynı ada sahip, ancak sürümü ve arayüzleri farklı olan birden fazla giriş içerebilir.
- Dosyada aynı giriş için birden fazla
version
yapılandırması bulunabilir. Bu durum, ç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
. Tedarikçi firma 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 (aynı ada sahip) 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
, tedarikçi firmanın 1.0 ile 1.2 arasındaki tüm sürümleri desteklediği anlamına gelir.
- lshal.
hwservicemanager
'ye kayıtlı HAL hizmetleri hakkında çalışma zamanı bilgilerini gösteren cihazdaki bir araç. Örnek:android.hardware.vibrator@1.0::IVibrator/default
lshal
, geçiş uygulamalarına sahip tüm HAL'leri de gösterir (ör.cihazda ilgili-impl.so
dosyasına sahip). Ö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 tedarikçi firma manifestinden yararlanır. Karar akışı:
Uygunsuzluk testleri
VTS, uygunsuzluk testleri için manifest.xml
dosyasında hak talebinde bulunulmayan deneysel HAL'leri belirlemek (ve test etmek) amacıyla tedarikçi firma manifestini ve lshal
çıkışlarını kullanır. Karar akışı:
Tedarikçi firma manifestini bulma
VTS, tedarikçi firma manifest.xml
dosyasını aşağıdaki sırayla aşağıdaki yerlerde kontrol eder:
/vendor/etc/vintf/manifest.xml
+ ODM manifesti (Her iki yerde de aynı HAL tanımlanmışsa ODM manifesti,/vendor/etc/vintf/manifest.xml
'teki manifesti 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 kontrol aracı
vts_testibility_checker
, VTS ile paketlenmiş ve belirli bir HAL testinin test edilebilir olup olmadığını belirlemek için VTS test çerçevesi tarafından çalışma zamanında kullanılan bir ikili dosyadır. Tedarikçi manifest dosyasını yüklemek ve ayrıştırmak için libvintf
kullanır ve önceki bölümde açıklanan karar akışını uygular.
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 kaydettirmek amacıyla VtsHalHidlTargetTestEnvBase
şablonunu kullandığından emin olun. VTS test çerçevesi, testi ön işleme alırken kayıtlı HAL'leri ayıklayabilir.
Uygunluk testleri için /system/etc/vintf/manifest.xml
sayfasını da kontrol edebilirsiniz. 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 bildirilir.)