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 (ACTS) de Android 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 pruebas de ACTS. Estos valores son los menos visibles para el usuario y no se recomienda usarlos fuera de la estación de trabajo de un desarrollador. Las variables de entorno se inhabilitan durante las pruebas automatizadas de ACTS para evitar el envenenamiento del entorno.

Variables de configuración obligatorias

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

Rutas de prueba de ACTS

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

Establece la ubicación de la ruta de acceso 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 clases. Los nombres de clase deben coincidir con los nombres de archivo correspondientes; por ejemplo, se debe encontrar SampleTest en SampleTest.py.

Ruta de 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 el 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 configuración de ACTS

Para ejecutar la prueba, ACTS debe saber qué testbed 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 testbeds dentro de la configuración, ACTS ejecuta las pruebas para cada uno de ellos. Si quieres ejecutar la prueba solo para un solo testbed 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 de 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

Cómo configurar testbeds

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 testbed. En la configuración de ejemplo anterior, el my_testbed testbed se crea con un solo valor testbed. El segundo testbed, another_testbed, tiene una configuración de control 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 testbed 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 controladores compatibles que vienen con 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 conservar información del entorno o de la prueba, por ejemplo, si los teléfonos están en un entorno de datos medido o durante cuánto tiempo recopilar datos para una prueba.

Casos especiales para AndroidDevice

Para la comodidad del desarrollo, cuando deseas 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 ejemplo de JSON se configuran 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 adjunta 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, configurar adb_logcat_param como -b radio cambia el comando a adb logcat -v threadtime -b radio.