Modelli e include nella configurazione XML di Tradefed

La creazione di una configurazione XML monolitica per definire un test non è sempre pratica. Se vuoi riutilizzare parte della configurazione per eseguire test simili, dovresti copiare e gestire due file XML di grandi dimensioni.

È qui che tornano utili i tag template e include nella definizione della configurazione XML di Tradefed. Ti consentono di impostare segnaposto in alcune configurazioni XML per aggiungere parte di un'altra configurazione XML.

Esempio di definizione per i modelli

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

I modelli sono segnaposto con un name per farvi riferimento e un campo default facoltativo. Il campo predefinito definisce l'XML di sostituzione predefinito da utilizzare.

Per sostituire un modello per una determinata configurazione, è necessario aggiungere il seguente parametro del comando alla riga di comando:

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

--template:map preparers=empty

Ad esempio:

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

Il riferimento empty in questo caso si riferisce alla configurazione empty.xml che non contiene nulla; lo utilizziamo come riferimento per sostituire con nulla.

Il percorso delle configurazioni XML può essere assoluto o relativo alla cartella res/config all'interno delle risorse JAR di Tradefed. Ecco alcune delle loro sedi:

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

Definizione di esempio di include

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

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

Gli include sono più semplici dei modelli perché non richiedono argomenti della riga di comando; espandono direttamente l'XML a cui viene fatto riferimento nel tag name. Analogamente ai modelli, il percorso del file di configurazione può essere assoluto o relativo. Tuttavia, per includes ti consigliamo di utilizzare solo percorsi relativi, in quanto sono più portabili in Tradefed. I percorsi assoluti non sarebbero validi se Tradefed venisse spostato su un'altra macchina.

Configurazione errata

In caso di configurazione errata, ad esempio quando non è possibile trovare l'XML di sostituzione, Tradefed genererà un ConfigurationException con la descrizione di ciò che sembra mancare o essere configurato in modo errato.