Criar uma configuração XML monolítica para definir um teste nem sempre é prático. 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
na definição de configuração XML do Tradefed são úteis. Eles permitem definir marcadores de posição em alguma configuração XML para adicionar parte de outra configuração XML.
Exemplo de definição para 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 fazer referência a eles e um campo default
opcional. O campo "default" define o XML de substituição padrão que
deve ser usado.
Para substituir um modelo por uma determinada configuração, o seguinte parâmetro de comando 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
, neste caso, se refere à configuração empty.xml
que não contém nada. Usamos isso como referência para substituir por nada.
O caminho das configurações XML pode ser absoluto ou relativo à pasta res/config
nos recursos JAR do Tradefed. Confira alguns dos locais:
- tools/tradefederation/core/res/config
- tools/tradefederation/core/tests/res/config
- tools/tradedeferation/contrib/res/config
Exemplo de definição de inclusões
<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 do 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. No entanto, para o includes
, recomendamos usar apenas caminhos relativos, porque eles são mais portáteis no Tradefed.
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 vai gerar um ConfigurationException
com a descrição do que parece
estar faltando ou configurado incorretamente.