Esta página descreve como configurar os testes ACTS.
Origens de configuração
O Pacote de testes de comunicações do Android (ACTS, na sigla em inglês) tem três principais fontes de configuração:
- A interface de linha de comando (CLI)
- Arquivo de configuração do ACTS
- Variáveis de ambiente
Os valores dessas fontes são combinados em uma única configuração usada para executar um teste ACTS. Se os valores forem especificados em vários locais, eles serão substituídos com base na ordem acima (em que a CLI tem precedência).
Observação sobre as variáveis de ambiente
Tenha cuidado ao usar variáveis de ambiente para testes ACTS. Esses valores são os menos visíveis para o usuário e não são recomendados para uso fora da estação de trabalho de um desenvolvedor. As variáveis de ambiente são desativadas durante testes automatizados do ACTS para evitar a contaminação do ambiente.
Variáveis de configuração obrigatórias
Todo teste ACTS exige que as seguintes variáveis sejam definidas.
Caminhos de teste ACTS
O ACTS é executado em um único local de entrada principal. Como resultado, o local do caminho de teste é desconhecido para o executor.
Defina o local do caminho de teste usando a variável de ambiente
ACTS_TESTPATH
ou com a flag -tp
/--testpaths
na
linha de comando. O valor pode ser uma lista de diretórios.
Classes de teste ACTS
O ACTS precisa saber quais classes de teste executar. Pode ser uma regex ou uma lista de nomes de classes de teste.
Para definir esse valor, use a flag -tc
/--test_class
na linha de comando. Essa flag também aceita uma lista de nomes de classe. Os nomes de classe precisam corresponder
aos nomes de arquivo correspondentes. Por exemplo,
SampleTest
precisa ser encontrado em SampleTest.py
.
Caminho do registro ACTS
O ACTS precisa ter um local para gravar registros, diferente de STDOUT. O ACTS grava registros de depuração completos contendo dados que podem ajudar a determinar por que alguns testes estão falhando. Para evitar a desordem, o ACTS não grava esses registros no STDOUT.
Para definir o caminho do registro, use a variável de ambiente ACTS_LOGPATH
ou a sinalização -lp
/--logpath
na linha de comando.
Caminho de configuração do ACTS
Para executar o teste, o ACTS precisa saber qual testbed existe. A configuração ACTS
contém todos os dispositivos no ambiente de teste e todos os parâmetros especiais de teste ou
ambiente que possam ser necessários. Defina esse valor na
linha de comando usando -c
/--config
.
Se houver vários testbeds na configuração, o ACTS vai executar os testes para
cada um deles. Para executar o teste apenas para um único testbed na lista, use o
argumento de linha de comando -tb/--testbed <NAME>
.
Exemplo de estação de trabalho local
A maioria dos usuários do ACTS desenvolve em uma única ramificação do repositório do Android e tem uma configuração semelhante 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
Se os usuários do ACTS forem executados em várias ramificações, geralmente eles o executarão no diretório
acts/framework
e usarão um caminho relativo 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
Configurar os ambientes de teste
O arquivo de configuração do ACTS fornece todas as informações necessárias para executar testes em 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"
}
A unidade base dessa configuração é o testbed. No exemplo de configuração
acima, o my_testbed
de ambiente de teste é criado com um único valor de ambiente de teste. O
segundo ambiente de teste, another_testbed
, tem uma configuração de controlador especial que armazena
as informações de uma lista de dispositivos Android. Esses dispositivos são armazenados em uma
lista de dispositivos em self.android_devices
. Se um ambiente de teste
não especificar um objeto AndroidDevice
, uma classe de teste que espera um
objeto AndroidDevice
gerará uma exceção. Para uma lista completa de configurações de controlador
com suporte que vêm com o ACTS, consulte a lista em
/acts/framework/acts/controllers/
.
Todos os outros valores (que não são valores especiais mencionados na seção acima)
são armazenados em self.user_params
como um dicionário. Esse é um bom lugar para armazenar
informações de ambiente ou de teste, por exemplo, se os smartphones estão em um ambiente de dados
limitado ou por quanto tempo coletar dados para um teste.
Casos especiais para AndroidDevice
Para conveniência de desenvolvimento, quando você quer ter vários dispositivos com
propriedades diferentes disponíveis, AndroidDevice
tem alguns casos
especiais.
Formato da configuração JSON
Todos os pares de chave-valor no exemplo de JSON abaixo são definidos como o
objeto AndroidDevice
correspondente. Se a configuração tentar substituir um
parâmetro definido no atributo AndroidDevice
, ControllerError
será gerado.
"AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
{"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]
Em seguida, no script de teste, você pode usar uma função de filtro para recuperar o dispositivo correto e acessar parâmetros extras do objeto do 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
O seguinte é um parâmetro opcional:
adb_logcat_param
: uma string anexada ao comandoadb logcat
para coletar registros do adb. Por padrão,adb logcat -v threadtime -b all
é usado. Seadb_logcat_param
estiver definido, a seção-b all
será substituída. Por exemplo, definiradb_logcat_param
como-b radio
muda o comando paraadb logcat -v threadtime -b radio
.