In questa pagina viene descritto come configurare i test ACTS.
Origini della configurazione
La Android Comms Test Suite (ACTS) ha tre principali fonti di configurazione:
- Interfaccia a riga di comando (CLI)
- Il file di configurazione ACTS
- Variabili di ambiente
I valori di queste origini vengono combinati in un'unica configurazione utilizzata per eseguire un test ACTS. Se i valori sono specificati in più posizioni, vengono sovrascritti in base all'ordine riportato sopra (dove la CLI ha la precedenza).
Una nota sulle variabili di ambiente
Fai attenzione quando utilizzi le 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 stazione di lavoro di uno sviluppatore. Le variabili di ambiente vengono disattivate durante i test automatici di ACTS per evitare l'inquinamento dell'ambiente.
Variabili di configurazione obbligatorie
Ogni test ACTS richiede l'impostazione delle seguenti variabili.
Percorsi di test ACTS
ACTS viene eseguito da una singola posizione di entrata principale. Di conseguenza, la posizione del percorso di test è sconosciuta all'utente che esegue il test.
Imposta la posizione del percorso di test utilizzando la variabile di ambiente ACTS_TESTPATH
o il flag -tp
/--testpaths
nella riga di comando. Il valore può essere un elenco di directory.
Corsi di prova ACTS
ACTS deve sapere quali classi di test eseguire. Può essere un'espressione regolare o un elenco di nomi di classi di test.
Per impostare questo valore, utilizza 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 trovarsi in SampleTest.py
.
Percorso del log 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 non vanno a buon fine. Per evitare disordine, ACTS non scrive questi log su STDOUT.
Per impostare il percorso del log, utilizza la variabile di ambiente ACTS_LOGPATH
o il flag -lp
/--logpath
nella riga di comando.
Percorso della configurazione ACTS
Per eseguire il test, ACTS deve sapere quale testbed esiste. ACTS
config contiene tutti i dispositivi nel testbed e eventuali parametri di test o
ambiente speciali che potrebbero essere necessari. Imposta questo valore sulla
riga di comando utilizzando -c
/--config
.
Se nella configurazione sono presenti più banco di test, ACTS esegue i test per ogni banco di test. Per eseguire il test solo per un singolo testbed nell'elenco, utilizza l'argomento della riga di comando -tb/--testbed <NAME>
.
Esempio di workstation locale
La maggior parte degli utenti ACTS sviluppa in un singolo ramo del 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 il servizio in più branch, 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
Configura i tuoi testbed
Il file di configurazione ACTS fornisce tutte le informazioni necessarie per eseguire i 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à di base di questa configurazione è il testbed. Nella configurazione di esempio riportata sopra, il testbed my_testbed
viene creato con un singolo valore del testbed. Il
secondo testbed, another_testbed
, ha una configurazione speciale del controller che contiene
le informazioni per un elenco di dispositivi Android. Questi dispositivi sono archiviati in un
elenco di dispositivi in self.android_devices
. Tieni presente che se un testbed non specifica un oggetto AndroidDevice
, una classe di test che prevede un oggetto AndroidDevice
genera un'eccezione. Per un elenco completo delle configurazioni del controller supportate fornite con ACTS, consulta l'elenco all'indirizzo
/acts/framework/acts/controllers/
.
Tutti gli altri valori (che non sono valori speciali menzionati nella sezione precedente)
vengono memorizzati in self.user_params
come dizionario. Si tratta di un buon posto per memorizzare informazioni sull'ambiente o sui test, ad esempio se gli smartphone si trovano in un ambiente con dati conteggiati o per quanto tempo raccogliere i dati per un test.
Casi speciali per AndroidDevice
Per comodità di sviluppo, quando vuoi avere più dispositivi con proprietà diverse, AndroidDevice
ha alcuni casi speciali.
Formato della configurazione JSON
Tutte le coppie chiave/valore nel seguente esempio JSON sono impostate sull'oggetto AndroidDevice
corrispondente. Se la configurazione tenta di sovrascrivere un
parametro definito nell'attributo AndroidDevice
, viene generato un errore ControllerError
.
"AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
{"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]
Poi, nello script di test, puoi utilizzare una funzione di filtro per recuperare il dispositivo corretto e accedere a parametri aggiuntivi dall'oggetto del 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
Di seguito è riportato un parametro facoltativo:
adb_logcat_param
: una stringa aggiunta al comandoadb logcat
per la raccolta dei log adb. Per impostazione predefinita, viene utilizzatoadb logcat -v threadtime -b all
. Se il criterioadb_logcat_param
viene configurato, la sezione-b all
viene sovrascritta. Ad esempio, se impostiadb_logcat_param
su-b radio
, il comando viene modificato inadb logcat -v threadtime -b radio
.