Développement #98870
testdef, stocker les demandes dans une table séparée
0%
Description
Depuis #95255 les tests créent de vraies demandes. Mais, cf les commentaires de Pierre dans le ticket, ça a un impact négatif sur les perfs.
De plus ça incrémente les ids des demandes, donc on peut se retrouver avec de grands sauts entre deux numéros de demandes réelles consécutives.
Il faut essayer une autre approche : avoir une table séparée pour les demandes de test. Point d'incertitude, ça revient à peu près à doubler le nombre de tables sur chaque tenant.
Associated revisions
sql: use separate table to hold test formdata (#98870)
sql: migrate test formdata to separate table (#98870)
sql: add new table to hold test formdata workflow traces (#98870)
History
Updated by Benjamin Dauvergne about 1 month ago
Ce serait bien de faire un récap sur ce qu'à apporter #95255 (donc le passage si je comprends d'une sérialisation en JSON des formdata? carddata? dans l'objet qui stocke l'exécution du test vers un stockage dans les tables normales stockant les demande, ne pas hésiter à modifier ma prose si ce n'est pas une bonne decription du changement) pour voir d'où on vient et où on va.
Je propose deux autres pistes:- tout stocker dans une autre table (mais donc si le changement #95255 visait à éviter trop de changement partout ben ce sera raté)
- faire tourner les tests dans une transaction, qu'on rollback avant sa fin, comme pytest-django avec l'ORM django (mais ça n'enlèvera pas l'incrémentation des séquences qui n'est pas protégée par les transactions)
Updated by Valentin Deniaud about 1 month ago
Benjamin Dauvergne a écrit :
Oui tu comprends bien, ça a apporté :Ce serait bien de faire un récap sur ce qu'à apporter #95255 (donc le passage si je comprends d'une sérialisation en JSON des formdata? carddata? dans l'objet qui stocke l'exécution du test vers un stockage dans les tables normales stockant les demande, ne pas hésiter à modifier ma prose si ce n'est pas une bonne decription du changement) pour voir d'où on vient et où on va.
- Simplification du code, plus besoin de serialiser et surtout deserialiser (le code a pas encore été retiré pour maintenir une compatibilité mais il faudrait (d'ailleurs la deserialisation était incomplète, on a rien pour transformer le JSON des evolutions en objets evolution))
- Possibilité de tester la création d'une demande simplement, avec un inspect du résultat qui fonctionne (https://git.entrouvert.org/entrouvert/wcs/commit/9f8e7db82ff8cb3505d30e2defc644e9825bb8ef)
- Pareil pour la dépendance entre les tests, ça aurait été je pense nettement plus compliqué avec de faux objets
J'ai un peu philosophé sur le sujet ici #92388-2.
Je propose deux autres pistes:
- tout stocker dans une autre table (mais donc si le changement #95255 visait à éviter trop de changement partout ben ce sera raté)
Je ne comprends pas cette piste mais oui plus le chemin des tests divergera du chemin réel moins tout ça marchera.
- faire tourner les tests dans une transaction, qu'on rollback avant sa fin, comme pytest-django avec l'ORM django (mais ça n'enlèvera pas l'incrémentation des séquences qui n'est pas protégée par les transactions)
Ici on part du principe que l'incrémentation est un problème, sinon on pourrait juste changer les index pour que postgres soit content (c'est ce que je comprends de ce que dit Pierre).
Updated by Valentin Deniaud about 1 month ago
Qu'est-ce qui ne va pas à avoir deux tables par formdata ? Pierre semblait dire que c'était OK.
Updated by Benjamin Dauvergne about 1 month ago
Valentin Deniaud a écrit :
Qu'est-ce qui ne va pas à avoir deux tables par formdata ? Pierre semblait dire que c'était OK.
Si ça n'est pas nécessaire je ne vois pas de raison de le faire; j'ai l'impression qu'on pourrait s'en sortir simplement en dupliquant le formdata formdef avant de lancer les tests puis en le supprimant. Non ?
Updated by Valentin Deniaud about 1 month ago
Benjamin Dauvergne a écrit :
Si ça n'est pas nécessaire je ne vois pas de raison de le faire; j'ai l'impression qu'on pourrait s'en sortir simplement en dupliquant le formdata avant de lancer les tests puis en le supprimant. Non ?
Non à la fin du test le formdata ne doit pas être supprimé, il doit rester attaché au résultat, ce qui permet ensuite d'accéder à l'inspecteur, nécessaire pour débugger un test planté.
(un exemple pour comprendre comment ça fonctionne en vrai, notre appli congés https://formulaires-www.entrouvert.com/backoffice/forms/32/)
Updated by Benjamin Dauvergne about 1 month ago
Je voulais dire formdef plus haut pas formdata; m'est avis que doublon de table ou pas il faudra un formdef alternatif de toute façon à un moment donné. J'arrête d'intervenir, on verra sur pièce.
Updated by Robot Gitea about 1 month ago
- Status changed from Nouveau to En cours
Valentin Deniaud (vdeniaud) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/wcs/pulls/2033
- Titre : WIP: sql: use separate table to hold test formdata (#98870)
- Modifications : https://git.entrouvert.org/entrouvert/wcs/pulls/2033/files
Updated by Robot Gitea about 1 month ago
Valentin Deniaud (vdeniaud) a demandé une relecture de Frédéric Péters (fpeters) sur une pull request sur Gitea concernant cette demande :
Updated by Robot Gitea about 1 month ago
- Status changed from Solution proposée to Solution validée
Frédéric Péters (fpeters) a approuvé une pull request sur Gitea concernant cette demande :
Updated by Robot Gitea about 1 month ago
- Status changed from Solution validée to En cours
Valentin Deniaud (vdeniaud) a commencé à travailler sur une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/wcs/pulls/2033
- Titre : WIP: sql: use separate table to hold test formdata (#98870)
- Modifications : https://git.entrouvert.org/entrouvert/wcs/pulls/2033/files
Updated by Robot Gitea about 1 month ago
- Status changed from En cours to Solution proposée
Valentin Deniaud (vdeniaud) a demandé une relecture de Frédéric Péters (fpeters) sur une pull request sur Gitea concernant cette demande :
Updated by Robot Gitea 13 days ago
- Status changed from Solution proposée to Solution validée
Frédéric Péters (fpeters) a approuvé une pull request sur Gitea concernant cette demande :
Updated by Robot Gitea 9 days ago
- Status changed from Solution validée to Résolu (à déployer)
Valentin Deniaud (vdeniaud) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/wcs/pulls/2033
- Titre : sql: use separate table to hold test formdata (#98870)
- Modifications : https://git.entrouvert.org/entrouvert/wcs/pulls/2033/files
Updated by Transition automatique 9 days ago
- Status changed from Résolu (à déployer) to Solution déployée
admin: refactor some test views (#98870)