Configuración de las pruebas

Paquete de pruebas

Para que una prueba forme parte de VTS, debe tener la siguiente configuración en Android.bp.

test_suites: ["vts"],

Además, agregar la prueba al paquete general-tests permite que se realice como parte de un paquete de asignación de pruebas que se usa en las comprobaciones previas al envío.

Configuración de prueba

En la mayoría de los casos, la configuración de prueba, que es un archivo XML que Trade Federation usa para ejecutar una prueba de VTS, se genera automáticamente durante la compilación. Sin embargo, puedes personalizar la configuración de prueba.

Crea un archivo de configuración de prueba personalizado

Crear un nuevo archivo XML de prueba desde cero puede ser complicado, ya que implica comprender cómo funciona el conjunto de pruebas, así como la diferencia entre cada ejecutor de pruebas. El archivo de configuración de prueba generado automáticamente este proceso sea más fácil.

Si debes personalizar el archivo XML de prueba, puedes usar el archivo generado automáticamente como punto de partida.

Para ubicar el archivo de configuración de prueba generado automáticamente, primero Ejecuta el comando make para compilar la configuración, como se muestra a continuación.

$ m VtsHalUsbV1_1TargetTest

En el directorio de compilación, puedes buscar el archivo de configuración según el nombre del módulo, como se muestra a continuación.

$ find out/ -name VtsHalUsbV1_1TargetTest.config

Puede haber varias copias del archivo y puedes usar cualquiera de ellas. Copia el archivo .config en el directorio. donde está el archivo Android.bp.

Si solo hay un módulo de prueba en el archivo Android.bp, puedes se cambiará el nombre del archivo XML a AndroidTest.xml, y el sistema de compilación lo usa como archivo de configuración del módulo de prueba. De lo contrario, agrega un atributo test_config al módulo, como se muestra en el ejemplo a continuación.

test_config: "VtsHalUsbV1_1TargetTest.xml",

Ahora tienes un archivo de configuración de prueba para implementar y trabajar la personalización.

Fuerza la ejecución de la prueba con raíz de adb

La mayoría de las pruebas de VTS requieren privilegios de raíz para ejecutarse. Si el archivo de configuración de prueba se genera automáticamente, puedes agregar el siguiente atributo a Android.bp.

require_root: true,

Si el archivo de configuración de prueba está personalizado, agrega siguiente al archivo XML de prueba.

<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>

Detén el framework durante la prueba

Muchas pruebas de VTS no requieren el framework de Android para ejecutarse, y ejecutar la la prueba con el framework detenido permite que la prueba se ejecute de manera estable sin verse afectada por las fragmentos del dispositivo. Si el archivo de configuración de prueba se genera automáticamente, puedes agregar el siguiente atributo a Android.bp.

disable_framework: true,

Si el archivo de configuración de prueba está personalizado, agrega lo siguiente al archivo XML de prueba.

<target_preparer class="com.android.tradefed.targetprep.StopServicesSetup"/>

Cómo agregar argumentos de prueba adicionales

Es posible que algunas pruebas de gtest requieran más tiempo para ejecutarse. En esos casos, puedes agregar opciones del ejecutor de pruebas en el archivo en formato XML.

Por ejemplo, el parámetro de configuración native-test-timeout en la siguiente entrada permite que la prueba se ejecute con un tiempo de espera de 3 minutos, en lugar del valor predeterminado de 1 minuto.

   <test class="com.android.tradefed.testtype.GTest" >
       <option name="native-test-device-path" value="/data/local/tmp" />
       <option name="module-name" value="VtsHalNfcV1_0TargetTest" />
       <option name="native-test-timeout" value="180000"/>
   </test>

Se requiere un nivel de API mínimo

Algunas pruebas de VTS solo se pueden ejecutar en dispositivos con un nivel de API mínimo. Si el botón de configuración de prueba se genera automáticamente, puedes agregar los siguientes a Android.bp.

min_shipping_api_level: 29,

o

vsr_min_shipping_api_level: 202404,

Si el archivo de configuración de prueba está personalizado, agrega el siguiente comando al archivo XML de prueba.

   <object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
       <option name="min-api-level" value="29" />
   </object>

o

   <object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
       <option name="vsr-min-api-level" value="202404" />
   </object>

Propiedades del nivel de API

Android 12 define ro.board.first_api_level y Propiedades ro.board.api_level para mostrar el nivel de API de las imágenes de proveedores estos dispositivos. Cuando se combinan estas propiedades con ro.product.first_api_level, los paquetes de pruebas eligen los casos de prueba adecuados para los dispositivos.

Android 13 define ro.vendor.api_level que es que se establece automáticamente calculando el nivel de API requerido por el proveedor mediante la ro.product.first_api_level, ro.board.first_api_level y ro.board.api_level.

Para obtener más detalles, consulta Nivel de API del proveedor.

ro.board.first_api_level

La propiedad ro.board.first_api_level corresponde al nivel de API cuando las imágenes del proveedor para un SoC calificado para bloqueo del proveedor son los primeros lanzados con esta propiedad. Esto no depende de la API de inicio del dispositivo pero solo depende del primer nivel de API del SoC que define este valor. El es permanente durante el ciclo de vida del SoC.

Para establecer ro.board.first_api_level, los fabricantes de dispositivos pueden definir BOARD_SHIPPING_API_LEVEL en su archivo device.mk, como se muestra a continuación ejemplo:

  # BOARD_SHIPPING_API_LEVEL sets ro.product.first_api_level to indicate
  # the first api level that the device has been commercially launched on.
  BOARD_SHIPPING_API_LEVEL := 23

Definirá automáticamente la propiedad ro.board.first_api_level como vendor/build.prop en el dispositivo. El proveedor init establece la propiedad. el proceso de administración de recursos.

ro.board.api_level

La propiedad ro.board.api_level es el nivel de API actual del proveedor de las imágenes del proveedor que tiene el formato YYYYMM en el que se congeló la API del proveedor. El sistema de compilación lo configura automáticamente.

ro.vendor.api_level

La propiedad ro.vendor.api_level se introdujo en Android 13 para mostrar el nivel de API con el que las imágenes del proveedor que se requieren para admitirlas. Se establece automáticamente en ro.product.first_api_level o ro.board.api_level si ro.board.first_api_level está presente y ro.board.api_level se establece en un nivel de API anterior a ro.product.first_api_level. La versión será reemplazar por el nivel de API del proveedor correspondiente si se establece en la versión de ro.product.first_api_level, que es mayor o igual que 35. Pruebas para la implementación del proveedor que requiera la actualización de la imagen del proveedor podría excluirse de los requisitos de proveedores para el SoC consultando esta propiedad.

Proceso de fragmentación con VTS

En Android 10 o versiones posteriores, puedes realizar el proceso de fragmentación en varios dispositivos mientras realiza pruebas con planes de VTS y CTS en GSI de acuerdo con lo siguiente: las siguientes instrucciones.

run vts --shard-count <number of devices> -s <device serial> ...

Este comando divide el plan de VTS en fragmentos y los ejecuta en varios dispositivos.

run cts-on-gsi --shard-count <number of devices> -s <device serial> -s ...

Este comando divide el plan de CTS en GSI en fragmentos y los ejecuta en varios dispositivos.