Incluye plantillas y elementos incluidos en la configuración XML de Tradefed

Crear una configuración XML monolítica para definir una prueba no siempre es práctico. Si quieres volver a usar parte de la configuración para ejecutar pruebas similares, se vería obligado a copiar y mantener dos archivos XML gigantes.

Aquí es donde las etiquetas template y include en la configuración XML de Tradefed definición útil. Te permiten establecer marcadores de posición en algunos archivos para agregar parte de otra configuración XML.

Definición de ejemplo para las plantillas

<configuration description="Common base configuration for local runs with minimum overhead">
    <build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />

    <template-include name="preparers" default="empty" />

    <template-include name="test" default="empty" />

    <template-include name="reporters" default="empty" />
</configuration>

Las plantillas son marcadores de posición con un name para hacer referencia a ellas y un elemento default. El campo predeterminado define el XML de reemplazo predeterminado que que se debe usar.

Para reemplazar una plantilla de una configuración determinada, el siguiente comando debe agregarse a la línea de comandos:

--template:map <name of template>=<replacement XML config path>

--template:map preparers=empty

Por ejemplo:

<template-include name="preparers" default="empty" />

En este caso, la referencia empty hace referencia a la configuración empty.xml que no contiene nada; lo usamos como referencia para reemplazar sin nada.

La ruta de las configuraciones XML puede ser absoluta o relativa a la carpeta res/config. dentro de los recursos JAR de Tradefed. Estas son algunas de sus ubicaciones:

  • tools/tradefederation/core/res/config
  • tools/tradefederation/core/tests/res/config
  • tools/tradeferation/contrib/res/config

Definición de ejemplo de inclusiones

<configuration description="Common base configuration for local runs with minimum overhead">
    <build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />

    <include name="empty"/>
</configuration>

Las inclusiones son más simples que las plantillas, ya que no requieren argumentos de línea de comandos. estos expanden directamente el XML al que se hace referencia en la etiqueta name. Al igual que las plantillas, la ruta de acceso a la configuración puede ser absoluta o relativa. Sin embargo, por includes se recomienda usar solo rutas relativas, ya que son más portátiles en Tradefed. Las rutas absolutas no serían válidas si Tradefed se trasladara a otra máquina.

Configuración incorrecta

En caso de una configuración incorrecta (p. ej., cuando no se puede encontrar el XML de reemplazo) Tradefed arrojará una ConfigurationException con una descripción de lo que parece que falten o estén mal configurados.