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

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

概要

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

InstrumentationProtoResultParser(String runName, Collection<ITestRunListener> 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, 
                Collection<ITestRunListener> listeners)

InstrumentationProtoResultParser を構築します。

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

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

パブリック メソッド

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 が通知されます。

パラメータ
errorMsg String

isCancelled

public boolean isCancelled ()

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

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