InstrumentationProtoResultParser

public class InstrumentationProtoResultParser
extends Object implements IInstrumentationResultParser

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


解析从 shell 运行的插桩测试的“protoStd 输出模式”结果,并将结果告知 ITestRunListener。

带有“-m”选项的 am 插桩命令会以二进制 protobuf 格式增量输出测试执行状态。输出 protobuf 消息为 InstrumentationData.Session,其中包含两个字段:1) 重复字段 InstrumentationData.TestStatus,2) InstrumentationData.SessionStatus。am 插桩命令会在每次测试执行前/后输出测试状态消息。addOutput(byte, int, int) 使用 data 参数(即 TestStatus 的序列化字节)进行调用。所有测试完成后,该命令最后会输出 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)
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 byteInstrumentationData.Session 消息的序列化数据。如果 data 是未完成的块,则会添加到内部缓冲区,并在下一次 addOutput(byte, int, int) 调用中进行处理。

offset int:存储在 data 中的新数据的偏移量

length int:要处理的 data 中新数据的字节数。

取消

public void cancel ()

flush

public void flush ()

handleTestRunFailed

public void handleTestRunFailed (String errorMsg)

参数
errorMsg String

isCancelled

public boolean isCancelled ()

返回
boolean