HAL test edilebilirlik kontrolü

Android 9 Tedarikçi Test Paketi (VTS), bir hangi VTS testlerinin belirlendiğini belirlemek üzere cihaz yapılandırmasını kullanmanın çalışma zamanı yöntemi o cihaz hedefi için atlanmalıdır.

VTS testi esnekliği

Android 8.0'dan itibaren VTS testleri, Android 8.0 ve sonraki sürümler. Ancak tüm VTS testleri her cihazda geçerli değildir belirler. Ö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:

  • Uygunluk testleri çerçeve arasında uyumluluğu sağlar bölümleri var. Bu testlerin, Android 8.0 veya sonraki sürümlerle kullanıma sunulan cihazlarda çalıştırılması (ve geçilmesi) gerekir.
  • Uyumsuzluk testleri, tedarikçilerin ürünü iyileştirmesine yardımcı olur kalite (performans/fuzzing vb.). Bu testler tedarikçi firmalar için isteğe bağlıdır.

Bir testin uygunluk testi olup olmadığı, hangi plana ait olduğuna bağlıdır. Birlikte çalıştırılan testler VTS planı, uygunluk testi 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) birden çok giriş içeriyor olabilir farklı sürümü ve arayüzleri var.
    • Dosya, şunun için birden çok version yapılandırması içerebilir: Bu da çerçevenin farklı sürümlerle çalışabileceğini gösterir.
    • version1.0-1, çerçevenin en düşük seviyeyle çalışabileceği anlamına gelir. Sürüm 1.0'dır ve 1.1'den sonraki bir sürümü gerektirmez.
  • 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 yalnızca tek bir version yapılandırması içeriyorsa bir giriş için, version1.2 tedarikçi firmanın tüm sürümleri desteklediği anlamına gelir 1.0~1.2 arasındadır.
  • lshal olarak değiştirin. 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 tedarikçi firma manifestine dayanarak (ve testi) cihaz tarafından sağlanan tüm HAL örneklerini. Karar akışı:

Uygunluk için test edilebilirlik kontrolü

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

Uygunsuzluk testleri

VTS, uyumsuzluk testleri için tedarikçinin manifestine ve Test amaçlı olmayan deneysel HAL'leri belirlemek (ve test etmek) için lshal manifest.xml dosyasında hak talebinde bulunuldu. Karar akışı:

Uygunsuzluk için test edilebilirlik kontrolü

Şekil 2. VTS uyumsuzluğu testleri 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. ODM manifest.xml dosyası, şu dosyalardan yüklendi: şu sırada:
    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 denetleyicisi

İlgili içeriği oluşturmak için kullanılan vts_testibility_checker, VTS ile paketlenmiş ve Belirli bir HAL testinin başarılı olup olmadığını belirlemek için çalışma zamanında VTS test çerçevesi test edilebilir olup olmadığını gösterir. 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ışında aşağıdaki json kullanılır biçim:

{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 testi çerçeve, testi önceden işlerken kayıtlı HAL'leri ayıklayabilir.

Uygunluk testleri için de şunları kontrol edebilirsiniz: /system/etc/vintf/manifest.xml 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.)