Projet

Général

Profil

Development #77590

tests, test_recurring_events_api_fillslots_multiple_agendas_queries est très long

Ajouté par Valentin Deniaud il y a 11 mois. Mis à jour il y a 10 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
15 mai 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

500s en local, ça pourrait expliquer les lenteurs sur jenkins (mais sans expliquer le côté aléatoire).

Sur https://jenkins.entrouvert.org/job/chrono/ c'est long un jour sur deux.

Il y a #76326 qui a touché à ce test il y a un mois, à essayer des numéros de builds au hasard sur jenkins j'ai l'impression que les builds longs sont apparus à cette date (ça aiderait d'avoir un graphe du temps des tests, ou même juste un scroll infini de la liste des builds).


Fichiers

chrono_profile.png (212 ko) chrono_profile.png Valentin Deniaud, 17 mai 2023 12:16

Historique

#1

Mis à jour par Frédéric Péters il y a 11 mois

graphe du temps des tests

Il y a ça accessible via "Tendance", https://jenkins.entrouvert.org/job/gitea/job/chrono/job/main/buildTimeTrend

#2

Mis à jour par Robot Gitea il y a 11 mois

  • Statut changé de Nouveau à En cours

Valentin Deniaud (vdeniaud) a ouvert une pull request sur Gitea concernant cette demande :

#3

Mis à jour par Valentin Deniaud il y a 11 mois

J'ai reproduit une bonne dizaine de fois en local, toujours ce même test qui prend 10 minutes.

Le test lancé en isolation prend un temps normal, ça n'aide pas.

Cette dizaine d'essai je l'ai passée à essayer de faire marcher un line profiler sur le test en question, quelle ligne de EventsFillslots.fillslot était à blâmer, mais c'est peine perdue pour trouver un outil qui fonctionne (pyinstrument s'en sort sur les tests simples mais produit un graphe vide sur le test en question).

J'attache mon meilleur résultat (un profiling du test lent, mais sans les lignes).

Et puis boum tout d'un coup je ne reproduis plus en local.

Je suis à peu près sûr que le patch de #76326 est coupable, c'est assez visible sur https://jenkins.entrouvert.org/job/chrono/buildTimeTrend que depuis on a des builds qui prennent du temps, en dents de scie.

Pas d'idées pour avancer davantage.

#4

Mis à jour par Lauréline Guérin il y a 10 mois

  • Assigné à mis à Lauréline Guérin

#76326 complète un test existant, en faisant une annulation de réservation:

        resp = app.post_json(
            '/api/agendas/recurring-events/fillslots/?action=update&agendas=%s' % agenda_slugs,
            params={
                'slots': events_to_book[1:],
                'user_external_id': 'user',
                'include_booked_events_detail': True,
                'check_overlaps': agenda_slugs,
            },
        )

En commentant

'include_booked_events_detail': True,

et en rajoutant dans le code un if pour faire le get_short_event_detail seulement si besoin:
            if payload.get('include_booked_events_detail'):
                cancelled_events = [
                    get_short_event_detail(
                        request,
                        events_by_id[x.event_id],
                        multiple_agendas=True,
                    )
                    for x in bookings_to_cancel
                ]

j'arrive à reproduire le test lent, ce n'est pas le code de #76326 qui ralentit les tests, mais bien l'annulation de 5 réservations sur 20 agendas contenant chaque un event récurrent sur 2 jours de la semaine.

Je reproduisais bien les requêtes lentes:
https://pad.entrouvert.org/chrono-requete-lente

Jusqu'à ce que j'essaie de faire un dump de ma base de test pour la passer à PierreD, pour qu'il regarde, que je fasse - --create-db (je suis en --reuse-db), et là, miracle, les tests redeviennent à peu près normaux.
J'ai quand même fourni à PierreD un dump et des logs pg pour analyse.

#5

Mis à jour par Robot Gitea il y a 10 mois

  • Statut changé de Nouveau à En cours

Lauréline Guérin (lguerin) a ouvert une pull request sur Gitea concernant cette demande :

#6

Mis à jour par Robot Gitea il y a 10 mois

  • Statut changé de En cours à Solution proposée
#7

Mis à jour par Robot Gitea il y a 10 mois

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

Valentin Deniaud (vdeniaud) a approuvé une pull request sur Gitea concernant cette demande :

#8

Mis à jour par Robot Gitea il y a 10 mois

  • Statut changé de Solution validée à Résolu (à déployer)

Lauréline Guérin (lguerin) a mergé une pull request sur Gitea concernant cette demande :

#9

Mis à jour par Transition automatique il y a 10 mois

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

Mis à jour par Transition automatique il y a 8 mois

Automatic expiration

Formats disponibles : Atom PDF