Projet

Général

Profil

Development #43916

tox : tourner les tests sous postgres

Ajouté par Paul Marillonnet il y a presque 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
11 juin 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Tout d'abord parce que c'est toujours bon à avoir, mais aussi parce que j'en ai besoin pour #43781.


Fichiers


Demandes liées

Lié à Combo - Bug #44361: import : une page d'ordre 0 se retrouve à la finFermé23 juin 2020

Actions

Révisions associées

Révision 5134fba1 (diff)
Ajouté par Paul Marillonnet il y a presque 4 ans

Jenkins: increase timeout value (#43916)

Révision d13df9f3 (diff)
Ajouté par Paul Marillonnet il y a presque 4 ans

tests: fix overly-confident references to object identifiers (#43916)

Révision 2fd9129c (diff)
Ajouté par Paul Marillonnet il y a presque 4 ans

tox: provide postgresql test venvs (#43916)

Historique

#1

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

#2

Mis à jour par Frédéric Péters il y a presque 4 ans

Tu ne veux pas faire de ce ticket l'espace de discussion sur l'opportunité de pg_virtualenv; je dégagerais ça.

#3

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

  • Fichier 0003-Jenkins-support-pg_virtualenv-43916.patch supprimé
#4

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

Frédéric Péters a écrit :

Tu ne veux pas faire de ce ticket l'espace de discussion sur l'opportunité de pg_virtualenv;

Ok, on verra si comme avec a2, Jenkins se prend les pieds dans le tapis en testant plusieurs branches wip à la fois. Propositions des patches 0001 et 0002 seulement.

#5

Mis à jour par Emmanuel Cazenave il y a presque 4 ans

C'est garanti sur facture que ça va merder sur des jobs qui tournent en parallèle.

Cf par exemple http://git.entrouvert.org/passerelle.git/tree/tests/settings.py#n61 pour que ça n'arrive pas.

Dans 0002 il y a encore des trucs qui trainent qui ont un rapport avec pg_virtualenv non ?

+if 'postgres' in DATABASES['default']['ENGINE']:
+    for key in ('PGPORT', 'PGHOST', 'PGUSER', 'PGPASSWORD'):
+        if key in os.environ:
+            DATABASES['default'][key[2:]] = os.environ[key]
+

+passenv =
+  BRANCH_NAME
+  PGPORT
+  PGHOST
+  PGUSER
+  PGPASSWORD
#6

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

Emmanuel Cazenave a écrit :

C'est garanti sur facture que ça va merder sur des jobs qui tournent en parallèle.

Cf par exemple http://git.entrouvert.org/passerelle.git/tree/tests/settings.py#n61 pour que ça n'arrive pas.

Merci, c'est vrai qu'on peut faire comme ça.

Dans 0002 il y a encore des trucs qui trainent qui ont un rapport avec pg_virtualenv non ?

Je m'étais imaginé des cas où on apprécierait, indépendamment de pg_virtualenv, la possibilité de passer ces variables d'environnement pour faire tourner les tests, mais c'est un peu spéculatif, je retire :)

Nouveau patch 0002, ici et dans la branche.

#7

Mis à jour par Frédéric Péters il y a presque 4 ans

Tu peux passer le changement de timeout dans un commit séparé ? (et peut-être arrondir à 20)

Aussi, gagnons du temps et zappons sqlite pour django 2.2 ?

#8

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

Frédéric Péters a écrit :

Tu peux passer le changement de timeout dans un commit séparé ? (et peut-être arrondir à 20)

Aussi, gagnons du temps et zappons sqlite pour django 2.2 ?

Ok d'ac, patches à jour ici et dans la branche (patch 0001 inchangé).

#9

Mis à jour par Frédéric Péters il y a presque 4 ans

Dans 0001, appeler postgresql par son nom (reason='postgres not supported yet.' → postgresql), mais surtout je suis surpris de voir ces appels, normalement tout devrait tourner avec postgresql vu que c'est ça qu'on a en prod.

Je dirais qu'il faut commencer par ça.

#10

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

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

Frédéric Péters a écrit :

Dans 0001, appeler postgresql par son nom (reason='postgres not supported yet.' → postgresql), mais surtout je suis surpris de voir ces appels, normalement tout devrait tourner avec postgresql vu que c'est ça qu'on a en prod.

Je dirais qu'il faut commencer par ça.

Ok oui c'est vrai.

#11

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

Tiens, c'est marrant, d'après tox avec un venv pg, le respect de l'ordre des pages lors d'un ré-import ne fonctionne pas. Je vais creuser l'affaire, et faire un ticket à part si le bogue se confirme.

#12

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

Paul Marillonnet a écrit :

Tiens, c'est marrant, d'après tox avec un venv pg, le respect de l'ordre des pages lors d'un ré-import ne fonctionne pas. Je vais creuser l'affaire, et faire un ticket à part si le bogue se confirme.

Ça tombait en marche sous sqlite. Je fais un ticket.

#13

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

Paul Marillonnet a écrit :

Ça tombait en marche sous sqlite. Je fais un ticket.

C'est #44361.

#14

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

  • Lié à Bug #44361: import : une page d'ordre 0 se retrouve à la fin ajouté
#15

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

Pour info, j'ai encore un joli bogue sur l'ajout de cellules JSON (bogue qui d'ailleurs n'est pas reproduisible dans pdb), ça va sans doute finir dans un ticket à part :

    def test_page_versionning(app, admin_user):
        # […]
        # check with asynchronous cells
        resp = app.get('/manage/pages/%s/add-cell-to-content/data_jsoncell/default/' % page.id)
        resp = resp.follow()
>       resp.forms[3]['cdata_jsoncell-1-template_string'].value = 'A{{json.data.0.text}}B'

tests/test_manager.py:1659: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <Form />, name = 'cdata_jsoncell-1-template_string'

    def __getitem__(self, name):
        """Get the named field object (ambiguity is an error).""" 
        fields = self.fields.get(name)
>       assert fields is not None, (
            "No field by the name %r found" % name)
E       AssertionError: No field by the name 'cdata_jsoncell-1-template_string' found

/tmp/tox-paul/combo/py3-django22-pg/lib/python3.8/site-packages/webtest/forms.py:543: AssertionError

Je pense que c'est encore dû à des suppositions erronées sur les identifiants de cellules (cf le numéro en codé en dur dans le nom du champ de formulaire), mais je dois creuser encore un peu pour avoir un diagnostic plus fiable.

#16

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

Paul Marillonnet a écrit :

Je pense que c'est encore dû à des suppositions erronées sur les identifiants de cellules (cf le numéro en codé en dur dans le nom du champ de formulaire), mais je dois creuser encore un peu pour avoir un diagnostic plus fiable.

C'était bien ça, i.e. les tests qui étaient mal écrits, j'ai corrigé et ça restera dans ce ticket.

#18

Mis à jour par Frédéric Péters il y a presque 4 ans

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

Nickel.

#19

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

commit 2fd9129c866d31ee802ad0b5951d0b27a3340046
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Jun 11 11:04:29 2020 +0200

    tox: provide postgresql test venvs (#43916)

commit d13df9f38faa4537679d0be44cc16a63c50a19d7
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Tue Jun 23 11:04:08 2020 +0200

    tests: fix overly-confident references to object identifiers (#43916)

commit 5134fba1177d81d60f99f30514e81acdcbe3d220
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Mon Jun 15 17:31:13 2020 +0200

    Jenkins: increase timeout value (#43916)
#20

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

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

Mis à jour par Frédéric Péters il y a presque 4 ans

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

Formats disponibles : Atom PDF