Pour bien comprendre cette section, vous devez d'abord étudier @Option
Les options Tradefed permettent généralement aux classes de test de recevoir à partir de la configuration XML ou de la ligne de commande. Cette fonctionnalité vous permet d'aller plus loin et de résoudre certaines de ces informations nécessaires.
Exemple d'option de fichier
Exemple de fichier @option:
@Option(name = 'config-file')
private File mConfigFile;
Les éléments ci-dessus peuvent être définis via une configuration XML:
<option name="config-file" value="/tmp/file" />
ou via une commande:
--config-file /tmp/file
Description
Cette fonctionnalité vous permet de résoudre les @Options de type fichier distants dans un d'un fichier local d'être disponible facilement du point de vue de l'utilisateur.
Pour que cela fonctionne, le fichier doit être spécifié avec un chemin d'accès de style distant. Exemple :
--config-file gs://bucket/tmp/file
Ce chemin d'accès pointe vers un fichier dans un bucket Google Cloud Storage (GCS) où il se trouve
stockées. Tradefed, lorsqu'il voit ce chemin d'accès distant, tente de télécharger le fichier localement et de l'attribuer à l'option @. La variable mConfigFile
pointe désormais vers la version locale du fichier, qui peut être utilisée par le test.
Si, pour une raison quelconque, le fichier distant ne peut pas être téléchargé, Tradefed génère une
ConfigurationException
qui empêche l'exécution du test. Nous prenons en compte
manquer ces fichiers un échec critique puisque certains artefacts de test seront également
sont manquantes.
Utiliser des paramètres de requête
Vous pouvez ajouter des paramètres de requête à une URL à l'aide de ?
. Par exemple, gs://bucket/path?unzip=true
. La clé-valeur unzip=true
sera disponible dans
la classe IRemoteFileResolver
de commande
la mise en œuvre.
Deux comportements intégrés sont disponibles:
- unzip : si cette valeur est définie sur
true
et que le fichier téléchargé est un fichier ZIP, il sera automatiquement décompressé dans un emplacement temporaire. Exemple:?unzip=true
- (facultatif) : la valeur par défaut est
false
. Si la valeur esttrue
et que la résolution échoue, ne générera pas d'exception et ne remplacera tout simplement pas le fichier. Exemple:?optional=true
Vous pouvez également transmettre des arguments de requête globaux via --dynamic-download-args key=value
.
qui transmet la clé-valeur à tous les téléchargements dynamiques tentés dans le
appel.
Protocoles compatibles
Voici les protocoles officiellement acceptés et les formats correspondants :
- Google Cloud Storage, protocole:
gs
, format:gs://<bucket name>/path
- Fichiers locaux, protocole:
file
, format:file:/local/path
- Liens HTTP, protocole:
http
, format:http://url
- Liens https, protocole:
https
, format:https://url
Limites
La résolution dynamique de @Option n'accepte actuellement qu'un nombre limité de des protocoles et des emplacements à partir desquels télécharger. La résolution de @Option est actuellement activé uniquement pour la configuration principale XML Tradefed.
S'ils sont exécutés en tant que suite, les modules actuels (AndroidTest.xml
) ne résoudront pas le problème
fichiers par défaut.
Cela vise à empêcher les modules de créer des dépendances inconnues. Ce
peuvent être échappés à l'aide de --enable-module-dynamic-download
au niveau de la suite.
mais des suites majeures telles que la Compatibility Test Suite
(CTS) et la suite de test pour les fournisseurs
(VTS) ne l'active pas.
Implémenter un nouveau protocole
Les protocoles compatibles sont implémentés dans Tradefed de l'interface IRemoteFileResolver, qui définit la balise courte du protocole qui sera mise en correspondance dans le chemin d'accès au fichier via getSupportedProtocol
. Par exemple, gs
est utilisé pour
Protocole Google Cloud Storage. L'interface recommandée à implémenter est
#resolveRemoteFiles(RemoteFileResolverArgs)
, qui correspond à la période à long terme
gérée.
Les protocoles implémentés peuvent être ajoutés au fichier harce META-INF. services pour activer officiellement la prise en charge.