ساختار سطح بالای پیکربندی Tradefed 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>

زبان نشانه‌گذاری توسعه‌پذیر Tradefed کلی با برچسب‌های <configuration> محدود می‌شود. Tradefed objects در برچسب‌های خودشان تعریف می‌شوند، برای مثال: build_provider، target_preparer، test، و غیره. اهداف فردی آن‌ها با جزئیات بیشتر در بخش معماری شرح داده شده است.

هر شیء دارای کلاس Java مرتبط با شیء تعریف‌شده در class= است که در زمان اجرا حل می‌شود؛ بنابراین تا زمانی که فایل JAR حاوی کلاس در مسیر کلاس Java مربوط به Tradefed هنگام اجرا باشد، پیدا و حل خواهد شد.

ترتیب اشیای Tradefed

ترتیب برچسب‌های مختلف مهم نیست. برای مثال، اگر build_provider بعداز target_preparer مشخص شود، تفاوتی ایجاد نمی‌کند. جریان فراخوانی آزمایش توسط خود مهارکننده اعمال می‌شود، بنابراین همیشه آن‌ها را به ترتیب درست فراخوانی می‌کند.

ترتیب اشیاء با برچسب یکسان مهم است. برای مثال، دو target_preparer شیء تعریف‌شده به‌ترتیب تعریفشان در XML فراخوانی خواهند شد. درک این موضوع مهم است زیرا می‌تواند وضعیت نهایی راه‌اندازی دستگاه را تغییر دهد. برای مثال، نصب کردن رام و سپس نصب فایل apk با نصب فایل apk و سپس نصب کردن رام یکسان نیست زیرا نصب رام باعث پاک شدن دستگاه می‌شود.