Carica i protocolli con la configurazione globale

Per comprendere questa sezione, studia prima Tradefed @Option .

Le opzioni tipiche in Tradefed consentono alle classi di test di ricevere informazioni aggiuntive dalla configurazione XML o dalla riga di comando. Questa funzionalità ti consente di fare un ulteriore passo avanti e risolvere alcune di queste informazioni aggiuntive, se necessario.

Esempio di opzione file

File di esempio @opzione:

@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 le @Option digitate su file remote in un file locale per essere disponibili senza problemi dal punto di vista dell'utente.

Perché funzioni, il file deve essere specificato con un percorso di stile remoto . Per esempio:

--config-file gs://bucket/tmp/file

Questo percorso punta a un file all'interno di un bucket Google Cloud Storage (GCS) in cui è archiviato. Tradefed dopo aver visto il percorso remoto, tenterà di scaricare il file localmente e di assegnarlo a @Option. Ciò fa sì che la variabile mConfigFile ora punti alla versione locale del file, che può essere utilizzata dal test.

Se per qualsiasi motivo non è possibile scaricare il file remoto, Tradefed lancerà una ConfigurationException che impedirà l'esecuzione del test. Consideriamo la mancanza di questi file un errore critico poiché mancheranno anche alcuni artefatti del test.

Utilizza parametri di query

È possibile aggiungere parametri di query a un URL utilizzando ? . Ad esempio, gs://bucket/path?unzip=true . La chiave/valore unzip=true sarà disponibile nell'implementazione dell'interfaccia IRemoteFileResolver .

Sono disponibili due comportamenti integrati:

  • unzip: se impostato su true e il file scaricato è un zip, verrà automaticamente decompresso in una posizione temporanea. Esempio: ?unzip=true
  • facoltativo: il valore predefinito è false . Se impostato su true e la risoluzione fallisce, non genererà un'eccezione e semplicemente non sostituirà il file. Esempio: ?optional=true

Puoi anche passare argomenti di query globali tramite --dynamic-download-args key=value che passerà la chiave/valore a tutti i download dinamici tentati nell'invocazione.

Protocolli supportati

I protocolli ufficialmente supportati e i formati corrispondenti sono:

  • Google Cloud Storage, protocollo: gs , formato: gs://<bucket name>/path
  • File locali, protocollo: file , formato: file:/local/path
  • collegamenti http, protocollo: http , formato: http://url
  • Collegamenti https, protocollo: https , formato: https://url

Limitazioni

La risoluzione dinamica di @Option attualmente supporta solo un numero limitato di protocolli e posizioni da cui scaricare. La risoluzione di @Option è attualmente abilitata solo per la configurazione principale XML Tradefed.

Se eseguiti come suite, i moduli correnti ( AndroidTest.xml ) non risolveranno i file per impostazione predefinita. Questo ha lo scopo di impedire ai moduli di creare dipendenze sconosciute . È possibile evitare questo problema utilizzando --enable-module-dynamic-download a livello di suite, ma le suite principali come Compatibility Test Suite (CTS) e Vendor Test Suite (VTS) non lo abiliteranno.

Implementare un nuovo protocollo

I protocolli supportati hanno un'implementazione in Tradefed dell'interfaccia IRemoteFileResolver , che definisce il tag breve del protocollo che verrà abbinato nel percorso del file tramite getSupportedProtocol . Ad esempio, gs viene utilizzato per il protocollo Google Cloud Storage. L'interfaccia consigliata da implementare è #resolveRemoteFiles(RemoteFileResolverArgs) che sarà l'interfaccia mantenuta a lungo termine.

I protocolli implementati possono essere aggiunti al file dei servizi del cablaggio META-INF per attivare ufficialmente il supporto.