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

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

اینجاست که template و تگ‌های include در تعریف Tradefed XML Configuration مفید هستند. آنها به شما این امکان را می دهند که متغیرهایی را در برخی از پیکربندی 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>

شامل ساده تر از Templates هستند زیرا به آرگومان های خط فرمان نیاز ندارند. آنها به طور مستقیم XML مرجع در تگ name را گسترش می دهند. مشابه الگوها، مسیر پیکربندی می تواند مطلق یا نسبی باشد. با این حال، برای includes ، توصیه می کنیم فقط از مسیرهای نسبی استفاده کنید زیرا در Tradefed قابل حمل تر هستند. اگر Tradefed به ماشین دیگری منتقل شود، مسیرهای مطلق معتبر نیستند.

پیکربندی اشتباه

در صورت پیکربندی نادرست، مانند زمانی که XML جایگزین یافت نمی‌شود، Tradefed یک ConfigurationException با شرح موارد گم شده یا اشتباه پیکربندی می‌کند.