Szablony i elementy zawarte w konfiguracji Tradefed XML

Utworzenie jednej monolitycznej konfiguracji XML w celu zdefiniowania testu nie zawsze jest praktyczne. Jeśli chcesz ponownie wykorzystać część konfiguracji do przeprowadzenia podobnych testów, będziesz zmuszony skopiować i zachować dwa gigantyczne pliki XML.

W tym miejscu przydaje się template i znaczniki include w definicji konfiguracji Tradefed XML. Umożliwiają ustawienie symboli zastępczych w niektórych konfiguracjach XML w celu dodania części 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 obiekty zastępcze z name wskazującą na nie i opcjonalnym polem default . Pole domyślne definiuje domyślny zastępczy kod XML, który powinien zostać użyty.

Aby zamienić szablon dla danej konfiguracji należy w wierszu poleceń dodać następujący parametr komendy:

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

--template:map preparers=empty

Na przykład:

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

empty odwołanie w tym przypadku odnosi się do konfiguracji empty.xml , która nic nie zawiera; używamy go jako odniesienia do zastępowania niczego .

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

  • narzędzia/tradefederacja/core/res/config
  • narzędzia/tradefederacja/core/tests/res/config
  • narzędzia/tradedeferation/contrib/res/config

Przykładowa definicja zawiera

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

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

Uwzględnienia są prostsze niż szablony, ponieważ nie wymagają argumentów wiersza poleceń; bezpośrednio rozwijają przywoływany kod XML w znaczniku name . Podobnie jak w przypadku szablonów, ścieżka do konfiguracji może być bezwzględna lub względna. Mimo to w przypadku includes zalecamy używanie wyłącznie ś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 inną maszynę.

Błędna konfiguracja

W przypadku błędnej konfiguracji, na przykład gdy nie można znaleźć zastępczego pliku XML, Tradefed zgłosi wyjątek ConfigurationException z opisem tego, czego wydaje się brakować lub źle skonfigurowany.