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.)
Files
Related issues
Associated revisions
History
Updated by Agate Berriot about 1 year ago
- File 0001-ci-speed-up-CI-by-using-pytest-xdist-67033.patch 0001-ci-speed-up-CI-by-using-pytest-xdist-67033.patch added
- Status changed from Nouveau to Solution proposée
Updated by Agate Berriot about 1 year ago
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.
Updated by Benjamin Dauvergne about 1 year ago
- Status changed from Solution proposée to 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).
Updated by Agate Berriot about 1 year ago
- Status changed from Solution validée to 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)
Updated by Agate Berriot about 1 year ago
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 :)
Updated by Transition automatique about 1 year ago
- Status changed from Résolu (à déployer) to Solution déployée
Updated by Agate Berriot about 1 year ago
- Copied to Development #67064: Utiliser pytest-xdist pour paralléliser l'exécution des tests added
Updated by Agate Berriot about 1 year ago
- Copied to Development #67080: paralléliser les tests et le linting en CI added
ci: speed up CI by using pytest-xdist (#67033)