Szablony i elementy w konfiguracji XML Tradefed

Utworzenie jednej monolitycznej konfiguracji XML w celu zdefiniowania testu nie zawsze praktyczny. 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 ustawianie zmiennych w niektórych plikach 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, w których można się odwoływać do obiektów zastępczych (name). default. Pole domyślne określa domyślny zastępczy kod XML, który należy użyć funkcji.

Aby zastąpić szablon w danej konfiguracji, to polecenie Do wiersza poleceń należy dodać:

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

--template:map preparers=empty

Na przykład:

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

Dokumentacja empty w tym przypadku odnosi się do konfiguracji empty.xml, która nie zawiera niczego; wykorzystujemy go jako punkt odniesienia zastępując go niczym.

Ścieżka konfiguracji XML może być bezwzględna lub względna do folderu res/config w zasobach pliku 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 uwzględniania

<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ą przywołany 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 byłyby prawidłowe, jeśli Tradefed zostanie przeniesione do innej maszyny.

Nieprawidłowa konfiguracja

W przypadku błędu konfiguracji, na przykład gdy nie można znaleźć nowego kodu XML, Tradefed przesyła element ConfigurationException z opisem tego, co wydaje się może być niedostępny lub jest nieprawidłowo skonfigurowany.