Questa pagina descrive come configurare i test ACTS.
Fonti di configurazione
Android Comms Test Suite (ACTS) ha tre principali fonti di configurazione:
- L'interfaccia della riga di comando (CLI)
- Il file di configurazione di ACTS
- Variabili ambientali
I valori di queste origini vengono combinati in un'unica configurazione utilizzata per eseguire un test ACTS. Se i valori vengono specificati in più posizioni, i valori vengono sovrascritti in base all'ordine riportato sopra (dove la CLI ha la precedenza).
Una nota sulle variabili d'ambiente
Fare attenzione quando si utilizzano variabili di ambiente per i test ACTS. Questi valori sono i meno visibili all'utente e non sono consigliati per l'uso al di fuori della workstation dello sviluppatore. Le variabili di ambiente sono disabilitate durante i test automatizzati ACTS per prevenire l'avvelenamento dell'ambiente.
Variabili di configurazione richieste
Ogni test ACTS richiede l'impostazione delle seguenti variabili.
Percorsi di prova ACTS
ACTS viene eseguito da un'unica posizione di ingresso principale. Di conseguenza, la posizione del percorso di prova è sconosciuta al corridore.
Imposta la posizione del percorso di test utilizzando la variabile di ambiente ACTS_TESTPATH
o con il flag -tp
/ --testpaths
nella riga di comando. Il valore può essere un elenco di directory.
Lezioni di prova ACTS
ACTS deve sapere quali classi di test eseguire. Può trattarsi di una regex o di un elenco di nomi di classi di test.
Per impostare questo valore, utilizzare il flag -tc
/ --test_class
nella riga di comando. Tieni presente che questo flag accetta anche un elenco di nomi di classi. I nomi delle classi devono corrispondere ai nomi dei file corrispondenti, ad esempio SampleTest
deve essere trovato in SampleTest.py
.
Percorso del registro ACTS
ACTS deve avere una posizione in cui scrivere i log diversa da STDOUT. ACTS scrive log di debug completi contenenti dati che possono aiutare a determinare il motivo per cui alcuni test falliscono. Per evitare confusione, ACTS non scrive questi log su STDOUT.
Per impostare il percorso del registro, utilizzare la variabile di ambiente ACTS_LOGPATH
o il flag -lp
/ --logpath
nella riga di comando.
Percorso di configurazione di ACTS
Per eseguire il test, ACTS deve sapere quale banco di prova esiste. La configurazione ACTS contiene tutti i dispositivi nel banco di prova e qualsiasi test speciale o parametro ambientale che potrebbe essere necessario. Imposta questo valore sulla riga di comando utilizzando -c
/ --config
.
Se sono presenti più banchi di prova nella configurazione, ACTS esegue i test per ciascun banco di prova. Per eseguire il test solo per un singolo testbed nell'elenco, utilizzare l'argomento della riga di comando -tb/--testbed <NAME>
.
Un esempio di workstation locale
La maggior parte degli utenti ACTS sviluppa su un singolo ramo repository Android e ha una configurazione simile a questa:
# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='~/android/<REPO_BRANCH>/tools/test/connectivity/acts_tests/'
# On cmdline
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin
Se gli utenti ACTS eseguono su più rami, spesso eseguono ACTS dalla directory acts/framework
e utilizzano un percorso relativo per ACTS_TESTPATH
:
# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'
# On cmdline
$ cd ~/android/main/tools/test/connectivity/acts_tests/acts_contrib/
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin
Configurazione dei tuoi banchi di prova
Il file di configurazione di ACTS fornisce tutte le informazioni necessarie per eseguire test sui dispositivi hardware:
{
"testbed": {
"my_testbed": {
"my_testbed_value": "value"
},
"another_testbed": {
"AndroidDevice": [
"53R147"
]
}
},
"user_parameter_1": "special environment value",
"user_parameter_2": "other special value"
}
L'unità base di questa configurazione è il banco di prova. Nella configurazione di esempio sopra, il testbed my_testbed
viene creato con un singolo valore testbed. Il secondo testbed, another_testbed
, ha una speciale configurazione del controller che contiene le informazioni per un elenco di dispositivi Android. Questi dispositivi sono memorizzati in un elenco di dispositivi in self.android_devices
. Tieni presente che se un banco di prova non specifica un oggetto AndroidDevice
, una classe di test che prevede un oggetto AndroidDevice
solleva un'eccezione. Per un elenco completo delle configurazioni dei controller supportate fornite con ACTS, vedere l'elenco in /acts/framework/acts/controllers/
.
Tutti gli altri valori (che non sono valori speciali menzionati nella sezione precedente) sono archiviati in self.user_params
come dizionario. Questo è un buon posto per conservare informazioni sull'ambiente o testare, ad esempio se i telefoni si trovano in un ambiente di dati misurati o per quanto tempo raccogliere dati per un test.
Casi speciali per dispositivi Android
Per comodità di sviluppo quando desideri avere a disposizione più dispositivi con proprietà diverse, AndroidDevice
presenta alcuni casi speciali.
Formato di configurazione JSON
Tutte le coppie chiave/valore nel JSON seguente sono impostate sull'oggetto AndroidDevice
corrispondente. Se la configurazione tenta di sovrascrivere un parametro definito nell'attributo AndroidDevice
, viene generato ControllerError
.
"AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
{"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]
Quindi, nello script di test, puoi utilizzare una funzione di filtro per recuperare il dispositivo corretto e accedere a parametri aggiuntivi dall'oggetto dispositivo:
def setup_class(self):
self.pub = next(filter(lambda ad: ad.label == 'publisher',
self.android_devices))
self.sub = next(filter(lambda ad: ad.label == 'user_parameter_1',
self.android_devices))
Parametro facoltativo
Quello che segue è un parametro facoltativo:
-
adb_logcat_param
: una stringa aggiunta al comandoadb logcat
per raccogliere i log adb. Per impostazione predefinita, viene utilizzatoadb logcat -v threadtime -b all
. Seadb_logcat_param
è impostato, la sezione-b all
viene sovrascritta. Ad esempio, impostandoadb_logcat_param
su-b radio
il comando viene modificato inadb logcat -v threadtime -b radio
.