Projet

Général

Profil

Development #72645

build cassé, erreur à l’initialisation de la fixture de serveur smtp

Ajouté par Paul Marillonnet il y a plus d'un an. Mis à jour il y a environ un an.

Statut:
Fermé
Priorité:
Bas
Assigné à:
Catégorie:
-
Version cible:
-
Début:
20 décembre 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

https://jenkins.entrouvert.org/job/hobo/7553/consoleFull dans l’env py3-django22-drf312-coverage :

==================================== ERRORS ====================================
___________________ ERROR at setup of test_no_spf_validation ___________________

monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7ff9bd7c4880>
port_available = 52320

    @pytest.fixture
    def smtp_server(monkeypatch, port_available):
        class RecipientValidatingSMTPChannel(smtpd.SMTPChannel):
            def smtp_RCPT(self, arg):
                address = self._getaddr(arg)
                domain = address[1].split('@')[-1][:-1]
                if domain in (
                    'example.com',
                    'example-spf.com',
                    'example-spf-allow-all.com',
                    'example-invalid-spf.com',
                ):
                    self._SMTPChannel__rcpttos.append(address)
                    self.push('250 Ok')
                else:
                    self.push('550 No such user here')

        class MailServer(smtpd.SMTPServer):
            def handle_accept(self):
                conn, addr = self.accept()
                channel = RecipientValidatingSMTPChannel(self, conn, addr)

>       server = MailServer(('localhost', port_available), None)

tests/test_emails.py:81: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.9/smtpd.py:650: in __init__
    self.bind(localaddr)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <test_emails.smtp_server.<locals>.MailServer localhost:52320 at 0x7ff9bd7c4670>
addr = ('localhost', 52320)

    def bind(self, addr):
        self.addr = addr
>       return self.socket.bind(addr)
E       OSError: [Errno 98] Address already in use

/usr/lib/python3.9/asyncore.py:326: OSError


Fichiers

Révisions associées

Révision b3520030 (diff)
Ajouté par Benjamin Dauvergne il y a environ un an

tests: improve search of a free TCP port (#72645)

Historique

#1

Mis à jour par Paul Marillonnet il y a plus d'un an

(Et en fait c’est pas intermittence, ce n’est même pas la raison de l’échec du précédent build, qui était lui aussi en erreur.)

#2

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

C'est par intermittence à quel fréquence ? Si ça arrive une fois par an, ça parait assez normal sinon c'est qu'il y a un problème plus grave. On pourrait varier l'ip et le port pour augmenter l'espace disponible, on a par exemple l'ensemble des IPs localhost (127.0.0.x + port entre 1024 et 65536).

#3

Mis à jour par Paul Marillonnet il y a plus d'un an

  • Priorité changé de Normal à Bas

J’ai créé le ticket en pensant que deux builds consécutifs venaient de casser pour cette raison, ce n’est pas le cas. Je baisse la priorité et je me note de fermer ce ticket si ça ne se reproduit pas d’ici peu.

#4

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

  • Assigné à mis à Benjamin Dauvergne
#5

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

#6

Mis à jour par Paul Marillonnet il y a environ un an

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

Ok, cool, j’aurais juste bien vu une ligne de commentaire en plus pour expliquer la valeur des deux bits passés à setsockopt, parce que c’est à la fois simple et quand même un peu caché dans la doc. Sinon c’est bon pour moi, ack.

#7

Mis à jour par Benjamin Dauvergne il y a environ un an

  • Statut changé de Solution validée à Résolu (à déployer)
commit b3520030f57b050914a14f4363e3dccff3e51163
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Wed Dec 21 16:07:21 2022 +0100

    tests: improve search of a free TCP port (#72645)
#8

Mis à jour par Transition automatique il y a environ un an

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

Mis à jour par Transition automatique il y a environ un an

Automatic expiration

Formats disponibles : Atom PDF