Project

General

Profile

Development #67911

paralléliser les tests via tox -p

Added by Agate Berriot about 1 year ago. Updated about 1 year 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 Agate Berriot about 1 year ago

Parallelize tests in CI (#67911)

History

#1

Updated by Agate Berriot about 1 year ago

#2

Updated by Agate Berriot about 1 year ago

#3

Updated by Agate Berriot about 1 year ago

  • Assignee changed from Agate Berriot to Benjamin Dauvergne

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

#4

Updated by Benjamin Dauvergne about 1 year 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 Agate Berriot about 1 year 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 Agate Berriot about 1 year 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 about 1 year 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 Agate Berriot about 1 year 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 about 1 year 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 Agate Berriot about 1 year 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 Agate Berriot about 1 year 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 Agate Berriot about 1 year ago

#15

Updated by Transition automatique about 1 year ago

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

Updated by Transition automatique 12 months ago

Automatic expiration

Also available in: Atom PDF