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