檢查系統狀態

系統狀態檢查程式 (SSC) 是在套件層級設定中定義,並在每個模組之間執行。這些檢查會判斷模組是否已變更,且未還原某些指定狀態,例如變更系統屬性值。

SSC 主要用於確保模組編寫人員不會忘記在測試後清除資料;但如果他們忘記,SSC 會提供相關追蹤記錄,以便解決問題。

次要用途是盡可能還原原始狀態,例如關閉未關閉的 Keyguard。

系統狀態檢查工具 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" />

SSCs 是在 Tradefed 設定 XML 的 system_checker 標記下定義。

實作

每個 SSC 都必須實作 ISystemStatusChecker 介面,此介面提供兩個主要方法 preExecutionCheckpostExecutionCheck,分別在每個模組執行前後執行。

檢查器可以只實作其中一個,也可以視需要實作兩者,以便檢查模組前後的狀態並加以比較。

Tradefed 中有幾個範例實作。建議每個實作項目都著重於單一檢查,以提高重複使用性。舉例來說, SystemServerStatusCheck 會檢查測試套件執行期間,裝置上的 system_server 程序是否重新啟動。在 postExecutionCheck 中,它會呼叫 deviceSoftRestarted,這是在 NativeDevice 中定義,用於檢查 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,讓系統檢查程式報告本身成為測試失敗項目。這會導致測試執行作業顯示失敗,失敗原因是狀態檢查器特定檢查。