InstrumentationProtoResultParser

public class InstrumentationProtoResultParser
extends Object implements IInstrumentationResultParser

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


แยกวิเคราะห์ผลลัพธ์ "โหมดเอาต์พุต protoStd" ของการทดสอบเครื่องมือที่เรียกใช้จากเชลล์และแจ้งผลลัพธ์ให้ ITestRunListener ทราบ

คำสั่งเครื่องมือที่มีตัวเลือก "-m" จะแสดงสถานะการดำเนินการทดสอบในรูปแบบ protobuf แบบไบนารี ทีละรายการ ข้อความ Protobuf เอาต์พุตคือ InstrumentationData.Session ซึ่งมี 2 ฟิลด์ ได้แก่ 1) ฟิลด์ที่ซ้ำได้ของ InstrumentationData.TestStatus และ 2) InstrumentationData.SessionStatus คำสั่งเครื่องมือ am จะแสดงข้อความสถานะการทดสอบ ก่อน/หลังการทดสอบแต่ละครั้ง addOutput(byte, int, int) จะเรียกใช้ด้วยอาร์กิวเมนต์ data ซึ่งเป็นไบต์ที่จัดลำดับแล้วของ TestStatus(es) เมื่อการทดสอบทั้งหมดเสร็จสิ้นแล้ว คำสั่ง จะแสดงผล 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) หากการทดสอบทั้งหมดเสร็จสมบูรณ์ หรือ ERROR(/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#CANCELLED) หากมีการขอโดยการเรียกใช้ cancel()

ทุกครั้งที่มีสถานะการทดสอบใหม่ ผู้ฟังที่ลงทะเบียนจะได้รับแจ้ง

สรุป

เครื่องมือสร้างสาธารณะ

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 เพื่อยกเลิกการดำเนินการคำสั่ง