Configuración de pruebas ACTS

Esta página describe cómo configurar las pruebas ACTS.

Fuentes de configuración

Android Comms Test Suite (ACTS) tiene tres fuentes principales de configuración:

  • La interfaz de línea de comando (CLI)
  • El archivo de configuración ACTS
  • Variables de entorno

Los valores de estas fuentes se combinan en una única configuración que se utiliza para ejecutar una prueba ACTS. Si los valores se especifican en varias ubicaciones, los valores se sobrescriben según el orden anterior (donde la CLI tiene prioridad).

Una nota sobre las variables de entorno

Tenga cuidado al utilizar variables de entorno para pruebas ACTS. Estos valores son los menos visibles para el usuario y no se recomienda su uso fuera de la estación de trabajo de un desarrollador. Las variables de entorno se desactivan durante las pruebas automatizadas de ACTS para evitar el envenenamiento del entorno.

Variables de configuración requeridas

Cada prueba ACTS requiere que se establezcan las siguientes variables.

Rutas de prueba ACTS

ACTS se ejecuta desde una única ubicación de entrada principal. Como resultado, el corredor desconoce la ubicación de la ruta de prueba.

Establezca la ubicación de la ruta de prueba utilizando la variable de entorno ACTS_TESTPATH ​​o con el indicador -tp / --testpaths en la línea de comando. El valor puede ser una lista de directorios.

Clases de prueba ACTS

ACTS debe saber qué clases de prueba ejecutar. Puede ser una expresión regular o una lista de nombres de clases de prueba.

Para establecer este valor, use el indicador -tc / --test_class en la línea de comando. Tenga en cuenta que esta bandera también acepta una lista de nombres de clases. Los nombres de las clases deben coincidir con los nombres de los archivos correspondientes; por ejemplo, SampleTest debe encontrarse en SampleTest.py .

Ruta de registro de ACTOS

ACTS debe tener una ubicación para escribir registros que no sea STDOUT. ACTS escribe registros de depuración completos que contienen datos que pueden ayudar a determinar por qué fallan algunas pruebas. Para evitar el desorden, ACTS no escribe estos registros en STDOUT.

Para configurar la ruta del registro, use la variable de entorno ACTS_LOGPATH o el indicador -lp / --logpath en la línea de comando.

Ruta de configuración de ACTS

Para ejecutar la prueba, ACTS debe saber qué banco de pruebas existe. La configuración de ACTS contiene todos los dispositivos en el banco de pruebas y cualquier parámetro de entorno o prueba especial que pueda ser necesario. Establezca este valor en la línea de comando usando -c / --config .

Si hay varios bancos de pruebas dentro de la configuración, ACTS ejecuta las pruebas para cada banco de pruebas. Para ejecutar la prueba únicamente para un único banco de pruebas de la lista, utilice el argumento de línea de comando -tb/--testbed <NAME> .

Un ejemplo de estación de trabajo local

La mayoría de los usuarios de ACTS desarrollan en una única rama del repositorio de Android y tienen una configuración similar a esta:

# 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

Si los usuarios de ACTS se ejecutan en varias ramas, a menudo ejecutan ACTS desde el directorio acts/framework y usan una ruta relativa para 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

Configurando sus bancos de pruebas

El archivo de configuración ACTS proporciona toda la información necesaria para ejecutar pruebas en dispositivos de hardware:

{
  "testbed": {
    "my_testbed": {
      "my_testbed_value": "value"
    },
    "another_testbed": {
      "AndroidDevice": [
        "53R147"
      ]
    }
  },
  "user_parameter_1": "special environment value",
  "user_parameter_2": "other special value"
}

La unidad base de esta configuración es el banco de pruebas. En la configuración de ejemplo anterior, el banco de pruebas my_testbed se crea con un único valor del banco de pruebas. El segundo banco de pruebas, another_testbed , tiene una configuración de controlador especial que contiene la información de una lista de dispositivos Android. Estos dispositivos se almacenan en una lista de dispositivos en self.android_devices . Tenga en cuenta que si un banco de pruebas no especifica un objeto AndroidDevice , una clase de prueba que espera un objeto AndroidDevice genera una excepción. Para obtener una lista completa de las configuraciones de controlador compatibles que vienen con ACTS, consulte la lista en /acts/framework/acts/controllers/ .

Todos los demás valores (que no sean valores especiales mencionados en la sección anterior) se almacenan en self.user_params como un diccionario. Este es un buen lugar para guardar información sobre el entorno o las pruebas, como por ejemplo si los teléfonos están en un entorno de datos medidos o durante cuánto tiempo se deben recopilar datos para una prueba.

Casos especiales para dispositivos Android

Para facilitar el desarrollo cuando desea tener varios dispositivos con diferentes propiedades disponibles, AndroidDevice tiene algunos casos especiales.

Formato de configuración JSON

Todos los pares clave/valor en el siguiente JSON se configuran en el objeto AndroidDevice correspondiente. Si la configuración intenta sobrescribir un parámetro definido en el atributo AndroidDevice , se genera ControllerError .

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

Luego, en el script de prueba, puede usar una función de filtro para recuperar el dispositivo correcto y acceder a parámetros adicionales desde el objeto 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))

Parámetro opcional

El siguiente es un parámetro opcional:

  • adb_logcat_param : una cadena agregada al comando adb logcat para recopilar registros de adb. De forma predeterminada, se utiliza adb logcat -v threadtime -b all . Si se establece adb_logcat_param , la sección -b all se sobrescribe. Por ejemplo, configurar adb_logcat_param en -b radio cambia el comando a adb logcat -v threadtime -b radio .