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 ogromne pliki XML.

W tym przypadku przydatne są tagi templateinclude w definicji konfiguracji XML Tradefed. Umożliwiają one ustawianie 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 symbolem name, który umożliwia odwoływanie się do nich, oraz opcjonalnym polem default. Pole domyślne określa domyślny plik XML zastępujący, który powinien być używany.

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 jest pusta. Używamy jej jako odniesienia, aby niczym zastąpić.

Ścieżka do 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 klauzuli includes

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

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

Pliki dołączane są prostsze niż szablony, ponieważ nie wymagają argumentów wiersza poleceń. Bezpośrednio rozwijają one 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 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 inne urządzenie.

Nieprawidłowa konfiguracja

W przypadku nieprawidłowej konfiguracji, np. gdy nie można znaleźć zastępczego pliku XML, Tradefed zgłosi ConfigurationException z opisem tego, czego brakuje lub co jest nieprawidłowo skonfigurowane.