InstrumentationProtoResultParser
public
class
InstrumentationProtoResultParser
extends Object
implements
IInstrumentationResultParser
| java.lang.Object | |
| ↳ | com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser |
Parst die Ergebnisse des „protoStd“-Ausgabemodus eines Instrumentierungstests, der über die Shell ausgeführt wird, und informiert einen ITestRunListener über die Ergebnisse.
Der Instrument-Befehl mit der Option „-m“ gibt den Status der Testausführung inkrementell im binären Protobuf-Format aus. Die ausgegebene Protobuf-Nachricht ist InstrumentationData.Session und hat zwei Felder: 1) ein wiederkehrendes Feld von InstrumentationData.TestStatus und 2) InstrumentationData.SessionStatus. Mit dem Befehl „am instrument“ wird vor und nach jeder Testausführung eine Teststatusmeldung ausgegeben. addOutput(byte, int, int) wird mit dem Argument data aufgerufen, das serialisierte Bytes von TestStatus(es) ist. Wenn alle Tests abgeschlossen sind, gibt der Befehl schließlich SessionStatus aus.
Eine vollständige Protobuf-Definition finden Sie unter https://cs.android.com/android/platform/superproject/+/master:frameworks/base/cmds/am/proto/instrumentation_data.proto.
InstrumentationProtoResultParser ist eine Zustandsmaschine und die Zustände sind in ERROR(InstrumentationProtoResultParserState/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState InstrumentationProtoResultParserState) definiert. Der Status beginnt mit ERROR(/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#NOT_STARTED). Wenn der Status des ersten Testlaufes angezeigt wird, wechselt der Status zu ERROR(InstrumentationProtoResultParserState.RUNNING/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#RUNNING InstrumentationProtoResultParserState.RUNNING). Der Status ändert sich in ERROR(/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#FINISHED), wenn alle Tests abgeschlossen sind, oder in ERROR(/com.android.tradefed.result.ddmlib.InstrumentationProtoResultParser.InstrumentationProtoResultParserState#CANCELLED), wenn er durch Aufrufen von cancel() angefordert wird.
Jedes Mal, wenn ein neuer Teststatus verfügbar ist, werden die registrierten Listener benachrichtigt.
Zusammenfassung
Öffentliche Konstruktoren | |
|---|---|
InstrumentationProtoResultParser(String runName,
Erstellt |
|
Öffentliche Methoden | |
|---|---|
void
|
addOutput(byte[] data, int offset, int length)
Diese Methode wird jedes Mal aufgerufen, wenn neue Daten verfügbar sind. |
void
|
cancel()
Fordert den Abbruch des Testlaufs an. |
void
|
flush()
Wird am Ende der Prozessausführung aufgerufen, sofern der Prozess nicht abgebrochen wurde. |
void
|
handleTestRunFailed(String errorMsg)
Diese Methode wird aufgerufen, wenn der Befehl „am instrument“ mit einer Ausnahme abstürzt. |
boolean
|
isCancelled()
Mit der Methode „Abbrechen“ wird die Ausführung des Remote-Shell-Befehls beendet. |
Öffentliche Konstruktoren
InstrumentationProtoResultParser
public InstrumentationProtoResultParser (String runName,
listeners) Erstellt InstrumentationProtoResultParser.
| Parameter | |
|---|---|
runName |
String: Der Name des Testlaufs, der für ITestRunListener.testRunStarted angegeben werden soll. |
listeners |
: über Testergebnisse informiert werden, während die Tests ausgeführt werden |
Öffentliche Methoden
addOutput
public void addOutput (byte[] data,
int offset,
int length)Diese Methode wird jedes Mal aufgerufen, wenn neue Daten verfügbar sind.
| Parameter | |
|---|---|
data |
byte: Serialisierte Daten der InstrumentationData.Session-Nachricht. Wenn data
ein unvollständiger Chunk ist, wird er einem internen Puffer hinzugefügt und beim nächsten addOutput(byte, int, int)-Aufruf verarbeitet. |
offset |
int: ein Offset der neuen Daten, die in data gespeichert sind |
length |
int: Die Anzahl der Byte der neuen Daten in data, die verarbeitet werden sollen. |
Abbrechen
public void cancel ()
Fordert den Abbruch des Testlaufs an.
leeren
public void flush ()
Wird am Ende der Prozessausführung aufgerufen, sofern der Prozess nicht abgebrochen wurde. So kann der Empfänger alle Daten beenden und leeren, die noch nicht verarbeitet wurden.
handleTestRunFailed
public void handleTestRunFailed (String errorMsg)
Diese Methode wird aufgerufen, wenn der Befehl „am instrument“ mit einer Ausnahme abstürzt. Alle registrierten Listener sollten ITestRunListener.testRunFailed gefolgt von ITestRunListener.testRunEnded(long, benachrichtigt werden, wenn der Absturz während der Testausführung auftritt.
| Parameter | |
|---|---|
errorMsg |
String |
isCancelled
public boolean isCancelled ()
Mit der Methode „Abbrechen“ wird die Ausführung des Remote-Shell-Befehls beendet.
| Returns | |
|---|---|
boolean |
„true“, um die Ausführung des Befehls abzubrechen. |