InstrumentationProtoResultParser

public class InstrumentationProtoResultParser
extends Object implements IInstrumentationResultParser

java.lang.Object
   ↳ com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser


シェルから実行されたインストルメンテーション テストの「protoStd 出力モード」の結果を解析し、ITestRunListener に結果を通知します。

「-m」オプション付きの am instrument コマンドは、テスト実行ステータスをバイナリ protobuf 形式で増分的に出力します。出力 protobuf メッセージは InstrumentationData.Session です。これには、InstrumentationData.TestStatus の繰り返しフィールドと InstrumentationData.SessionStatus の 2 つのフィールドがあります。am instrument コマンドは、各テスト実行の前後にテスト ステータス メッセージを出力します。addOutput(byte, int, int) は、TestStatus(es) のシリアル化されたバイトである data 引数で呼び出されます。すべてのテストが完了すると、コマンドは最後に SessionStatus を出力します。

完全な protobuf 定義については、https://cs.android.com/android/platform/superproject/+/master:frameworks/base/cmds/am/proto/instrumentation_data.proto をご覧ください。

InstrumentationProtoResultParser はステートマシンであり、状態は ERROR(InstrumentationProtoResultParserState/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState InstrumentationProtoResultParserState) で定義されます。状態は ERROR(/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#NOT_STARTED) で始まります。最初のテストケースのステータスを確認すると、ERROR(InstrumentationProtoResultParserState.RUNNING/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#RUNNING InstrumentationProtoResultParserState.RUNNING) に移動します。すべてのテストが完了した場合は状態が ERROR(/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#FINISHED) に変わり、cancel() を呼び出してリクエストされた場合は ERROR(/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#CANCELLED) に変わります。

新しいテスト ステータスが利用可能になるたびに、登録済みのリスナーに通知されます。

概要

パブリック コンストラクタ

InstrumentationProtoResultParser(String runName, listeners)

InstrumentationProtoResultParser を構築します。

パブリック メソッド

void addOutput(byte[] data, int offset, int length)

このメソッドは、新しいデータが利用可能になるたびに呼び出されます。

void cancel()

テスト実行のキャンセルをリクエストします。

void flush()

プロセスの実行の終了時に呼び出されます(プロセスがキャンセルされた場合を除く)。

void handleTestRunFailed(String errorMsg)

このメソッドは、「am instrument」コマンドが例外でクラッシュしたときに呼び出されます。

boolean isCancelled()

リモートシェル コマンドの実行を停止するキャンセル メソッド。

パブリック コンストラクタ

InstrumentationProtoResultParser

public InstrumentationProtoResultParser (String runName, 
                 listeners)

InstrumentationProtoResultParser を構築します。

パラメータ
runName String: ITestRunListener.testRunStarted に提供するテスト実行名

listeners : テストの実行中にテスト結果が通知される

パブリック メソッド

addOutput

public void addOutput (byte[] data, 
                int offset, 
                int length)

このメソッドは、新しいデータが利用可能になるたびに呼び出されます。

パラメータ
data byte: InstrumentationData.Session メッセージのシリアル化されたデータ。data が不完全なチャンクである場合、内部バッファに追加され、次の addOutput(byte, int, int) 呼び出しで処理されます。

offset int: data に保存されている新しいデータのオフセット

length int: 処理する data の新しいデータのバイト数。

キャンセル

public void cancel ()

テスト実行のキャンセルをリクエストします。

フラッシュ

public void flush ()

プロセスの実行終了時に呼び出されます(プロセスがキャンセルされた場合を除く)。これにより、受信側はまだ処理されていないデータを終了してフラッシュできます。

handleTestRunFailed

public void handleTestRunFailed (String errorMsg)

このメソッドは、「am instrument」コマンドが例外でクラッシュしたときに呼び出されます。テスト実行中にクラッシュが発生した場合、登録されているすべてのリスナーに ITestRunListener.testRunFailed が通知され、その後に ITestRunListener.testRunEnded(long, ) が通知されます。

パラメータ
errorMsg String

isCancelled

public boolean isCancelled ()

リモートシェル コマンドの実行を停止するキャンセル メソッド。

戻り値
boolean コマンドの実行をキャンセルする場合は true。