Tradefed XML 구성의 템플릿 및 Include

단일 모놀리식 XML 구성을 생성하여 테스트를 정의하는 것이 실용적이지 않을 때도 있습니다. 설정의 일부를 재사용하여 유사한 테스트를 실행하고 싶은 경우에는 두 개의 대량 XML 파일을 복사하여 유지할 수 밖에 없습니다.

바로 여기서 Tradedfed XML 구성의 templateinclude 태그가 유용성을 발휘합니다. 이러한 태그를 사용하면 일부 XML 구성에 자리표시자를 설정하여 다른 XML 구성의 일부를 추가할 수 있습니다.

template 정의의 예

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

template은 템플릿을 참조하기 위한 name 및 선택사항 default 필드를 포함하는 자리표시자입니다. 기본 필드는 사용해야 하는 기본 대체 XML을 정의합니다.

구성의 template을 대체하기 위해서는 다음과 같은 명령어 매개변수를 명령줄에 추가해야 합니다.

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

--template:map preparers=empty

예:

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

이 경우의 empty 참조는 아무 것도 포함되지 않은 empty.xml 구성을 참조합니다. 이를 아무것도 교체하는 데 대한 참조로 사용합니다.

XML 구성의 경로는 Tradefed JAR 리소스 내의 res/config 폴더에 대해 절대적이거나 상대적일 수 있습니다. 위치는 다음과 같을 수 있습니다.

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

include 정의의 예

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

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

include는 template보다 단순합니다 template에는 명령줄 인수가 필요없으며 name 태그에서 참조된 XML을 직접적으로 확장하기 때문입니다. template과 마찬가지로 구성에 대한 경로는 절대적이거나 상대적일 수 있습니다. 하지만 includes의 경우 Tradefed에서 훨씬 휴대성이 높은 만큼 상대 경로만 사용하는 것이 좋습니다. Tradefed를 다른 시스템으로 이동한 경우에는 절대 경로가 유효하지 않습니다.

구성 오류

구성 오류가 발생한 경우(예: 대체 XML을 찾을 수 없는 경우) Tradefed는 ConfigurationExceptionConfigurationException, 그리고 누락되었거나 잘못 구성된 요소에 대한 설명을 표시합니다.