Szablony i elementy w konfiguracji XML Tradefed

Tworzenie jednej monolitycznej konfiguracji XML na potrzeby testu nie zawsze jest praktyczne. Jeśli chcesz ponownie użyć części konfiguracji do przeprowadzenia podobnych testów, będziesz musiał skopiować 2 wielkie pliki XML i je aktualizować.

Właśnie w takich sytuacjach przydają się tagi templateinclude w definicji konfiguracji XML Tradefed. Umożliwiają one ustawienie w pewnej konfiguracji XML symboli zastępczych, aby dodać część innej konfiguracji XML.

Przykładowa definicja szablonów

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

Szablony to zastępcze wartości z identyfikatorem name i opcjonalnym polem default. Pole domyślne określa domyślny kod XML zastępczy, którego należy użyć.

Aby zastąpić szablon w danej konfiguracji, do wiersza poleceń należy dodać ten parametr:

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

--template:map preparers=empty

Na przykład:

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

W tym przypadku odwołanie empty odnosi się do konfiguracji empty.xml, która nie zawiera nic. Używamy jej jako odniesienia do zastąpienia wartości „nic”.

Ścieżka konfiguracji XML może być bezwzględna lub względna do folderu res/config w zasobach JAR Tradefed. Oto kilka z nich:

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

Przykładowa definicja includes

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

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

Zawartość jest prostsza niż szablony, ponieważ nie wymaga argumentów wiersza poleceń. Zawartość jest bezpośrednio rozwijana w tagu name. Podobnie jak w przypadku szablonów ścieżka do konfiguracji może być bezwzględna lub względna. W przypadku includes zalecamy jednak używanie tylko ścieżek względnych, ponieważ są one bardziej przenośne w Tradefed. Ścieżki bezwzględne nie będą prawidłowe, jeśli Tradefed zostanie przeniesiony na inny komputer.

Nieprawidłowa konfiguracja

W przypadku nieprawidłowej konfiguracji, np. gdy nie można znaleźć pliku XML z wymianą, Tradefed wygeneruje błąd ConfigurationException z opisem tego, co wydaje się być nieobecne lub źle skonfigurowane.