Structure de haut niveau de la configuration XML Tradefed

Les configurations de Tradefed suivent une structure XML pour décrire le test à exécuter et les étapes de préparation/configuration à effectuer.

En théorie, tout peut être défini en XML pour une seule commande. Toutefois, en pratique, il est plus pratique de disposer de fichiers XML de modèle de base et de les personnaliser avec des paramètres de ligne de commande supplémentaires.

Structure

<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>

Le fichier XML Tradefed global est délimité par des balises <configuration>. Les Tradefed objects sont définis dans leurs propres balises, par exemple: build_provider, target_preparer, test, etc. Leurs objectifs individuels sont décrits plus en détail dans la section Architecture.

Chaque objet a la classe Java associée à l'objet défini dans class= qui est résolu au moment de l'exécution. Par conséquent, tant que le fichier JAR contenant la classe se trouve sur le chemin d'accès au classpath Java de Tradefed lors de l'exécution, il sera trouvé et résolu.

Commandes d'objets Tradefed

L'ordre des différentes balises n'a pas d'importance. Par exemple, il n'y a aucune différence si build_provider est spécifié après target_preparer. Le flux de l'appel de test est appliqué par le harnais lui-même. Il les appellera donc toujours dans le bon ordre.

L'ordre des objets avec la même balise est important. Par exemple, deux objets target_preparer définis seront appelés dans leur ordre de définition dans le fichier XML. Il est important de bien comprendre cela, car cela peut modifier l'état final de la configuration de l'appareil. Par exemple, flasher puis installer un APK ne revient pas à installer un APK et flasher, car le flashage effacerait l'appareil.