Modèles et inclusions dans la configuration XML Tradefed

Il n'est pas toujours pratique de créer une configuration XML monolithique pour définir un test. Si vous souhaitez réutiliser une partie de la configuration pour exécuter des tests similaires, vous devrez copier et gérer deux fichiers XML géants.

C'est là que les balises template et include de la définition de la configuration XML Tradefed sont utiles. Ils vous permettent de définir des espaces réservés dans une configuration XML pour ajouter une partie d'une autre configuration XML.

Exemple de définition pour les modèles

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

Les modèles sont des espaces réservés avec un name pour les référencer et un champ default facultatif. Le champ par défaut définit le fichier XML de remplacement par défaut à utiliser.

Pour remplacer un modèle pour une configuration donnée, le paramètre de commande suivant doit être ajouté à la ligne de commande:

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

--template:map preparers=empty

Exemple :

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

Dans ce cas, la référence empty fait référence à la configuration empty.xml qui ne contient rien. Nous l'utilisons comme référence pour la remplacer par rien.

Le chemin d'accès des configurations XML peut être absolu ou relatif au dossier res/config dans les ressources JAR de Tradefed. Voici quelques-uns de leurs établissements:

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

Exemple de définition d'une inclusion

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

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

Les inclusions sont plus simples que les modèles, car elles ne nécessitent aucun argument de ligne de commande. Elles développent directement le fichier XML référencé dans la balise name. Comme pour les modèles, le chemin d'accès à la configuration peut être absolu ou relatif. Toutefois, pour includes, nous vous recommandons de n'utiliser que des chemins relatifs, car ils sont plus portables dans Tradefed. Les chemins absolus ne seraient pas valides si Tradefed était déplacé vers une autre machine.

Mauvaise configuration

En cas d'erreur de configuration, par exemple lorsque le fichier XML de remplacement est introuvable, Tradefed génère une erreur ConfigurationException avec une description de ce qui semble manquant ou mal configuré.