Configura i test ACTS

In questa pagina viene descritto come configurare i test ACTS.

Origini della configurazione

La Test Suite di Comunicazione Android (ACTS) ha tre principali origini di configurazione:

  • L'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, questi vengono sovrascritti in base all'ordine precedente (in cui l'interfaccia a riga di comando 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'utilizzo al di fuori della workstation di uno sviluppatore. Le variabili di ambiente vengono disabilitate durante i test automatici ACTS per evitare l'inquinamento dell'ambiente.

Variabili di configurazione obbligatorie

Ogni test ACTS richiede l'impostazione delle seguenti variabili.

Percorsi di test ACTS

Gli ACTS partono da un'unica posizione di ingresso principale. Di conseguenza, la posizione del percorso di test è sconosciuta al runner.

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.

Corsi di prova ACTS

Gli ACTS devono sapere quali classi di test condurre. Può trattarsi di un'espressione regolare o di 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 essere trovato in SampleTest.py.

Percorso log ACTS

ACTS deve avere una posizione per scrivere i log in un indirizzo diverso da STDOUT. ACTS scrive log di debug completi contenenti dati che possono aiutare a determinare il motivo per cui alcuni test non riescono. Per evitare disordine, ACTS non scrive questi log su STDOUT.

Per impostare il percorso di log, utilizza la variabile di ambiente ACTS_LOGPATH o il flag -lp/--logpath nella riga di comando.

Percorso configurazione ACTS

Per eseguire il test, ACTS deve sapere quale banco di prova esiste. La configurazione ACTS contiene tutti i dispositivi nel banco di test e tutti i parametri speciali di test o ambiente che potrebbero essere necessari. Imposta questo valore nella riga di comando utilizzando -c/--config.

Se nella configurazione sono presenti più banco di test, ACTS esegue i test per ciascuno. 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 di ACTS sviluppa su un singolo ramo di 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 vengono eseguiti 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

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à base di questa configurazione è il banco di prova. Nella configurazione di esempio in alto, il testbed my_testbed viene creato con un singolo valore del banco di test. 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 di controller supportate incluse in 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. È un buon posto per conservare informazioni sull'ambiente o per testare, ad esempio se i telefoni si trovano in un ambiente dati a consumo o per quanto tempo raccogliere i dati per un test.

Casi speciali per AndroidDevice

Per praticità, quando vuoi avere più dispositivi con proprietà diverse disponibili, AndroidDevice prevede alcuni casi speciali.

Formato di 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 restituito ControllerError.

  "AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
                    {"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]

Quindi, nello script per il 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

Di seguito è riportato un parametro facoltativo:

  • adb_logcat_param: una stringa aggiunta al comando adb logcat per la raccolta dei log adb. Per impostazione predefinita, viene utilizzato adb logcat -v threadtime -b all. Se il criterio adb_logcat_param viene configurato, la sezione -b all viene sovrascritta. Ad esempio, se imposti adb_logcat_param su -b radio, il comando viene modificato in adb logcat -v threadtime -b radio.