Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Verifica della testabilità HAL

Android 9 Vendor Test Suite (VTS) supporta un metodo di runtime per l'utilizzo della configurazione del dispositivo per identificare quali test VTS devono essere saltati per quella destinazione del dispositivo.

Flessibilità del test VTS

A partire da Android 8.0, i test VTS sono richiesti per tutti i dispositivi avviati con Android 8.0 e versioni successive. Tuttavia, non tutti i test VTS si applicano a tutti i target dei dispositivi. Per esempio:

  • Se un dispositivo specifico non supporta un test HAL (ad es. IR), VTS non deve eseguire test per quel test HAL sul target di quel dispositivo.
  • Se più dispositivi condividono la stessa SoC e l'immagine del fornitore ma hanno funzionalità hardware diverse, VTS deve determinare se un test deve essere eseguito o ignorato per una destinazione dispositivo specifica.

Tipi di test VTS

VTS include i seguenti tipi di test:

  • I test di conformità assicurano la compatibilità tra framework e partizioni del fornitore. Questi test devono essere eseguiti (e superati) sui dispositivi che si avviano con Android 8.0 o versioni successive.
  • I test di non conformità aiutano i fornitori a migliorare la qualità del prodotto (prestazioni / fuzzing ecc.). Questi test sono facoltativi per i fornitori.

Se un test è un test di conformità o meno dipende dal piano a cui appartiene. I test eseguiti con il piano VTS sono considerati test di conformità.

Determinazione degli HAL supportati

VTS può utilizzare i seguenti file per determinare se la destinazione del dispositivo supporta un HAL specifico:

  • /system/compatibility_matrix.xml . Reclama le istanze HAL richieste dal framework. Esempio:
    <hal format="hidl" optional="true">
        <name>android.hardware.vibrator</name>
        <version>1.0-1</version>
        <interface>
           <name>IVibrator</name>
           <instance>default</instance>
        </interface>
    </hal>
    
    • L'attributo optional indica se l'HAL è strettamente richiesto dal framework.
    • Il file può contenere più voci per lo stesso HAL (con lo stesso nome) ma con versioni e interfacce diverse.
    • Il file può contenere più configurazioni di version per la stessa voce, indicando che il framework può funzionare con versioni diverse.
    • version1.0-1 indica che il framework può funzionare con la versione 1.0 più bassa e non richiede una versione successiva alla 1.1.
  • Device manifest.xml . Reclama le istanze HAL fornite dal fornitore. Esempio:
    <hal format="hidl">
        <name>android.hardware.vibrator</name>
        <transport>hwbinder</transport>
        <version>1.2</version>
        <interface>
            <name>IVibrator</name>
           <instance>default</instance>
        </interface>
    </hal>
    
    • Il file può contenere più voci per lo stesso HAL (con lo stesso nome) ma con versioni e interfacce diverse.
    • Se il file contiene solo una configurazione di version singola per una voce, version1.2 1.2 significa che il fornitore supporta tutte le versioni da 1.0 ~ 1.2.
  • lshal . Uno strumento sul dispositivo che mostra informazioni di runtime sui servizi HAL registrati con hwservicemanager . Esempio:
    android.hardware.vibrator@1.0::IVibrator/default
    

    lshal mostra anche tutti gli HAL che hanno implementazioni passthrough (cioè che hanno il corrispondente file -impl.so sul dispositivo). Esempio:
    android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/)
    android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
    

Test di conformità

Per i test di conformità, VTS si affida al manifest del fornitore per determinare (e testare) tutte le istanze HAL fornite dal dispositivo. Flusso decisionale:

Testability check for compliance

Figura 1. Verifica della testabilità per i test di conformità VTS

Test di non conformità

Per i test di non conformità, VTS si basa sui risultati manifest e lshal del fornitore per determinare (e testare) gli HAL sperimentali non rivendicati nel file manifest.xml . Flusso decisionale:

Testability check for non-compliance

Figura 2. Verifica della testabilità per i test di non conformità VTS

Individuazione del manifest del fornitore

VTS verifica il file manifest.xml del fornitore nei seguenti punti nel seguente ordine:

  1. /vendor/etc/vintf/manifest.xml + ODM manifest (se lo stesso HAL è definito in entrambe le posizioni, manifest ODM sovrascrive quello in /vendor/etc/vintf/manifest.xml )
  2. /vendor/etc/vintf/manifest.xml
  3. File manifest.xml ODM, caricato dai seguenti file nel seguente ordine:
    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

Verifica testabilità VTS

vts_testibility_checker è un pacchetto binario compresso con VTS e utilizzato dal framework di test VTS in fase di esecuzione per determinare se un determinato test HAL è testabile o meno. Si basa su libvintf per caricare e analizzare il file manifest del fornitore e implementa il flusso decisionale descritto nella sezione precedente.

Per utilizzare vts_testability_check :

  • Per un test di conformità:
    vts_testability_check -c -b <bitness>  <hal@version>
    
  • Per un test di non conformità:
    vts_testability_check -b <bitness>  <hal@version>
    

L'output di vts_testability_check utilizza il seguente formato json:

{testable: <True/False> Instances: <list of instance names of HAL service>}

Determinazione degli HAL accessibili

Per determinare quali HAL sono accessibili dai test VTS, assicurarsi che ogni test HAL utilizzi il modello VtsHalHidlTargetTestEnvBase per registrare gli HAL a cui si accede nel test. Il framework di test VTS può quindi estrarre gli HAL registrati durante la pre-elaborazione del test.

Per i test di conformità, puoi anche controllare /system/etc/vintf/manifest.xml . Se qui viene definito un HAL, VTS dovrebbe testarlo. (Per i servizi HAL forniti dal sistema (ad esempio graphics.composer/vr ), gli HAL sono dichiarati in /system/manifest.xml .)