Lorsque le corpus de test est volumineux ou que le temps d'exécution devient long, nous proposons Possibilité de répartir les tests sur plusieurs appareils: segmentation.
La segmentation comporte des conditions préalables pour que le lanceur de test prenne en charge la segmentation.
La majorité des exécuteurs de test principaux prend déjà en charge la segmentation. Aucune est nécessaire. Ils sont déjà compatibles avec la segmentation: tests d'instrumentation, les tests pilotés côté hôte, GTest.
Deux types de segmentation sont acceptés dans Tradefed: le partitionnement local et le partitionnement distribué. Comme elles partagent certaines similitudes, cette page décrit les propriétés communes et puis les spécificités de chacun d'entre eux.
Propriétés communes
Les deux formes de segmentation utilisent les mêmes propriétés que les exécuteurs de test: les segments doivent être indépendantes et déterministes. La première étape de ces deux segments pour créer la liste ordonnée complète des tests, puis les diviser en différents groupes/segments.
La principale différence entre les formulaires de segmentation réside dans la façon dont ils exécutent les tests. Pour en savoir plus, consultez les sections ci-dessous.
Segmentation locale
La segmentation locale désigne tous les appareils impliqués dans l'exécution de l'instance sont connectés au même hôte physique.
Exécution
La segmentation locale tire parti du fait que tous les appareils sont connectés au même en créant un pool de tests à exécuter et en plaçant chaque les tests d'interrogation des appareils lorsqu'ils sont disponibles (c'est-à-dire avec le test précédent). Cela se traduit par une utilisation optimisée des appareils. Nous l'appelons aussi segmentation dynamique.
Options
--shard-count XX
Segmentation distribuée
La segmentation distribuée désigne tous les appareils impliqués dans l'exécution de les appels segmentés peuvent se trouver n'importe où et être connectés à différents hôtes.
Exécution
La segmentation distribuée se produit lors de la création de la liste des tests et du contenu chaque segment exécute uniquement la partition actuellement demandée. Donc tous les segments distribués créent la même liste au départ, puis exécutent une requête un sous-ensemble exclusif, ce qui entraîne l'exécution de tous les tests.
La principale propriété de ce formulaire est que les segments ne connaissent pas du tout et peuvent tomber en panne de façon indépendante.
Le principal inconvénient est que la longueur des segments n'est pas forcément équilibrée car nous ne pouvons pas prédire à l'avance l'exécution de chaque test dans chaque segment. La distribution comporte approximativement le même nombre de scénarios de test dans chaque segment.
Options
--shard-count XX --shard-index XX
Segmentation des jetons
La segmentation de jetons ne peut être utilisée qu'avec la segmentation locale. L'indicateur est inopérants dans les cas d'utilisation de segmentation non locale. Parfois, l’un des appareils impliqué dans la segmentation contient des ressources spéciales que d'autres n'utilisent pas, comme une carte SIM . Certains tests peuvent ne fonctionner que lorsque cette ressource spéciale est disponible et échouerait autrement.
La segmentation de jetons est notre solution à de tels cas d'utilisation. Les modules de test permettent
déclarer les ressources spéciales dont ils ont besoin dans leur AndroidTest.xml
;
Tradefed achemine les tests vers un appareil disposant de la ressource.
Configuration XML
<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
Le value
du jeton correspond à celui de Tradefed
TokenProperty
Il est associé à un gestionnaire dans
TokenProviderHelper
Cela permet d'exécuter des modules de test sur des appareils exécuter les tests.
Que se passe-t-il si aucun appareil ne peut exécuter le test ?
Si aucun appareil n'est disponible dont la ressource correspond au module de test, le module de test a échoué et est ignoré, car il ne peut pas s'exécuter correctement.
Par exemple, si un module de test demande l'exécution d'une carte SIM, mais qu'aucun appareil ne dispose d'un carte SIM, le module de test échoue.
Implémentation
Transmettez cet indicateur de fonctionnalité à la ligne de commande principale de Tradefed:
--enable-token-sharding