Protokolle mit globaler Konfiguration laden

Um diesen Abschnitt besser verstehen zu können, solltest du dir zuerst einen Überblick über Tradefed verschaffen. @Option:

Mit den typischen Optionen in Tradefed können Testklassen zusätzliche aus der XML-Konfiguration oder der Befehlszeile abrufen. Mit dieser Funktion können Sie um einen zusätzlichen Schritt und einige dieser zusätzlichen Informationen zu klären, notwendig ist.

Beispiel für eine Dateioption

Beispieldatei @option:

@Option(name = 'config-file')
private File mConfigFile;

Dies kann über die XML-Konfiguration festgelegt werden:

<option name="config-file" value="/tmp/file" />

oder per Befehl:

--config-file /tmp/file

Beschreibung

Mit dieser Funktion können Sie remote typisierte @Options in eine lokale Datei, damit sie aus Sicht der Nutzenden nahtlos verfügbar ist.

Dazu muss die Datei mit einem Remote-Stilpfad angegeben werden. Für Beispiel:

--config-file gs://bucket/tmp/file

Dieser Pfad verweist auf eine Datei in einem Google Cloud Storage-Bucket (GCS), in dem sie sich befindet. gespeichert sind. Wird beim Ansehen des Remote-Pfads getauscht, versucht, die Datei herunterzuladen lokal und weisen es der @Option zu. Daraus ergibt sich die Variable mConfigFile, , um jetzt auf die lokale Version der Datei zu verweisen, die vom Test verwendet werden kann.

Wenn die Remote-Datei aus irgendeinem Grund nicht heruntergeladen werden kann, gibt Tradefed eine ConfigurationException, die die Ausführung des Tests verhindern. Wir berücksichtigen ist ein kritischer Fehler, da einige Testartefakte fehlen.

Abfrageparameter verwenden

Mit ? können einer URL Suchparameter hinzugefügt werden. Beispiel: gs://bucket/path?unzip=true Das Schlüssel/Wert-Paar unzip=true ist verfügbar in den IRemoteFileResolver Implementierung.

Es sind zwei integrierte Verhaltensweisen verfügbar:

  • Entpacken: Wenn die Einstellung auf true gesetzt ist und es sich bei der heruntergeladenen Datei um eine ZIP-Datei handelt, wird sie automatisch an einem temporären Speicherort entpackt wurde. Beispiel: ?unzip=true
  • optional: Die Standardeinstellung ist false. Ist true festgelegt und die Auflösung schlägt fehl, löst keine Ausnahme aus und ersetzt die Datei einfach nicht. Beispiel: ?optional=true

Sie können globale Abfrageargumente auch über --dynamic-download-args key=value übergeben. mit der das Schlüssel/Wert-Paar an alle dynamischen Downloads im .

Unterstützte Protokolle

Die offiziell unterstützten Protokolle und die entsprechenden Formate sind:

  • Google Cloud Storage, Protokoll: gs, Format: gs://<bucket name>/path
  • Lokale Dateien, Protokoll: file, Format: file:/local/path
  • HTTP-Links, Protokoll: http, Format: http://url
  • HTTPS-Links, Protokoll: https, Format: https://url

Beschränkungen

Die dynamische Auflösung von @Option unterstützt derzeit nur eine begrenzte Anzahl von und Speicherorte für den Download. Die Auflösung von @Option ist derzeit nur für die XML Tradefed-Hauptkonfiguration aktiviert.

Bei der Ausführung als Suite lösen die aktuellen Module (AndroidTest.xml) das Problem nicht auf standardmäßig auf Dateien zugreifen. Dadurch soll verhindert werden, dass Module einige unbekannte Abhängigkeiten erstellen. Dieses kann mit --enable-module-dynamic-download auf Suiteebene maskiert werden, Die großen Suiten wie die Kompatibilitätstest-Suite (CTS) und die Vendor Test Suite (VTS) wird sie nicht aktiviert.

Neues Protokoll implementieren

Die unterstützten Protokolle haben eine Tradefed-Implementierung des IRemoteFileResolver Schnittstelle definiert das kurze Tag des Protokolls, das im Dateipfad durch getSupportedProtocol. gs wird z. B. für Folgendes verwendet: Google Cloud Storage-Protokoll. Die empfohlene Schnittstelle zum Implementieren #resolveRemoteFiles(RemoteFileResolverArgs) (langfristig betrachtet) verwalteten Schnittstelle.

Die implementierten Protokolle können dem META-INF Dienste um den Support offiziell zu aktivieren.