Transmettre des options et des filtres à la suite et aux modules

Commencez par vous assurer de bien comprendre la gestion des options dans Tradefed.

La configuration de la suite décrit les deux couches qui existent dans la structure de la suite:

  • Suite de premier niveau
  • Les modules

Dans un contexte Tradefed hors suite, vous n'avez pas besoin de vous en préoccuper. Chaque option est transmise à l'appel complet. Dans un contexte de suite, les modules sont isolés de la suite. Par conséquent, toutes les options ne sont pas disponibles à leur niveau.

Transmettre des options à la suite de premier niveau

La suite de premier niveau se comporte comme la configuration Tradefed standard: la configuration complète, y compris l'exécuteur de la suite, reçoit toutes les options, comme une configuration Tradefed hors suite.

Transmettre des options aux modules

Par défaut, les modules ne reçoivent aucune des options transmises à la commande. Ils doivent être ciblés explicitement pour recevoir les options via l'option module-arg. Cette isolation des options du module facilite le débogage.

Exemple :

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

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

La syntaxe garantit que le module ciblé recevra l'option donnée.

Il existe d'autres façons de transmettre des options à des modules tels que test-arg, ce qui vous permet de transmettre des options au lanceur de test de chaque module en fonction du type ou de la classe du lanceur.

Exemple :

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

La syntaxe ne cible pas un module particulier, mais plutôt tous les outils d'exécution de test de la classe donnée. test-arg ne considère que les implémentations de IRemoteTest comme récepteur potentiel des options.

Transmettre des options à une classe de test Java dans un java_test_host

Si vous ajoutez un @Option à votre classe de test Java dans le cadre d'une cible de compilation java_test_host, vous devrez utiliser ce qui suit pour injecter cette option:

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

Dans ce contexte, set-option est l'option du programme d'exécution HostTest du banc d'essais qui encapsule vos classes Java pour les exécuter.

Si la cible de votre fichier JAR pour les options contient plusieurs classes de test, elles doivent toutes avoir l'option @option spécifiée par défaut ou utiliser la syntaxe suivante pour cibler une seule classe:

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

Transmettre des filtres à la suite

Pour filtrer certains tests d'une suite, nous utilisons --include-filter et --exclude-filter pour forcer l'inclusion ou l'exclusion d'un test ou d'un module particulier, respectivement. L'exclusion a la priorité.

Elles utilisent le format suivant: [abi] <module-name> [test name].

Exemples :

--include-filter CtsGestureTestCases

--include-filter armeabi-v7a CtsGestureTestCases

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