Utiliser des contrôleurs de module

Chaque module de suite (défini par AndroidTest.xml) peut contenir un objet module_controller spécial qui peut modifier certains comportements du module :

Exécuter ou non le module en fonction de certaines conditions

En implémentant BaseModuleController et en l'ajoutant à AndroidTest.xml comme suit :

<object type="module_controller" class="com.android.tradefed.testtype.suite.module.<NAME>" />

Le contrôleur de module sera utilisé pour déterminer si le module doit s'exécuter ou non, en fonction de l'implémentation public abstract RunStrategy shouldRun(IInvocationContext context);.

Collecter ou non certains journaux en cas d'échec

Lors de l'exécution d'une suite complète, il est possible de demander au niveau de la suite la collecte de certains journaux en cas d'échec (capture d'écran, rapport de bug, logcat). Toutefois, pour certains modules, un journal particulier demandé peut ne pas avoir de valeur et sa collecte ne fera que perdre du temps. Dans ce cas, un module peut spécifier explicitement les journaux qui l'intéressent :

<object type="module_controller"
        class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
    <option name="screenshot-on-failure" value="<true OR false>" />
    <option name="bugreportz-on-failure" value="<true OR false>" />
    <option name="logcat-on-failure" value="<true OR false>" />
</object>

REMARQUE : L'implémentation des contrôleurs doit être générique si possible afin de maximiser la réutilisation. En outre, l'omission d'un module en fonction de sa condition doit être examinée par le propriétaire du module pour obtenir l'approbation selon laquelle l'omission d'un module est le comportement approprié pour lui.