InstrumentationProtoResultParser

public class InstrumentationProtoResultParser
extends Object implements IInstrumentationResultParser

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


यह शेल से इंस्ट्रुमेंटेशन टेस्ट रन के 'protoStd output mode' के नतीजों को पार्स करता है. साथ ही, ITestRunListener को नतीजों के बारे में सूचना देता है.

"-m" विकल्प के साथ इंस्ट्रूमेंट कमांड, टेस्ट के एक्ज़ीक्यूशन की स्थिति को बाइनरी प्रोटोबफ़ फ़ॉर्मैट में धीरे-धीरे आउटपुट करती है. आउटपुट प्रोटॉबफ़ मैसेज InstrumentationData.Session है. इसमें दो फ़ील्ड हैं: 1) InstrumentationData.TestStatus का दोहराया गया फ़ील्ड, 2) InstrumentationData.SessionStatus. am instrument कमांड, हर टेस्ट के चलने से पहले/बाद में टेस्ट का स्टेटस मैसेज दिखाती है. addOutput(byte, int, int) को data आर्ग्युमेंट के साथ शुरू किया जाता है. यह TestStatus का क्रम से लगाया गया बाइट होता है. सभी जांचें पूरी होने के बाद, कमांड आखिर में SessionStatus आउटपुट करती है.

प्रोटोबफ़ की पूरी परिभाषा के लिए, 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()

रिमोट शेल कमांड को बंद करने के लिए, cancel तरीके का इस्तेमाल करें.

पब्लिक कंस्ट्रक्टर

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 ()

रिमोट शेल कमांड को बंद करने के लिए, cancel तरीके का इस्तेमाल करें.

रिटर्न
boolean कमांड को रद्द करने के लिए, इस वैल्यू को true पर सेट करें.