Les vérificateurs d'état du système (SSC, System Status Checker) sont définis au niveau de la configuration de la suite et exécutés entre chaque module. Ils effectuent des vérifications pour déterminer si le module a changé et s'il 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 de nettoyer après leurs tests. Toutefois, s'ils l'oublient, fournissez une trace pour qu'elle puisse être traitée.
Une utilisation secondaire consiste également à restaurer l'état d'origine lorsque cela est possible, par exemple en fermant le verrouillage du clavier s'il était 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 principales méthodes preExecutionCheck
et postExecutionCheck
qui s'exécutent avant et après chaque exécution de module.
Un vérificateur peut n'implémenter qu'un seul des deux ou les deux si vous devez vérifier l'état avant le module et le comparer à l'état après le module.
Tradefed propose plusieurs exemples d'implémentations. Il est recommandé de se concentrer sur une seule vérification pour chaque implémentation afin d'améliorer la réutilisation. Par exemple, SystemServerStatusCheck
vérifie si le processus system_server
a redémarré sur l'appareil pendant 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 collecté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.
Détecter les erreurs de l'outil 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 bugs capturés pour l'appel avec un nom au 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é.
Vous pouvez faire en sorte que le vérificateur du système signale un échec de test en définissant l'option --report-system-checkers
sur true
. L'exécution du test s'affiche comme ayant échoué, et la raison de l'échec est la vérification spécifique du vérificateur d'état.