Projet

Général

Profil

Development #67033

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

Ajouté par A. Berriot il y a plus d'un an. Mis à jour il y a plus d'un an.

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

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Copié vers w.c.s. - Development #67064: Utiliser pytest-xdist pour paralléliser l'exécution des testsFermé05 juillet 2022

Actions
Copié vers Passerelle - Development #67080: paralléliser les tests et le linting en CIFermé05 juillet 2022

Actions

Révisions associées

Révision f45fd146 (diff)
Ajouté par A. Berriot il y a plus d'un an

ci: speed up CI by using pytest-xdist (#67033)

Historique

#1

Mis à jour par A. Berriot il y a plus d'un an

  • Description mis à jour (diff)
#2

Mis à jour par A. Berriot il y a plus d'un an

  • Patch proposed changé de Non à Oui
#3

Mis à jour par A. Berriot il y a plus d'un an

#4

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.

#5

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

-> https://grafana.entrouvert.org/d/4FxJ1MuWz/servers?orgId=1&var-job=nodexporter&var-node=rbx.dev.entrouvert.org&var-port=9100

#6

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

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

-> https://grafana.entrouvert.org/d/4FxJ1MuWz/servers?orgId=1&var-job=nodexporter&var-node=rbx.dev.entrouvert.org&var-port=9100

Je vais faire le test avec authentik, si ça marche je rouvrirai le ticket en question :)

#8

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

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

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

Mis à jour par A. Berriot il y a plus d'un an

#11

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

Automatic expiration

Formats disponibles : Atom PDF