Per comprendere questa sezione, esamina innanzitutto la sezione @Option.
Le opzioni tipiche di Tradefed consentono alle classi di test di ricevere dalla configurazione XML o dalla riga di comando. Questa funzione ti consente di fare un ulteriore passaggio e risolvere alcune di queste informazioni aggiuntive necessaria.
Esempio di opzione file
File di esempio @option:
@Option(name = 'config-file')
private File mConfigFile;
quanto sopra può essere impostato tramite la configurazione XML:
<option name="config-file" value="/tmp/file" />
o tramite comando:
--config-file /tmp/file
Descrizione
La funzione consente di risolvere @Options di tipo file che sono remoti in un in locale siano disponibili senza problemi dal punto di vista dell'utente.
Affinché questa operazione funzioni, il file deve essere specificato con un percorso in stile remoto. Ad esempio:
--config-file gs://bucket/tmp/file
Questo percorso punta a un file all'interno di un bucket Google Cloud Storage (GCS) in cui
archiviati. Tradefed, dopo aver visto il percorso remoto, tenterà di scaricare il file localmente e di assegnarlo all'opzione @Option. Questo determina la variabile mConfigFile
per indirizzare alla versione locale del file, che può essere utilizzata dal test.
Se per qualsiasi motivo il file remoto non può essere scaricato, Tradefed mostrerà un messaggio
ConfigurationException
che impedirà l'esecuzione del test. Consideriamo
mancare questi file è un errore critico poiché anche alcuni artefatti di test verranno
mancante.
Utilizzare parametri di ricerca
L'aggiunta di parametri di query a un URL è possibile utilizzando ?
. Ad esempio:
gs://bucket/path?unzip=true
. La chiave-valore unzip=true
sarà disponibile in
il sistema IRemoteFileResolver
interfaccia
implementazione.
Sono disponibili due comportamenti integrati:
- decomprimi: se impostato su
true
e il file scaricato è in formato .zip, verrà decompressa automaticamente in una posizione temporanea. Esempio:?unzip=true
- facoltativo: il valore predefinito è
false
. Se il criterio è impostato sutrue
e la risoluzione non riesce, non genererà un'eccezione e semplicemente non sostituirà il file. Esempio:?optional=true
Puoi anche trasmettere gli argomenti della query globale tramite --dynamic-download-args key=value
che trasferirà la chiave/valore a tutti i download dinamici tentati in
invocazione.
Protocolli supportati
I protocolli ufficialmente supportati e i relativi formati corrispondenti sono:
- Google Cloud Storage, protocollo:
gs
, formato:gs://<bucket name>/path
- File locali, protocollo:
file
, formato:file:/local/path
- Link http, protocollo:
http
, formato:http://url
- Link https, protocollo:
https
, formato:https://url
Limitazioni
La risoluzione dinamica di @Option attualmente supporta solo un numero limitato di protocolli e posizioni da cui eseguire il download. La risoluzione di @Option è attualmente abilitato solo per la configurazione XML Tradefed principale.
Se viene eseguito come suite, i moduli attuali (AndroidTest.xml
) non risolveranno i file per impostazione predefinita.
lo scopo di impedire ai moduli di creare alcune dipendenze sconosciute. Questo
può essere sottoposto a escape utilizzando --enable-module-dynamic-download
a livello di suite,
ma suite principali come il Compatibility Test Suite
(CTS) e Suite di test del fornitore
(VTS) non lo abiliterà.
Implementare un nuovo protocollo
I protocolli supportati hanno un'implementazione in TradeFed dell'interfaccia IRemoteFileResolver, che definisce il tag breve del protocollo che verrà associato nel percorso del file tramite getSupportedProtocol
. Ad esempio, gs
viene utilizzato per
protocollo Google Cloud Storage. L'interfaccia consigliata da implementare è
#resolveRemoteFiles(RemoteFileResolverArgs)
, che sarà la soluzione a lungo termine
completamente gestita.
I protocolli implementati possono essere aggiunti al braccio META-INF per attivare ufficialmente il supporto.