Project

General

Profile

Développement #77590

tests, test_recurring_events_api_fillslots_multiple_agendas_queries est très long

Added by Valentin Deniaud over 1 year ago. Updated over 1 year ago.

Status:
Fermé
Priority:
Normal
Category:
-
Target version:
-
Start date:
15 May 2023
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No

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


Files

chrono_profile.png (212 KB) chrono_profile.png Valentin Deniaud, 17 May 2023 12:16 PM

History

#1

Updated by Frédéric Péters over 1 year ago

graphe du temps des tests

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

#2

Updated by Robot Gitea over 1 year ago

  • Status changed from Nouveau to En cours

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

#3

Updated by Valentin Deniaud over 1 year ago

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

Updated by Lauréline Guérin over 1 year ago

  • Assignee set to 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

Updated by Robot Gitea over 1 year ago

  • Status changed from Nouveau to En cours

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

#6

Updated by Robot Gitea over 1 year ago

  • Status changed from En cours to Solution proposée
#7

Updated by Robot Gitea over 1 year ago

  • Status changed from Solution proposée to Solution validée

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

#8

Updated by Robot Gitea over 1 year ago

  • Status changed from Solution validée to Résolu (à déployer)

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

#9

Updated by Transition automatique over 1 year ago

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

Updated by Transition automatique over 1 year ago

Automatic expiration

Also available in: Atom PDF