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 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, si establecesadb_logcat_param
en-b radio
, el comando cambia aadb logcat -v threadtime -b radio
.