Configura i test ACTS

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 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.