ساختار سطح بالا پیکربندی XML Tradefed

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

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

سفارشات اشیاء معامله شده

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

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