Projet

Général

Profil

Development #67064

Utiliser pytest-xdist pour paralléliser l'exécution des tests

Ajouté par A. Berriot il y a presque 2 ans. Mis à jour il y a presque 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
05 juillet 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Copié depuis Chrono - Development #67033: Utiliser pytest-xdist pour paralléliser l'exécution des testsFermé05 juillet 2022

Actions

Révisions associées

Révision 4188859d (diff)
Ajouté par A. Berriot il y a presque 2 ans

ci: speed up CI using multiple processes with pytest-xist (#67064)

Historique

#1

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é
#2

Mis à jour par A. Berriot il y a presque 2 ans

  • Fichier 0001-ci-speed-up-CI-by-using-pytest-xdist-67033.patch supprimé
#3

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.

#4

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.

#5

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

#6

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 :)

#7

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.

#9

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 :)

#10

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.

#11

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)
#12

Mis à jour par Transition automatique il y a presque 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#13

Mis à jour par Transition automatique il y a plus d'un an

Automatic expiration

Formats disponibles : Atom PDF