Projet

Général

Profil

Development #67911

paralléliser les tests via tox -p

Ajouté par A. Berriot il y a plus d'un an. Mis à jour il y a plus d'un an.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
03 août 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

C'était déjà très lent, et avec l'arrivée de django 3 et la nécessité de tester en parallèle sur deux version de django, c'est encore pire.


Fichiers


Demandes liées

Lié à Hobo - Development #67760: fonctionner avec django 3.2Fermé28 juillet 2022

Actions
Lié à Hobo - Development #67933: Simplifier le nom des bases en testFermé04 août 2022

Actions

Révisions associées

Révision d2b5a329 (diff)
Ajouté par A. Berriot il y a plus d'un an

Parallelize tests in CI (#67911)

Historique

#1

Mis à jour par A. Berriot il y a plus d'un an

#2

Mis à jour par A. Berriot il y a plus d'un an

#3

Mis à jour par A. Berriot il y a plus d'un an

  • Assigné à changé de A. Berriot à Benjamin Dauvergne

Division du temps d'exécution par 3, on passe de 20 à 6 minutes.

#4

Mis à jour par Benjamin Dauvergne il y a plus d'un an

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

Ok, j'aurai préféré qu'on conserver une partie du dbname, comme dans wcs_olap.feeder.truncate_pg_identifier :

def truncate_pg_identifier(identifier, hash_length=6, force_hash=False):
    if len(identifier) < 64 and not force_hash:
        return identifier
    else:
        # insert hash in the middle, to keep some readability
        return (
            identifier[:(63 - hash_length) // 2]
            + hashlib.md5(identifier.encode('utf-8')).hexdigest()[:hash_length]
            + identifier[-(63 - hash_length) // 2:])

#6

Mis à jour par A. Berriot il y a plus d'un an

Benjamin Dauvergne a écrit :

Ok, j'aurai préféré qu'on conserver une partie du dbname, comme dans wcs_olap.feeder.truncate_pg_identifier :
[...]

J'aurais préféré aussi, mais je n'ai pas réussi à trouver une façon de faire ça correctement dans le code. J'ai l'impression que le dbname tel qu'utilisé dans les settings n'est pas vraiment le dbname final. D'après les erreurs que j'ai vues, il y a encore une concatenation derrière entre ce nom là et d'autres, et je n'ai pas trouvé où ce situe cette logique.

(J'ai poussé un autre patch sur la branche en attendant mais je vais le déplacer dans un ticket séparé, ça sera plus simple)

#7

Mis à jour par A. Berriot il y a plus d'un an

  • Statut changé de Solution proposée à Résolu (à déployer)
Author: Agate Berriot <aberriot@entrouvert.com>
Date:   Wed Aug 3 10:56:29 2022 +0200

    Parallelize tests in CI (#67911)

#8

Mis à jour par Benjamin Dauvergne il y a plus d'un an

Agate Berriot a écrit :

(J'ai poussé un autre patch sur la branche en attendant mais je vais le déplacer dans un ticket séparé, ça sera plus simple)

Oui, lest tests rajoutent un '-test' tu pouvais contrôler ça en définissant la clé DATABASES['default']['TEST']['NAME'] au lieu de @DATABASES['default']['NAME'].

https://docs.djangoproject.com/en/4.0/ref/settings/#test

#9

Mis à jour par A. Berriot il y a plus d'un an

Benjamin Dauvergne a écrit :

Agate Berriot a écrit :

(J'ai poussé un autre patch sur la branche en attendant mais je vais le déplacer dans un ticket séparé, ça sera plus simple)

Oui, lest tests rajoutent un '-test' tu pouvais contrôler ça en définissant la clé DATABASES['default']['TEST']['NAME'] au lieu de @DATABASES['default']['NAME'].

https://docs.djangoproject.com/en/4.0/ref/settings/#test

c'est ce que j'avais fait au départ, mais ça ne fonctionnait pas : quelque part, quelque chose rajoute un suffixe beaucoup plus long qui contient notamment le nom de l'environnement tox

#10

Mis à jour par Benjamin Dauvergne il y a plus d'un an

Agate Berriot a écrit :

c'est ce que j'avais fait au départ, mais ça ne fonctionnait pas : quelque part, quelque chose rajoute un suffixe beaucoup plus long qui contient notamment le nom de l'environnement tox

Je n'ai jamais constaté ce comportement, sur la machine jenkins je ne vois aucun exemple de ça dans les bases qui traînent.

#11

Mis à jour par A. Berriot il y a plus d'un an

Benjamin Dauvergne a écrit :

Agate Berriot a écrit :

c'est ce que j'avais fait au départ, mais ça ne fonctionnait pas : quelque part, quelque chose rajoute un suffixe beaucoup plus long qui contient notamment le nom de l'environnement tox

Je n'ai jamais constaté ce comportement, sur la machine jenkins je ne vois aucun exemple de ça dans les bases qui traînent.

Testé à l'instant: en local, si je passe de hashlib.sha256(DB_NAME.encode()).hexdigest()[:10] à hashlib.sha256(DB_NAME.encode()).hexdigest()[:30], je me retrouve avec ce genre d'erreurs:

E           django.core.exceptions.ImproperlyConfigured: The database name 'test_255620ecf08bbf4fe200cd2edfa36a_py3-django22-drf312-coverage-multipublik' (76 characters) is longer than PostgreSQL's limit of 63 characters. Supply a shorter NAME in settings.DATABASES.

Il y a un suffixe py3-django22-drf312-coverage-multipublik, vraisenblablement le TOX_ENV_NAME qui est rajouté au dbname.

#12

Mis à jour par A. Berriot il y a plus d'un an

Trouvé ! C'est pytest-django qui a une logique qui gère ça automatiquement : https://pytest-django.readthedocs.io/en/latest/database.html?highlight=tox#django-db-modify-db-settings-tox-suffix

#14

Mis à jour par A. Berriot il y a plus d'un an

#15

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

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

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

Automatic expiration

Formats disponibles : Atom PDF