Projet

Général

Profil

Development #42144

Tester python-xdist

Ajouté par Benjamin Dauvergne il y a presque 4 ans. Mis à jour il y a presque 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
27 avril 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Pour voir.


Fichiers


Demandes liées

Lié à Authentic 2 - Development #67101: build nocturne casséFermé07 juillet 2022

Actions

Révisions associées

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

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

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

ci: speed up CI using multiple processes with pylint (#42144)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

  • Assigné à Benjamin Dauvergne supprimé
#2

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 .

#3

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

  • Statut changé de Fermé à En cours
  • Assigné à mis à A. Berriot
#4

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

Il y aurait l'option -p de tox à tester aussi éventuellement.

#5

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

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.

#7

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.

#8

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.

#9

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/

#10

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.

#11

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

  • Fichier 0001-ci-speed-up-CI-by-using-pytest-xdist.patch ajouté
#12

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 !

#13

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

  • Fichier 0001-ci-speed-up-CI-by-using-pytest-xdist.patch ajouté
#14

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.

#15

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

#17

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

  • Fichier 0002-ci-speed-up-CI-by-using-pytest-xdist.patch supprimé
#18

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

  • Fichier 0001-ci-removed-flags-that-broke-test-run-locally.patch supprimé
#19

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

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

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

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

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

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

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.

#23

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

  • Statut changé de Solution proposée à Solution validée

Wunderbar !

#24

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

Mis à jour par Paul Marillonnet il y a presque 2 ans

#26

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

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

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

Automatic expiration

Formats disponibles : Atom PDF