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. Dadurch verweist die Variable mConfigFile
jetzt auf die lokale Version der Datei, 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
Der Schlüssel/Wert unzip=true
ist in der Implementierung der IRemoteFileResolver-Schnittstelle verfügbar.
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
. Isttrue
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 Protokollen und Downloadorten. 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. Sie können dies mit --enable-module-dynamic-download
auf Suitenebene umgehen. In großen Suiten wie der Compatibility Test Suite (CTS) und der Vendor Test Suite (VTS) ist dies jedoch nicht möglich.
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)
, also der langfristige Wert,
verwalteten Schnittstelle.
Die implementierten Protokolle können dem META-INF Dienste um den Support offiziell zu aktivieren.