Project

General

Profile

Development #67033

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

Added by Agate Berriot about 1 year ago. Updated about 1 year ago.

Status:
Fermé
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
05 July 2022
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

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

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

Actions
Copied to Passerelle - Development #67080: paralléliser les tests et le linting en CIFermé05 July 2022

Actions

Associated revisions

Revision f45fd146 (diff)
Added by Agate Berriot about 1 year ago

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

History

#1

Updated by Agate Berriot about 1 year ago

  • Description updated (diff)
#2

Updated by Agate Berriot about 1 year ago

  • Patch proposed changed from No to Yes
#4

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.

#5

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

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

#6

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

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

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

Updated by Transition automatique about 1 year ago

  • Status changed from Résolu (à déployer) to Solution déployée
#9

Updated by Agate Berriot about 1 year ago

  • Copied to Development #67064: Utiliser pytest-xdist pour paralléliser l'exécution des tests added
#10

Updated by Agate Berriot about 1 year ago

#11

Updated by Transition automatique about 1 year ago

Automatic expiration

Also available in: Atom PDF