InstrumentationProtoResultParser
public
class
InstrumentationProtoResultParser
extends Object
implements
IInstrumentationResultParser
| java.lang.Object | |
| ↳ | com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser |
解析从 shell 运行的插桩测试的“protoStd 输出模式”结果,并将结果告知 ITestRunListener。
带有“-m”选项的 am instrument 命令会以二进制 protobuf 格式增量输出测试执行状态。输出 protobuf 消息为 InstrumentationData.Session,其中包含两个字段:1) InstrumentationData.TestStatus 的重复字段,2) InstrumentationData.SessionStatus。am instrument 命令会在每次测试执行之前/之后输出测试状态消息。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,
|
|
公共方法 | |
|---|---|
void
|
addOutput(byte[] data, int offset, int length)
每当有新数据可用时,系统都会调用此方法。 |
void
|
cancel()
请求取消测试运行。 |
void
|
flush()
在进程执行结束时调用(除非进程被取消)。 |
void
|
handleTestRunFailed(String errorMsg)
当“am instrument”命令因异常而崩溃时,系统会调用此方法。 |
boolean
|
isCancelled()
用于停止执行远程 shell 命令的取消方法。 |
公共构造函数
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 ()
请求取消测试运行。
flush
public void flush ()
在进程执行结束时调用(除非进程被取消)。这允许接收方终止并刷新尚未处理的任何数据。
handleTestRunFailed
public void handleTestRunFailed (String errorMsg)
当“am instrument”命令因异常而崩溃时,系统会调用此方法。如果测试执行期间发生崩溃,应先通知所有已注册的监听器 ITestRunListener.testRunFailed,然后再通知 ITestRunListener.testRunEnded(long, 。
| 参数 | |
|---|---|
errorMsg |
String |
isCancelled
public boolean isCancelled ()
用于停止执行远程 shell 命令的取消方法。
| 返回 | |
|---|---|
boolean |
如果为 true,则取消命令的执行。 |