Project

General

Profile

Development #67911

paralléliser les tests via tox -p

Added by A. B. almost 2 years ago. Updated almost 2 years ago.

Status:
Fermé
Priority:
Normal
Category:
-
Target version:
-
Start date:
03 August 2022
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

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.


Files


Related issues

Related to Hobo - Development #67760: fonctionner avec django 3.2Fermé28 July 2022

Actions
Related to Hobo - Development #67933: Simplifier le nom des bases en testFermé04 August 2022

Actions

Associated revisions

Revision d2b5a329 (diff)
Added by A. B. almost 2 years ago

Parallelize tests in CI (#67911)

History

#1

Updated by A. B. almost 2 years ago

#2

Updated by A. B. almost 2 years ago

#3

Updated by A. B. almost 2 years ago

  • Assignee changed from A. B. to Benjamin Dauvergne

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

#4

Updated by Benjamin Dauvergne almost 2 years ago

  • Status changed from Solution proposée to 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

Updated by A. B. almost 2 years ago

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

Updated by A. B. almost 2 years ago

  • Status changed from Solution proposée to 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

Updated by Benjamin Dauvergne almost 2 years ago

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

Updated by A. B. almost 2 years ago

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

Updated by Benjamin Dauvergne almost 2 years ago

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

Updated by A. B. almost 2 years ago

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

Updated by A. B. almost 2 years ago

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

Updated by A. B. almost 2 years ago

#15

Updated by Transition automatique almost 2 years ago

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

Updated by Transition automatique almost 2 years ago

Automatic expiration

Also available in: Atom PDF