システム ステータスを確認する

システム ステータス チェッカー(SSC)は、スイートレベルの設定で定義され、各モジュール間で実行されます。システム プロパティ値の変更など、モジュールが変更されて特定の状態が復元されなかったかどうかのチェックを行います。

SSC は主に、モジュール作成者がテスト後にクリーンアップを忘れないようにするために使用されます。忘れた場合は、対処できるようにトレースを提供します。

もう 1 つの用途として、可能な場合に元の状態を復元することもできます。たとえば、キーガードが開いたままになっている場合にそのキーガードを閉じます。

システム ステータス チェッカーの 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 インターフェースを実装する必要があります。これは各モジュールの前後に実行される 2 つの主要なメソッド preExecutionCheckpostExecutionCheck を提供します。

チェッカーは、この 2 つのうち 1 つのみを実装することも、両方実装することもできます(モジュールの前の状態をチェックしてモジュールの後の状態と比較する必要がある場合)。

Tradefed には実装例がいくつかあります。各実装は、再利用性を高めるため、1 つのチェックに集中することをおすすめします。たとえば 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 に設定することで、システム チェッカーがテスト不合格としてレポートするようにできます。これにより、ステータス チェッカーの特定のチェックに基づいて、テストの実行が不合格として表示されます。