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

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

באופן תיאורטי, אפשר להגדיר את כל הפרטים ב-XML עבור פקודה אחת. אבל בפועל, עדיף להשתמש בקובצי XML של תבנית בסיסית ולהתאים אותם אישית באמצעות פרמטרים נוספים של שורת הפקודה.

מבנה

<configuration description="<description of the configuration>">
    <!-- A build provider that takes local device information -->
    <build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />

    <!-- Some target preparation, disabled by default -->
    <target_preparer class="com.android.tradefed.targetprep.PreloadedClassesPreparer">
        <option name="disable" value="true" />
    </target_preparer>

    <!-- One test running some unit tests -->
    <test class="com.android.tradefed.testtype.HostTest">
        <option name="class" value="com.android.tradefed.build.BuildInfoTest" />
    </test>

    <!-- [OPTIONAL] -->
    <logger class="com.android.tradefed.log.FileLogger">
        <option name="log-level" value="VERBOSE" />
        <option name="log-level-display" value="VERBOSE" />
    </logger>

    <!-- [OPTIONAL] -->
    <log_saver class="com.android.tradefed.result.FileSystemLogSaver" />

    <!-- As many reporters as we want -->
    <result_reporter class="com.android.tradefed.result.ConsoleResultReporter" />
    <result_reporter class="com.android.tradefed.result.suite.SuiteResultReporter" />
    <result_reporter class="com.android.tradefed.result.MetricsXMLResultReporter"/>
</configuration>

ה-XML הכולל שהוזן ב-Trends מופרד באמצעות תגי <configuration>. Tradefed objects מוגדרים בתגים משלהם, לדוגמה: build_provider, target_preparer, test וכו'. המטרות הנפרדות שלהם מתוארות בפירוט רב יותר בקטע ארכיטקטורה.

לכל אובייקט יש את מחלקת Java המשויכת לאובייקט שמוגדר ב-class=, שמתבצעת לה פתרון בזמן הריצה. לכן, כל עוד קובץ ה-JAR שמכיל את המחלקה נמצא במסלול הטעינה של Java ב-Tradefed בזמן הריצה, הוא יימצא וייפתר.

הזמנות של אובייקטים ב-Tradefed

הסדר של התגים השונים לא משנה. לדוגמה, אין הבדל אם build_provider מצוין אחרי target_preparer. תהליך ההפעלה של הבדיקות נאכף על ידי ערכת הכלי עצמה, כך שהיא תמיד תפעיל אותן בסדר הנכון.

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