Vorlagen und Includes in der Tradefed-XML-Konfiguration

Das Erstellen einer monolithischen XML-Konfiguration zum Definieren eines Tests ist nicht immer praktikabel. Wenn Sie einen Teil des Setups wiederverwenden möchten, um ähnliche Tests auszuführen, wären Sie gezwungen, zwei riesige XML-Dateien zu kopieren und zu verwalten.

Hier kommen template und include -Tags in der Tradefed XML-Konfigurationsdefinition zum Einsatz. Sie ermöglichen es Ihnen, Platzhalter in einer XML-Konfiguration festzulegen, um einen Teil einer anderen XML-Konfiguration hinzuzufügen.

Beispieldefinition für Vorlagen

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

Vorlagen sind Platzhalter mit einem name zur Referenzierung und einem optionalen default . Das Standardfeld definiert die standardmäßige Ersatz-XML, die verwendet werden soll.

Um eine Vorlage für eine bestimmte Konfiguration zu ersetzen, muss der folgende Befehlsparameter zur Befehlszeile hinzugefügt werden:

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

--template:map preparers=empty

Zum Beispiel:

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

Die empty Referenz bezieht sich in diesem Fall auf die Konfiguration empty.xml , die nichts enthält; Wir verwenden es als unsere Referenz, um es durch Nothing zu ersetzen .

Der Pfad von XML-Konfigurationen kann absolut oder relativ zum Ordner res/config in den JAR-Ressourcen von Tradefed sein. Hier sind einige ihrer Standorte:

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

Beispieldefinition von Includes

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

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

Includes sind einfacher als Vorlagen, da sie keine Befehlszeilenargumente erfordern; Sie erweitern direkt das referenzierte XML im name -Tag. Ähnlich wie bei Vorlagen kann der Pfad zur Konfiguration absolut oder relativ sein. Dennoch empfehlen wir, für includes nur relative Pfade zu verwenden, da diese in Tradefed besser portierbar sind. Absolute Pfade wären ungültig, wenn Tradefed auf einen anderen Computer verschoben würde.

Fehlkonfiguration

Im Falle einer Fehlkonfiguration, beispielsweise wenn das Ersatz-XML nicht gefunden werden kann, löst Tradefed eine ConfigurationException mit einer Beschreibung dessen aus, was scheinbar fehlt oder falsch konfiguriert ist.