Carica i protocolli con la configurazione globale

Per comprendere questa sezione, studia prima Tradefed @Option.

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

Esempio di opzione file

File di esempio @option:

@Option(name = 'config-file')
private File mConfigFile;

Quanto riportato sopra può essere impostato tramite la configurazione XML:

<option name="config-file" value="/tmp/file" />

o tramite comando:

--config-file /tmp/file

Descrizione

La funzionalità consente di risolvere le @Options di tipo File remote in un file locale per renderle disponibili senza problemi dal punto di vista dell'utente.

Affinché funzioni, il file deve essere specificato con un percorso in 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. Trattato alla visualizzazione del percorso remoto, tenterà di scaricare il file localmente e assegnarlo a @Option. Di conseguenza, la variabile mConfigFile ora fa riferimento alla versione locale del file, che può essere utilizzata dal test.

Se per qualsiasi motivo non è possibile scaricare il file remoto, Tradefed restituirà un messaggio ConfigurationException che impedirà l'esecuzione del test. Consideriamo la mancata presenza di questi file un errore critico, poiché mancheranno anche alcuni elementi di test.

Utilizzare i parametri di query

È possibile aggiungere parametri di query a un URL utilizzando ?. Ad esempio, gs://bucket/path?unzip=true. La chiave/il 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 file ZIP, verrà scompattato automaticamente in una posizione temporanea. Esempio: ?unzip=true
  • Facoltativo: il valore predefinito è false. Se impostato su true e la risoluzione non va a buon fine, non verrà generata un'eccezione e il file non verrà semplicemente sostituito. Esempio: ?optional=true

Puoi anche passare argomenti di query globali tramite --dynamic-download-args key=value, che trasferirà la chiave/valore a tutti i download dinamici tentati nella chiamata.

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
  • link http, protocollo: http, formato: http://url
  • Link https, protocollo: https, formato: https://url

Limitazioni

La risoluzione dinamica di @Option supporta attualmente solo un numero limitato di protocolli e posizioni da cui scaricare. Al momento, la risoluzione di @Option è attivata 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 è impedire ai moduli di creare dipendenze sconosciute. Questo carattere può essere inserito 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 attiveranno.

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 fino a getSupportedProtocol. Ad esempio, gs viene utilizzato per il protocollo Google Cloud Storage. L'interfaccia consigliata da implementare è #resolveRemoteFiles(RemoteFileResolverArgs), che sarà l'interfaccia manutenuta a lungo termine.

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