Transmitir opções e filtros para pacotes e módulos

Primeiro, entenda o processamento de opções no Tradefed.

Configuração da suíte descreve as duas camadas que existem na estrutura da suíte:

  • O pacote de nível superior
  • Os módulos

Em um contexto Tradefed sem suíte, não é necessário pensar nisso. Todas as opções vão para a invocação completa. Em um contexto de conjunto, os módulos são mantidos isolados do conjunto. Por isso, nem todas as opções estão disponíveis no nível deles.

Transmitir opções para o conjunto de nível superior

O pacote de nível superior se comporta como uma configuração padrão do Tradefed: a configuração completa, incluindo o executor do pacote, recebe todas as opções como uma configuração do Tradefed que não é de pacote.

Transmitir opções aos módulos

Por padrão, os módulos não recebem nenhuma das opções transmitidas ao comando. Eles precisam ser segmentados explicitamente para receber as opções pela opção module-arg. Esse isolamento das opções de módulos facilita a depuração.

Exemplo:

cts-tradefed run cts --module-arg <module-name>:<option-name>:<option-value>

cts-tradefed run cts --module-arg CtsGestureTestCases:collect-tests-only:true

A sintaxe garante que o módulo segmentado receba a opção especificada.

Há outras maneiras de transmitir opções para módulos, como test-arg, que permite transmitir opções para o executor de testes de cada módulo com base no tipo ou na classe do executor.

Exemplo:

cts-tradefed run cts --test-arg <test-class>:<option-name>:<option-value>

cts-tradefed run cts --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true

A sintaxe não tem como destino um módulo específico, mas sim todos os executores de teste da classe especificada. O test-arg considera apenas implementações de IRemoteTest como possível receptor das opções.

Transmitir opções para uma classe de teste Java em um java_test_host

Se você estiver adicionando um @Option à sua classe de teste Java como parte de um destino de build java_test_host, use o seguinte para injetar essa opção:

cts-tradefed run cts --module-arg <module-name>:set-option:<option-name>:<option-value>

set-option nesse contexto é a opção do executor HostTest do framework de teste que encapsula suas classes Java para executá-las.

Se o destino do arquivo JAR para as opções contiver várias classes de teste, por padrão, espera-se que todas tenham o @option especificado ou usem a seguinte sintaxe para segmentar uma única classe:

cts-tradefed run cts --module-arg <module-name>:set-option:<class-name>:<option-name>:<option-value>

Transmitir filtros para o pacote

Para filtrar alguns testes de um pacote, usamos --include-filter e --exclude-filter para forçar a inclusão ou exclusão de um teste ou módulo específico, respectivamente. A exclusão tem prioridade.

Elas usam este formato: [abi] <module-name> [test name]

Exemplos:

--include-filter CtsGestureTestCases

--include-filter armeabi-v7a CtsGestureTestCases

--include-filter armeabi-v7a CtsGestureTestCases android.gesture.cts.GestureTest#testGetStrokes