Modèles et inclusions dans la configuration XML Tradefed

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

C'est ici que les balises template et include de la configuration XML Tradefed la définition soient utiles. Ils permettent de définir des espaces réservés dans certains fichiers XML configuration 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 élément name pour les référencer et un élément default. Le champ "default" définit le code XML de remplacement par défaut qui doit être utilisée.

Pour remplacer un modèle dans une configuration donnée, la commande suivante 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 remplacer par rien.

Le chemin des configurations XML peut être absolu ou relatif par rapport au dossier res/config dans les ressources JAR de Tradefed. Voici quelques-uns de leurs emplacements:

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

Exemple de définition d'inclusions

<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 requièrent aucun argument de ligne de commande. ils développent directement le code XML référencé dans la balise name. Semblable aux modèles, le chemin d'accès à la configuration peut être absolu ou relatif. Toutefois, pour includes, nous nous 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.

Erreur de configuration

En cas de mauvaise configuration (par exemple, lorsque le code XML de remplacement est introuvable), Tradefed génère une ConfigurationException avec une description de ce qui semble sont manquantes ou mal configurées.