Vérifier l'état du système

Les vérificateurs d'état du système (SSC, System Status Checkers) sont définis au niveau de la configuration de la suite et s'exécutent entre chaque module. Ils effectuent des vérifications pour déterminer si le module a changé et n'a pas restauré certains états donnés, par exemple en modifiant la valeur d'une propriété système.

Les SSC sont principalement utilisés pour s'assurer que les auteurs de modules n'oublient pas d'effectuer un nettoyage après leurs tests. S'ils le font, ils doivent fournir une trace afin que le problème puisse être résolu.

Une autre utilisation consiste à restaurer l'état d'origine lorsque cela est possible, par exemple en fermant le verrouillage de l'écran s'il est resté ouvert.

Définition XML du vérificateur d'état du système

<system_checker class="com.android.tradefed.suite.checker.KeyguardStatusChecker" />
<system_checker class="com.android.tradefed.suite.checker.LeakedThreadStatusChecker" />
<system_checker class="com.android.tradefed.suite.checker.SystemServerStatusChecker" />

Les SSC sont définis sous le tag system_checker dans le fichier XML de configuration Tradefed.

Implémentation

Chaque SSC doit implémenter l'ISystemStatusChecker interface, qui fournit les deux méthodes principales preExecutionCheck et postExecutionCheck qui s'exécutent avant et après chaque exécution de module.

Il est possible qu'un vérificateur n'implémente qu'une seule des deux méthodes, ou les deux s'il est nécessaire de vérifier l'état avant le module et de le comparer à l'état après le module.

Plusieurs exemples d'implémentation existent dans Tradefed. Il est recommandé que chaque implémentation se concentre sur une seule vérification afin d'améliorer la réutilisabilité. Par exemple, SystemServerStatusCheck vérifie si le processus system_server a redémarré sur l'appareil lors de l'exécution de la suite de tests. Dans le postExecutionCheck, il appelle deviceSoftRestarted, qui est défini dans NativeDevice pour vérifier si le processus system_server a redémarré.

Chaque opération renvoie StatusCheckerResult, ce qui permet au harnais de décider si des informations supplémentaires, comme un rapport de bug, doivent être capturées.

Où sont-ils définis dans CTS ?

Les vérificateurs d'état du système CTS sont définis dans /test/suite_harness/tools/cts-tradefed/res/config/cts-system-checkers.xml.

Comment trouver les échecs de vérification

Par défaut, les échecs de vérification du système ne s'affichent que dans les journaux et sous forme de rapports de bug capturés pour l'appel avec le nom suivant le format bugreport-checker-post-module-<module name>.zip.

Cela vous permet de savoir après quel module le rapport de bug a été généré.

Il est possible de faire en sorte que le rapport du vérificateur de système soit lui-même un échec du test en définissant l'option --report-system-checkers sur true. Cela entraîne l'échec d'une exécution de test, la raison de l'échec étant la vérification particulière du vérificateur d'état.