Systemstatus-Checker werden in der Konfiguration auf Suite-Ebene definiert und zwischen den einzelnen Modulen ausgeführt. Sie prüfen, ob sich das Modul geändert hat und einige bestimmte Status nicht wiederhergestellt wurden, z. B. beim Ändern eines Systemattributwerts.
SSCs werden hauptsächlich verwendet, damit die Modulautoren nicht vergessen, nach ihren Tests aufzuräumen. Falls dies doch passiert, wird eine Spur hinterlassen, damit das Problem behoben werden kann.
Eine sekundäre Verwendung besteht darin, nach Möglichkeit den ursprünglichen Zustand wiederherzustellen, z. B. den Sperrbildschirm zu schließen, wenn er offen gelassen wurde.
XML-Definition für den Systemstatusprüfer
<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" />
SSCs werden im Tradefed-Konfigurations-XML-Code unter dem Tag system_checker
definiert.
Implementierung
Jede SSK muss die ISystemStatusChecker
-Schnittstelle implementieren. Sie enthält die beiden Hauptmethoden preExecutionCheck
und postExecutionCheck
, die vor und nach jeder Modulausführung ausgeführt werden.
Eine Prüffunktion kann nur eine der beiden Methoden implementieren oder beide implementieren, wenn es erforderlich ist, den Status vor dem Modul zu überprüfen und mit dem Status nach dem Modul zu vergleichen.
In Tradefed gibt es mehrere Beispielimplementierungen. Bei jeder Implementierung wird empfohlen, sich auf eine einzelne Prüfung zu konzentrieren, um die Wiederverwendbarkeit zu verbessern. Mit SystemServerStatusCheck
wird beispielsweise geprüft, ob der system_server
-Prozess während der Ausführung der Testsuite auf dem Gerät neu gestartet wurde. Im postExecutionCheck
wird deviceSoftRestarted
aufgerufen, das in NativeDevice
definiert ist, um zu prüfen, ob der system_server
-Prozess neu gestartet wurde.
Jeder Vorgang gibt StatusCheckerResult
zurück. Dadurch kann das Netzwerk entscheiden, ob zusätzliche Informationen wie ein Fehlerbericht erfasst werden sollen.
Wo sind sie in CTS definiert?
Die CTS-Systemstatusprüfer sind in /test/suite_harness/tools/cts-tradefed/res/config/cts-system-checkers.xml definiert.
Fehler bei der Prüfung finden
Standardmäßig werden Fehler der Systemprüfung nur in den Logs und als Fehlerberichte angezeigt, die für den Aufruf erfasst wurden. Der Name muss das Format bugreport-checker-post-module-<module name>.zip
haben.
So können Sie herausfinden, nach welchem Modul der Fehlerbericht generiert wurde.
Sie können festlegen, dass der Systemcheck selbst als Testfehler gemeldet wird, indem Sie die Option --report-system-checkers
auf true
setzen. Dies führt dazu, dass der Testlauf als fehlgeschlagen angezeigt wird und als Grund für den Fehler die jeweilige Prüfung der Statusprüfung angegeben wird.