לא תמיד מעשי ליצור הגדרת 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
עם תיאור של מה שנראה חסר או שהוגדר בצורה שגויה.