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 comandoadb logcat
para recopilar registros de adb. De forma predeterminada, se usaadb logcat -v threadtime -b all
. Si se configuraadb_logcat_param
, se reemplaza la sección-b all
. Por ejemplo, configuraradb_logcat_param
como-b radio
cambia el comando aadb logcat -v threadtime -b radio
.