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, listeners)

Erstellt InstrumentationProtoResultParser.

Ö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.