Modelli e include nella configurazione XML Tradefed

La creazione di una configurazione XML monolitica per definire un test non è sempre praticabile. Per riutilizzare parte della configurazione per eseguire test simili, dovrai copiare e gestire due file XML giganti.

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

Definizione di esempio 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 facultativodefault. Il campo predefinito definisce il file XML di sostituzione predefinito da utilizzare.

Per sostituire un modello per una determinata configurazione, alla riga di comando deve essere aggiunto il seguente parametro di comando:

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

--template:map preparers=empty

Ad esempio:

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

In questo caso, il riferimento empty fa riferimento alla configurazione empty.xml che non contiene nulla. Lo utilizziamo come riferimento per sostituire con niente.

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:

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

Definizione di esempio di includes

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

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

Le inclusioni sono più semplici dei modelli perché non richiedono argomenti della riga di comando. Estendono direttamente il file XML a cui si fa riferimento nel tag name. Come per i modelli, il percorso alla configurazione può essere assoluto o relativo. Tuttavia, per includes consigliamo di utilizzare solo percorsi relativi, in quanto sono più portabili in Tradefed. I percorsi assoluti non sono validi se il tipo di macchina viene spostato su un'altra macchina.

Configurazione errata

In caso di configurazione errata, ad esempio quando non è possibile trovare il file XML sostitutivo, TradeFed genera un ConfigurationException con la descrizione di ciò che sembra mancare o essere configurato in modo errato.