Configura las pruebas de ACTS

En esta página, se describe cómo configurar las pruebas de ACTS.

Fuentes de configuración

El conjunto de pruebas de comunicaciones de Android (ACTS) tiene tres fuentes principales de configuración:

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

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

Nota sobre las variables de entorno

Ten cuidado cuando uses variables de entorno para las pruebas de ACTS. Estos valores son los menos visibles para el usuario y no se recomiendan para su uso fuera de la estación de trabajo de un desarrollador. Las variables de entorno se inhabilitan durante las pruebas automatizadas de ACTS para evitar la contaminación del entorno.

Variables de configuración obligatorias

Cada prueba de ACTS requiere que se establezcan las siguientes variables.

Rutas de prueba de ACTS

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

Configura la ubicación de la ruta de prueba con la variable de entorno ACTS_TESTPATH o con la marca -tp/--testpaths en la línea de comandos. El valor puede ser una lista de directorios.

Clases de prueba de ACTS

ACTS debe saber qué clases de prueba ejecutar. Puede ser una regex o una lista de nombres de clases de prueba.

Para establecer este valor, usa la marca -tc/--test_class en la línea de comandos. Ten en cuenta que esta marca también acepta una lista de nombres de clase. Los nombres de las clases deben coincidir con los nombres de archivo correspondientes, por ejemplo, SampleTest se debe encontrar en SampleTest.py.

Ruta de acceso del registro de ACTS

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 desorden, ACTS no escribe estos registros en STDOUT.

Para configurar la ruta de acceso del registro, usa la variable de entorno ACTS_LOGPATH o la marca -lp/--logpath en la línea de comandos.

Ruta de acceso de configuración de ACTS

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

Si hay varios bancos de pruebas dentro de la configuración, ACTS ejecuta las pruebas para cada uno de ellos. Para ejecutar la prueba solo en un entorno de pruebas de la lista, usa el argumento de línea de comandos -tb/--testbed <NAME>.

Ejemplo de una estación de trabajo local

La mayoría de los usuarios de ACTS desarrollan en una sola 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 de acceso 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

Configura tus bancos de pruebas

El archivo de configuración de 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 entorno de pruebas. En la configuración de ejemplo anterior, el campo de pruebas my_testbed se crea con un solo valor de campo de pruebas. El segundo campo 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. Ten en cuenta que, si un campo 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 se incluyen en ACTS, consulta la lista en /acts/framework/acts/controllers/.

Todos los demás valores (que no son valores especiales mencionados en la sección anterior) se almacenan en self.user_params como un diccionario. Este es un buen lugar para almacenar información del entorno o de la prueba, como si los teléfonos están en un entorno de datos medidos o durante cuánto tiempo se recopilan datos para una prueba.

Casos especiales para AndroidDevice

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

Formato de configuración JSON

Todos los pares clave-valor del siguiente ejemplo de JSON se establecen en el objeto AndroidDevice correspondiente. Si la configuración intenta reemplazar 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 la secuencia de comandos de prueba, puedes 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: Es una cadena que se agrega al comando adb logcat para recopilar registros de adb. De forma predeterminada, se usa adb logcat -v threadtime -b all. Si se configura adb_logcat_param, se reemplaza la sección -b all. Por ejemplo, si estableces adb_logcat_param en -b radio, el comando cambia a adb logcat -v threadtime -b radio.