Development #67033
Utiliser pytest-xdist pour paralléliser l'exécution des tests
0%
Description
(https://pypi.org/project/pytest-xdist/)
Ce plugin permet de splitter les tests en groupes de tailles égales et de les faire exécuter par des processes distinct. Cela permet donc en pratique de paralléliser les tests et d'améliorer le temps d'exécution (la contrepartie étant d'utiliser plus de ressources sur la machine concernée. pytest-xdist est compatible ave pytest-django: une db différente est créé pour chaque process, ce qui garantit l'isolation.
Quelques exemples sur le projet chrono:
tox -e py3-django22 -- --reuse-db -n 0 81s tox -e py3-django22 -- --reuse-db -n 2 55s tox -e py3-django22 -- --reuse-db -n 4 36s
(-n 0 signifie aucune parallélisation, autrement dit le comportement par défaut de pytest, -n 2 de paralléliser sur deux process, etc.)
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par A. Berriot il y a plus d'un an
- Fichier 0001-ci-speed-up-CI-by-using-pytest-xdist-67033.patch 0001-ci-speed-up-CI-by-using-pytest-xdist-67033.patch ajouté
- Statut changé de Nouveau à Solution proposée
Mis à jour par A. Berriot il y a plus d'un an
Avec le patch associé, on passe de 280s à 124s d'exécution des tests, en parallélisant sur trois process. (la pipeline globale passe de 7m30 à 4m54)
Je vous laisse me dire si ça vaut le coup pour vous.
Mis à jour par Benjamin Dauvergne il y a plus d'un an
- Statut changé de Solution proposée à Solution validée
Oui ça me parait utile, en général le temps cpu sur la machine qui héberge jenkins est sous-utilisé (rbx.dev.entrouvert.org), ce serait super utile sur authentic qui commence à durer trop longtemps avec toutes ses cibles tox (un ticket à réouvrir #42144).
Mis à jour par A. Berriot il y a plus d'un an
- Statut changé de Solution validée à Résolu (à déployer)
commit f45fd1467661c3fd83b7470d497bb0e46704b0c5 Author: Agate <aberriot@entrouvert.com> Date: Tue Jul 5 15:22:18 2022 +0200 ci: speed up CI by using pytest-xdist (#67033)
Mis à jour par A. Berriot il y a plus d'un an
Benjamin Dauvergne a écrit :
Oui ça me parait utile, en général le temps cpu sur la machine qui héberge jenkins est sous-utilisé (rbx.dev.entrouvert.org), ce serait super utile sur authentic qui commence à durer trop longtemps avec toutes ses cibles tox (un ticket à réouvrir #42144).
Je vais faire le test avec authentik, si ça marche je rouvrirai le ticket en question :)
Mis à jour par Transition automatique il y a plus d'un an
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par A. Berriot il y a plus d'un an
- Copié vers Development #67064: Utiliser pytest-xdist pour paralléliser l'exécution des tests ajouté
Mis à jour par A. Berriot il y a plus d'un an
- Copié vers Development #67080: paralléliser les tests et le linting en CI ajouté
ci: speed up CI by using pytest-xdist (#67033)