系統狀態檢查器 (SSC) 在套件層級配置中定義並在每個模組之間運作。它們執行檢查以確定模組是否已更改並且未恢復某些給定狀態,例如更改系統屬性值。
SSC 主要用於確保模組編寫者在測試後不會忘記進行清理;但如果他們這樣做了,請提供其踪跡,以便可以解決。
第二個用途是在可能的情況下恢復原始狀態,例如,如果鍵盤保護裝置保持開啟狀態,則將其關閉。
系統狀態檢查器 XML 定義
<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" />
SSC 在 Tradefed 配置 XML 中的system_checker
標籤下定義。
執行
每個SSC都必須實作ISystemStatusChecker
接口,該接口提供了在每個模組執行之前和之後運行的兩個主要方法preExecutionCheck
和postExecutionCheck
。
檢查器可以僅實現兩者之一,或者如果需要檢查模組之前的狀態並將其與模組之後的狀態進行比較,則可以實現兩者。
Tradefed 中存在多個範例實作。建議每個實作都集中於單一檢查以提高可重複使用性。例如, SystemServerStatusCheck
檢查在測試套件執行期間system_server
程序是否在裝置上重新啟動。在postExecutionCheck
中,它呼叫NativeDevice
中定義的deviceSoftRestarted
來檢查system_server
進程是否重新啟動。
每個操作都會傳回StatusCheckerResult
,它讓工具決定是否應該捕獲其他資訊(例如錯誤報告)。
它們在 CTS 中的哪裡定義?
CTS 系統狀態檢查器在/test/suite_harness/tools/cts-tradefed/res/config/cts-system-checkers.xml中定義。
如何查找檢查器故障
預設情況下,系統檢查器故障僅顯示在日誌中以及為呼叫捕獲的錯誤報告,其名稱遵循格式bugreport-checker-post-module-<module name>.zip
。
這可以讓您找出錯誤報告是在哪個模組之後產生的。
將--report-system-checkers
選項設為true
,可以使系統檢查器報告為測試失敗本身。這會導致測試運行顯示為失敗,失敗原因是狀態檢查器的特定檢查。