תבניות וכוללות תצורת XML של נתונים מסחריים

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

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

הנתיב של הגדרות ה-XML יכול להיות מוחלט או יחסי לתיקייה res/config שנמצאת במשאבי JAR של Tradeמם. אלה כמה מהמיקומים שלהם:

  • tools/tradefederation/core/res/config
  • tools/tradefederation/core/tests/res/config
  • כלים/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 עם תיאור של מה שנראה חסר או שהוגדר בצורה שגויה.