Vérifier l'état du système

Les vérificateurs d'état du système (SSC) 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 rédacteurs de modules n'oublient pas de nettoyer après leurs tests, mais si c'est le cas, ils fournissent une trace pour que le problème puisse être résolu.

Un autre usage secondaire consiste à restaurer l'état d'origine lorsque cela est possible, par exemple en fermant le keyguard 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 la balise system_checker dans le fichier XML de configuration Tradefed.

Implémentation

Chaque SSC doit implémenter l'interface ISystemStatusChecker, 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, 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 pour 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 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 le 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.

Trouver les échecs de vérification

Par défaut, les échecs du vérificateur système ne s'affichent que dans les journaux et sous forme de rapports de bug capturés pour l'appel dont le nom suit 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 système soit considéré comme un échec du test en définissant l'option --report-system-checkers sur true. L'exécution du test est alors indiquée comme ayant échoué, et la raison de l'échec est la vérification spécifique du vérificateur d'état.