Szablony i elementy w konfiguracji XML Tradefed

Tworzenie jednej monolitycznej konfiguracji XML do zdefiniowania testu nie zawsze jest praktyczne. Jeśli chcesz ponownie użyć części konfiguracji do przeprowadzenia podobnych testów, musisz skopiować i utrzymywać 2 duże pliki XML.

W tym przypadku przydadzą się tagi template i include w definicji konfiguracji Tradefed XML. Umożliwiają one ustawienie symboli zastępczych w niektórych konfiguracjach XML, 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 symbole zastępcze z polem name służącym do odwoływania się do nich oraz opcjonalnym polem default. Pole domyślne określa domyślny zastępczy kod XML, który ma być używany.

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

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

--template:map preparers=empty

Przykład:

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

Odwołanie empty w tym przypadku odnosi się do konfiguracji empty.xml, która nie zawiera niczego. Używamy jej jako odniesienia do zastąpienia niczym.

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

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

Przykładowa definicja elementów dołączanych

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

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

Elementy dołączane są prostsze niż szablony, ponieważ nie wymagają argumentów wiersza poleceń. Bezpośrednio rozwijają odwołujący się do nich kod XML w tagu name. Podobnie jak w przypadku szablonów ścieżka do konfiguracji może być bezwzględna lub względna. W przypadku elementów dołączanych zalecamy jednak używanie tylko ścieżek względnych, ponieważ są one bardziej przenośne w Tradefed.includes Ś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źć zastępczego kodu XML, Tradefed zgłosi wyjątek ConfigurationException z opisem tego, czego brakuje lub co jest nieprawidłowo skonfigurowane.