Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Comprobación de testabilidad 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 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 omitirla para un objetivo de dispositivo específico.

Tipos de prueba de VTS

VTS incluye los siguientes tipos de prueba:

  • Pruebas de conformidad asegurar la compatibilidad entre marco y proveedores particiones. Estas pruebas deben ejecutarse (y aprobarse) en dispositivos que se inician con Android 8.0 o superior.
  • El incumplimiento de las pruebas de los proveedores de ayuda para mejorar la calidad del producto (rendimiento / pelusas, etc.). Estas pruebas son opcionales para los proveedores.

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

Determinación de HAL admitidos

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 de 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 optional atributo indica si el HAL es estrictamente necesario por el marco.
    • El archivo puede contener múltiples entradas para el mismo HAL (con el mismo nombre) pero con diferentes versiones e interfaces.
    • El archivo puede contener múltiples version configuraciones para la misma entrada, lo que indica el marco puede trabajar con diferentes versiones.
    • version1.0-1 significa el marco puede funcionar con la versión 1.0 más bajo, 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 el mismo HAL (con el mismo nombre) pero con diferentes versiones e interfaces.
    • Si el archivo contiene sólo una única version de configuración para una entrada, version1.2 medios el vendedor soporta todas las versiones de 1,0 ~ 1,2.
  • lshal. Una herramienta en el dispositivo que muestra runtime información acerca de los servicios registrados en el HAL hwservicemanager . Ejemplo:
    android.hardware.vibrator@1.0::IVibrator/default
    

    lshal también muestra todas las HAL que con las implementaciones de paso a través (es decir, que tienen la correspondiente -impl.so archivo 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

Cheque Figura 1. Capacidad de prueba para pruebas de conformidad VTS

Pruebas de incumplimiento

Para las pruebas de incumplimiento, STM se basa en el manifiesto del proveedor y lshal salidas para determinar (y prueba) los HAL experimentales no reivindicados en la manifest.xml archivo. Flujo de decisiones:

Testability check for non-compliance

Cheque Figura 2. Capacidad de prueba para las pruebas de incumplimiento VTS

Ubicación del manifiesto del proveedor

Cheques VTS para el vendedor manifest.xml archivo en los siguientes lugares en el siguiente orden:

  1. /vendor/etc/vintf/manifest.xml + ODM manifiesto (Si mismo HAL se define en ambos lugares, ODM manifiesto anula el uno en /vendor/etc/vintf/manifest.xml )
  2. /vendor/etc/vintf/manifest.xml
  3. ODM manifest.xml archivo, cargado de 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 de VTS

El vts_testibility_checker es un binario empaquetado con VTS y utilizado por marco de pruebas VTS en tiempo de ejecución para determinar si una prueba HAL dado es comprobable o no. Se basa en libvintf a cargar y analizar el archivo de manifiesto de proveedores y aperos de la decisión de flujo descrito en el apartado anterior.

Para utilizar 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 utiliza el siguiente formato JSON:

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

Determinación de las HAL accedidas

Para determinar qué HAL se accede por medio de pruebas VTS, asegúrese de que cada prueba HAL utiliza el VtsHalHidlTargetTestEnvBase plantilla para registrar el HAL (s) visitada en la prueba. El marco de pruebas VTS puede extraer las HAL registradas cuando se procesa previamente la prueba.

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