HAL test edilebilirlik kontrolü

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

Testability check for compliance

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

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

Testability check for noncompliance

Şekil 2. VTS uyumsuzluk testleri için test edilebilirlik kontrolü

Satıcı bildirimini bulun

VTS, satıcı manifest.xml dosyasını aşağıdaki yerlerde aşağıdaki sırayla kontrol eder:

  1. /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)
  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 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.)