Шаблоны и включения в конфигурацию Tradefed XML

Создание единого монолитного XML-конфигурационного файла для определения теста не всегда практично. Если вы хотите повторно использовать часть настроек для запуска аналогичных тестов, вам придется скопировать и поддерживать два огромных XML-файла.

Здесь на помощь приходят теги template и include в определении XML-конфигурации Tradefed. Они позволяют задавать заполнители в одной XML-конфигурации для добавления части другой XML-конфигурации.

Пример определения шаблонов

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

Шаблоны представляют собой заполнители с name для ссылки на них и необязательным полем default умолчанию. Поле по умолчанию определяет XML-файл замены по умолчанию, который должен использоваться.

Для замены шаблона в заданной конфигурации необходимо добавить в командную строку следующий параметр:

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

--template:map preparers=empty

Например:

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

В данном случае empty ссылка относится к конфигурационному файлу empty.xml , который ничего не содержит; мы используем его в качестве ссылки для замены на пустое значение .

Путь к XML-файлам конфигурации может быть абсолютным или относительным по отношению к папке res/config внутри JAR-ресурсов Tradefed. Вот несколько примеров их расположения:

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

Пример определения слова «включает»

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

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

Включаемые файлы проще, чем шаблоны, поскольку не требуют аргументов командной строки; они напрямую разворачивают ссылочный XML в теге name . Аналогично шаблонам, путь к конфигурации может быть абсолютным или относительным. Тем не менее, для includes мы рекомендуем использовать только относительные пути, поскольку они более переносимы в Tradefed. Абсолютные пути будут недопустимы, если Tradefed будет перенесен на другой компьютер.

Неправильная конфигурация

В случае неправильной конфигурации, например, если не удается найти заменяющий XML-файл, Tradefed выдаст исключение ConfigurationException с описанием того, что, по-видимому, отсутствует или неправильно настроено.