Development #42144
Tester python-xdist
0%
Description
Pour voir.
Fichiers
Demandes liées
Révisions associées
ci: speed up CI using multiple processes with pylint (#42144)
Historique
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
- Statut changé de Nouveau à Fermé
J'ai déjà testé et ça foire complètement avec toute la logique de pytest-django and co d'initialisation d'une base de donnée de test, genre ça essaie de créer une base de test par processus.
De là je m'étais dit qu'une voie plus prometteuse serait des slaves jenkins, où chacun à sa DB locale; on pourrait faire tourner une environnement tox sur un slave, un autre environnement sur un autre slave.
En attendant ce jour, j'essaie de maintenir à jour #24828 .
Mis à jour par A. Berriot il y a presque 2 ans
- Statut changé de Fermé à En cours
- Assigné à mis à A. Berriot
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
Il y aurait l'option -p
de tox à tester aussi éventuellement.
Mis à jour par A. Berriot il y a presque 2 ans
- Fichier 0002-ci-speed-up-CI-by-using-pytest-xdist.patch ajouté
- Fichier 0001-ci-removed-flags-that-broke-test-run-locally.patch ajouté
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par A. Berriot il y a presque 2 ans
J'ai tenté le coup avec un pytest --numprocesses=6 sur Jenkins, et on passe d'un build de 27-30 minutes sur la branche main à 10m sur la branche patchée.
J'ai du supprimer des choses via le patch 0001. Vraiment, je n'arrivais pas à passer des flags à pytest sans ça, ça crashait tout le temps sur une histoire de "--slow" dupliqué.
J'ai encore des idées pour réduire le temps de build, le pylint peut être parallélisé mais je ferai ça dans un autre ticket.
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
Agate Berriot a écrit :
J'ai du supprimer des choses via le patch 0001. Vraiment, je n'arrivais pas à passer des flags à pytest sans ça, ça crashait tout le temps sur une histoire de "--slow" dupliqué.
Tu pourrais pousser une branche qui reproduit ce problème ? En enlevant ton 0001 et en faisant tox -e py3 -- tests --numprocesses=6
pour l'instant je ne reproduis pas.
Mis à jour par Paul Marillonnet il y a presque 2 ans
Agate Berriot a écrit :
J'ai tenté le coup avec un pytest --numprocesses=6 sur Jenkins, et on passe d'un build de 27-30 minutes sur la branche main à 10m sur la branche patchée.
Yeah !!
J'ai du supprimer des choses via le patch 0001. Vraiment, je n'arrivais pas à passer des flags à pytest sans ça, ça crashait tout le temps sur une histoire de "--slow" dupliqué.
FWIW j’avais cette erreur de duplication dans un précédent ticket, et le fait dans ces deux fichiers conftest.py de tenter d’ajouter l’option --slow
si elle n’était pas déjà présente m’avait donné quelques pistes dans les logs de la branche wip poussée sur ce qui n’allait pas.
Mis à jour par A. Berriot il y a presque 2 ans
- Fichier 0001-ci-speed-up-CI-by-using-pytest-xdist.patch ajouté
Benjamin Dauvergne a écrit :
Agate Berriot a écrit :
J'ai du supprimer des choses via le patch 0001. Vraiment, je n'arrivais pas à passer des flags à pytest sans ça, ça crashait tout le temps sur une histoire de "--slow" dupliqué.
Tu pourrais pousser une branche qui reproduit ce problème ? En enlevant ton 0001 et en faisant
tox -e py3 -- tests --numprocesses=6
pour l'instant je ne reproduis pas.
Je viens de tenter le coup avec ta commande et ça marche. Par contre en prod avec le patch-ci joint, je me retrouve avec un build qui fait tourner aucun test, tout est skippé : https://jenkins.entrouvert.org/job/authentic-wip/job/wip%252F42144-Tester-python-xdist/5/execution/node/17/log/
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
Agate Berriot a écrit :
Je viens de tenter le coup avec ta commande et ça marche. Par contre en prod avec le patch-ci joint, je me retrouve avec un build qui fait tourner aucun test, tout est skippé : https://jenkins.entrouvert.org/job/authentic-wip/job/wip%252F42144-Tester-python-xdist/5/execution/node/17/log/
Oui tu as mis un --slow qui n'était pas là avant dans ton premier PYTESTOPTIONS.
Mis à jour par A. Berriot il y a presque 2 ans
- Fichier 0001-ci-speed-up-CI-by-using-pytest-xdist.patch ajouté
Mis à jour par A. Berriot il y a presque 2 ans
Benjamin Dauvergne a écrit :
Agate Berriot a écrit :
Je viens de tenter le coup avec ta commande et ça marche. Par contre en prod avec le patch-ci joint, je me retrouve avec un build qui fait tourner aucun test, tout est skippé : https://jenkins.entrouvert.org/job/authentic-wip/job/wip%252F42144-Tester-python-xdist/5/execution/node/17/log/
Oui tu as mis un --slow qui n'était pas là avant dans ton premier PYTESTOPTIONS.
bien vu, merci pour la relecture !
Mis à jour par A. Berriot il y a presque 2 ans
- Fichier 0001-ci-speed-up-CI-by-using-pytest-xdist.patch ajouté
Mis à jour par A. Berriot il y a presque 2 ans
y'avait un test flaky lié à l'ordre d'exécution je pense, la dernière version de mon patch devrait corriger ça.
Mis à jour par A. Berriot il y a presque 2 ans
bon, ça empire (5 fail au lieu d'1), il faut que je creuse pourquoi
Mis à jour par A. Berriot il y a presque 2 ans
Mis à jour par A. Berriot il y a presque 2 ans
- Fichier
0002-ci-speed-up-CI-by-using-pytest-xdist.patchsupprimé
Mis à jour par A. Berriot il y a presque 2 ans
- Fichier
0001-ci-removed-flags-that-broke-test-run-locally.patchsupprimé
Mis à jour par A. Berriot il y a presque 2 ans
- Fichier
0001-ci-speed-up-CI-by-using-pytest-xdist.patchsupprimé
Mis à jour par A. Berriot il y a presque 2 ans
- Fichier
0001-ci-speed-up-CI-by-using-pytest-xdist.patchsupprimé
Mis à jour par A. Berriot il y a presque 2 ans
- Fichier
0001-ci-speed-up-CI-by-using-pytest-xdist.patchsupprimé
Mis à jour par A. Berriot il y a presque 2 ans
Donc, j'ai fait de nombreux autres essais et avec les deux patchs proposés (un pour pylint, un pour xdist), on passe d'une pipeline de 31 minutes à 7-8 minutes. Je l'ai relancée trois fois d'affilée pour voir s'il y avait des tests flaky, mais je n'ai rien constaté d'anormal.
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
- Statut changé de Solution proposée à Solution validée
Wunderbar !
Mis à jour par A. Berriot il y a presque 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit d3782c80f701bd1e35ef8ad73094ae57287201e2 Author: Agate <aberriot@entrouvert.com> Date: Wed Jul 6 17:21:28 2022 +0200 ci: speed up CI using multiple processes with pylint (#42144) commit f695aba6594b08b7b2a78c176b9305fc08635f9f Author: Agate <aberriot@entrouvert.com> Date: Tue Jul 5 18:37:15 2022 +0200 ci: speed up CI by using pytest-xdist (#42144)
Mis à jour par Paul Marillonnet il y a presque 2 ans
- Lié à Development #67101: build nocturne cassé ajouté
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 by using pytest-xdist (#42144)