Modelos e inclusões na configuração do XML do Tradefed

Criar uma configuração XML monolítica para definir um teste nem sempre é uma prática práticos. Se você quiser reutilizar parte da configuração para executar testes semelhantes, será necessário copiar e manter dois arquivos XML gigantes.

É aqui que as tags template e include aparecem na configuração XML do Tradefed. definição são úteis. Eles permitem definir marcadores de posição em algumas configurações XML para adicionar parte de outra configuração XML.

Exemplo de definição de modelos

<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>

Os modelos são marcadores de posição com um name para referência e um default. O campo default define o XML de substituição padrão que deve ser usado.

Para substituir um modelo para uma determinada configuração, o comando a seguir precisa ser adicionado à linha de comando:

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

--template:map preparers=empty

Exemplo:

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

A referência empty, nesse caso, se refere à configuração empty.xml que não contém nada. Usamos essa referência para substituir por nada.

O caminho das configurações XML pode ser absoluto ou relativo à pasta res/config nos recursos de JAR da Tradefed. Confira alguns locais:

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

Exemplo de definição de inclui

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

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

Os includes são mais simples que os modelos, porque não exigem argumentos de linha de comando. Eles expandem diretamente o XML referenciado na tag name. Assim como os modelos, o caminho para a configuração pode ser absoluto ou relativo. Ainda assim, para includes, recomendamos usar apenas caminhos relativos, porque eles são mais portáteis no Tradefed. Os caminhos absolutos não seriam válidos se o Tradefed fosse movido para outra máquina.

Configuração incorreta

Em caso de configuração incorreta, como quando o XML de substituição não pode ser encontrado, o Tradefed gera um ConfigurationException com a descrição do que parece estar ausente ou configurado incorretamente.