الگوها و موارد گنجانده‌شده در پیکربندی Tradefed XML

ایجاد یک پیکربندی XML یکپارچه برای تعریف یک آزمایش همیشه عملی نیست. اگر بخواهید از بخشی از تنظیمات برای اجرای آزمایش‌های مشابه استفاده مجدد کنید، مجبور می‌شوید دو فایل XML بزرگ را کپی و نگهداری کنید.

اینجا است که برچسب‌های template و include در تعریف «پیکربندی Tradefed XML» به‌کار می‌آیند. این‌ها به شما امکان می‌دهند جای‌بان‌هایی را در برخی پیکربندی‌های 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/contrib/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 با شرح آنچه به‌نظر می‌رسد موجود نباشد یا پیکربندی نادرست داشته باشد ارائه می‌دهد.