HAL test edilebilirlik kontrolü

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çeriyorsa version1.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ışı:

Uygunluk için test edilebilirlik kontrolü

Şekil 1. VTS uygunluk testleri için test edilebilirlik kontrolü

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ışı:

Uygunsuzluk için test edilebilirlik kontrolü

Şekil 2. VTS'ye uygun olmayan testler için test edilebilirlik kontrolü

Tedarikçi firma manifestini bulma

VTS, tedarikçi firma manifest.xml dosyasını aşağıdaki sırayla aşağıdaki yerlerde kontrol eder:

  1. /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)
  2. /vendor/etc/vintf/manifest.xml
  3. Aşağıdaki dosyalardan aşağıdaki sırayla yüklenen ODM manifest.xml dosyası:
    1. /odm/etc/vintf/manifest_$(ro.boot.product.hardware.sku).xml
    2. /odm/etc/vintf/manifest.xml
    3. /odm/etc/manifest_$(ro.boot.product.hardware.sku).xml
    4. /odm/etc/manifest.xml
    5. /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.)