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이며, 여기에는 1) InstrumentationData.TestStatus의 반복 필드, 2) InstrumentationData.SessionStatus의 두 필드가 있습니다. am instrument 명령어는 각 테스트 실행 전후에 테스트 상태 메시지를 출력합니다. addOutput(byte, int, int)TestStatus의 직렬화된 바이트인 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입니다.