Carica i protocolli con la configurazione globale

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