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