Development #67064
Utiliser pytest-xdist pour paralléliser l'exécution des tests
0%
Description
Même combat que sur les tickets précédents. La subtitilité ici, si j'ai bien compris, est que certains tests doivent tourner ensemble dans un certain ordre, et qu'il faut donc s'assurer que les workers respectent cette contrainte. Heureusement, xdist fournit --dist loadfile
pour dispatcher les tests d'un même fichier au même worker. Je vais faire un test en CI pour voir ce que ça donne.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par A. Berriot il y a presque 2 ans
- Copié depuis Development #67033: Utiliser pytest-xdist pour paralléliser l'exécution des tests ajouté
Mis à jour par A. Berriot il y a presque 2 ans
- Fichier
0001-ci-speed-up-CI-by-using-pytest-xdist-67033.patchsupprimé
Mis à jour par A. Berriot il y a presque 2 ans
Avec le patch en question, on passe de 2011.94s à 662.63, donc division par un facteur trois. J'ai utilisé une parallélisation à 8 process sur le serveur Jenkins.
Mis à jour par A. Berriot il y a presque 2 ans
Agate Berriot a écrit :
Avec le patch en question, on passe de 2011.94s à 662.63, donc division par un facteur trois. J'ai utilisé une parallélisation à 8 process sur le serveur Jenkins.
sur la pipeline dans son ensemble, on passe de 34 à 17 minutes. Avec le fix pylint, on va pouvoir s'approcher des dix minutes de build pour wcs je pense.
Mis à jour par A. Berriot il y a presque 2 ans
je vais quand même relancer plusieurs fois, pour vérifier que c'est stable et qu'on a pas des tests flaky à cause de la parallélisation
Mis à jour par A. Berriot il y a presque 2 ans
- Statut changé de Nouveau à Solution proposée
Agate Berriot a écrit :
je vais quand même relancer plusieurs fois, pour vérifier que c'est stable et qu'on a pas des tests flaky à cause de la parallélisation
Relancé trois fois sur jenkins, tout semble okay, je vous laisse regarder :)
Mis à jour par Frédéric Péters il y a presque 2 ans
Ok chaque processus tourne avec sa base de données indépendante, pas de collision possible, et l'exécution avec --dist loadfile évite le problème de tests qui dépendent de précédents tests du même fichier.
Ailleurs tu contrôles le nombre de processus avec une variable d'environnement NUMPROCESSES, je verrais bien ça introduit ici aussi, pour les personnes qui tournent les tests en local via tox.
Mis à jour par A. Berriot il y a presque 2 ans
Mis à jour par A. Berriot il y a presque 2 ans
Frédéric Péters a écrit :
Ok chaque processus tourne avec sa base de données indépendante, pas de collision possible, et l'exécution avec --dist loadfile évite le problème de tests qui dépendent de précédents tests du même fichier.
Ailleurs tu contrôles le nombre de processus avec une variable d'environnement NUMPROCESSES, je verrais bien ça introduit ici aussi, pour les personnes qui tournent les tests en local via tox.
Bien vu, mon dernier patch intègre ça, ça devrait être cohérent partout :)
Mis à jour par Frédéric Péters il y a presque 2 ans
- Statut changé de Solution proposée à Solution validée
Ok mais avec une correction au message de commit, il mentionne pylint, pas pytest.
Mis à jour par A. Berriot il y a presque 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 4188859d015aef0c15518940e4d34913079cf947 Author: Agate <aberriot@entrouvert.com> Date: Wed Jul 6 11:51:44 2022 +0200 ci: speed up CI using multiple processes with pytest-xist (#67064)
Mis à jour par Transition automatique il y a presque 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
ci: speed up CI using multiple processes with pytest-xist (#67064)