Google is committed to advancing racial equity for Black communities. See how.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Comprobación de probabilidad de HAL

Vendor Test Suite (VTS) de Android 9 admite un método de tiempo de ejecución para usar la configuración del dispositivo para identificar qué pruebas de VTS deben omitirse para ese dispositivo de destino.

Flexibilidad de prueba VTS

A partir de Android 8.0, se requieren pruebas de VTS para todos los dispositivos lanzados con Android 8.0 y superior. Sin embargo, no todas las pruebas de VTS se aplican a todos los destinos de dispositivos. Por ejemplo:

  • Si un dispositivo específico no admite una prueba HAL (por ejemplo, IR), VTS no necesita ejecutar pruebas para esa prueba HAL contra ese dispositivo objetivo.
  • Si varios dispositivos comparten el mismo SoC y la misma imagen de proveedor, pero tienen diferentes funcionalidades de hardware, VTS debe determinar si se debe ejecutar una prueba o se debe omitir para un objetivo de dispositivo específico.

Tipos de prueba de VTS

VTS incluye los siguientes tipos de prueba:

  • Las pruebas de cumplimiento garantizan la compatibilidad entre el marco y las particiones del proveedor. Estas pruebas deben ejecutarse (y aprobarse) en dispositivos que se inician con Android 8.0 o superior.
  • Las pruebas de incumplimiento ayudan a los proveedores a mejorar la calidad del producto (rendimiento / fuzzing, etc.). Estas pruebas son opcionales para los proveedores.

Si una prueba es una prueba de cumplimiento o no, depende del plan al que pertenezca. Las pruebas que se ejecutan con el plan VTS se consideran pruebas de cumplimiento.

Determinación de HAL compatibles

VTS puede usar los siguientes archivos para determinar si el destino del dispositivo admite una HAL específica:

  • /system/compatibility_matrix.xml . Reclama las instancias HAL requeridas por el marco. Ejemplo:
    <hal format="hidl" optional="true">
        <name>android.hardware.vibrator</name>
        <version>1.0-1</version>
        <interface>
           <name>IVibrator</name>
           <instance>default</instance>
        </interface>
    </hal>
    
    • El atributo optional indica si el HAL es estrictamente requerido por el marco.
    • El archivo puede contener múltiples entradas para la misma HAL (con el mismo nombre) pero con diferentes versiones e interfaces.
    • El archivo puede contener múltiples configuraciones de version para la misma entrada, lo que indica que el marco puede funcionar con diferentes versiones.
    • version1.0-1 significa que el marco puede funcionar con la versión 1.0 más baja y no requiere una versión superior a 1.1.
  • Dispositivo manifest.xml . Reclama las instancias HAL proporcionadas por el proveedor. Ejemplo:
    <hal format="hidl">
        <name>android.hardware.vibrator</name>
        <transport>hwbinder</transport>
        <version>1.2</version>
        <interface>
            <name>IVibrator</name>
           <instance>default</instance>
        </interface>
    </hal>
    
    • El archivo puede contener múltiples entradas para la misma HAL (con el mismo nombre) pero con diferentes versiones e interfaces.
    • Si el archivo contiene solo una configuración de version única para una entrada, la version1.2 1.2 significa que el proveedor admite todas las versiones de la 1.0 a la 1.2.
  • lshal . Una herramienta en el dispositivo que muestra información en tiempo de ejecución sobre los servicios HAL registrados con hwservicemanager . Ejemplo:
    android.hardware.vibrator@1.0::IVibrator/default
    

    lshal también muestra todos los HAL que tienen implementaciones de paso (es decir, que tienen el archivo -impl.so correspondiente en el dispositivo). Ejemplo:
    android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/)
    android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
    

Pruebas de cumplimiento

Para las pruebas de cumplimiento, VTS se basa en el manifiesto del proveedor para determinar (y probar) todas las instancias de HAL proporcionadas por el dispositivo. Flujo de decisiones:

Testability check for compliance

Figura 1. Verificación de probabilidad para las pruebas de cumplimiento de VTS

Pruebas de incumplimiento

Para las pruebas de incumplimiento, VTS se basa en el manifiesto del proveedor y en lshal salidas lshal para determinar (y probar) las HAL experimentales no declaradas en el archivo manifest.xml . Flujo de decisiones:

Testability check for non-compliance

Figura 2. Comprobación de probabilidad de las pruebas de incumplimiento de VTS

Ubicación del manifiesto del proveedor

VTS busca el archivo manifest.xml del proveedor en los siguientes lugares en el siguiente orden:

  1. /vendor/etc/vintf/manifest.xml + manifiesto de ODM (si se define el mismo HAL en ambos lugares, el manifiesto de ODM anula el de /vendor/etc/vintf/manifest.xml )
  2. /vendor/etc/vintf/manifest.xml
  3. Archivo ODM manifest.xml , cargado desde los siguientes archivos en el siguiente orden:
    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

Comprobador de comprobabilidad VTS

El vts_testibility_checker es un binario empaquetado con VTS y utilizado por el marco de prueba de VTS en tiempo de ejecución para determinar si una prueba HAL determinada es comprobable o no. Se basa en libvintf para cargar y analizar el archivo de manifiesto del proveedor e implementa el flujo de decisiones descrito en la sección anterior.

Para usar vts_testability_check :

  • Para una prueba de cumplimiento:
    vts_testability_check -c -b <bitness>  <hal@version>
    
  • Para una prueba de incumplimiento:
    vts_testability_check -b <bitness>  <hal@version>
    

La salida de vts_testability_check usa el siguiente formato json:

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

Determinación de HAL accedidas

Para determinar a qué HAL acceden las pruebas VTS, asegúrese de que cada prueba HAL utilice la plantilla VtsHalHidlTargetTestEnvBase para registrar las HAL a las que se accede en la prueba. El marco de prueba VTS puede extraer las HAL registradas cuando se procesa previamente la prueba.

Para las pruebas de cumplimiento, también puede consultar /system/etc/vintf/manifest.xml . Si aquí se define un HAL, VTS debería probarlo. (Para los servicios HAL proporcionados por el sistema (por ejemplo, graphics.composer/vr ), los HAL se declaran en /system/manifest.xml .)