תבניות וקבצים נכללים בהגדרת ה-XML של Tradefed

לא תמיד מעשי ליצור הגדרת XML מונוליטית אחת כדי להגדיר בדיקה. אם רוצים להשתמש מחדש בחלק מההגדרה כדי להריץ בדיקות דומות, תצטרכו להעתיק ולתחזק שני קובצי XML גדולים.

כאן נכנסים לתמונה התגים template ו-include בהגדרת ה-XML של Tradefed. הם מאפשרים להגדיר placeholders בחלק מהגדרות ה-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>

תבניות הן placeholders עם 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>

השימוש ב-Includes פשוט יותר מאשר ב-Templates, כי לא צריך להוסיף להם ארגומנטים בשורת הפקודה. הם מרחיבים ישירות את ה-XML שאליו הם מפנים בתג name. בדומה לתבניות, הנתיב להגדרה יכול להיות מוחלט או יחסי. עם זאת, ל-includes מומלץ להשתמש רק בנתיבים יחסיים כי הם ניידים יותר ב-Tradefed. נתיבים מוחלטים לא יהיו תקפים אם Tradefed יועבר למכונה אחרת.

הגדרה שגויה

במקרה של הגדרה שגויה, למשל כשקובץ ה-XML להחלפה לא נמצא,‏ Tradefed יציג ConfigurationException עם תיאור של מה שנראה חסר או שהוגדר בצורה שגויה.