8000 [plateforme] Test intermittent : le serveur de test lent peut répondre 200 vide · Issue #149 · arnakoff/api · GitHub
[go: up one dir, main page]

Skip to content

[plateforme] Test intermittent : le serveur de test lent peut répondre 200 vide #149

Closed

Description

@EnO33

Partie de #20.

Constat

Échec intermittent sur main (graine -test.shuffle 1793351497494217171, non reproduit en 300 exécutions ni en 8 exécutions complètes avec la même graine) :

--- FAIL: TestFetchErrors/file_too_slow (0.13s)
    fetch_test.go:81: Fetch() error = ARCEP numbering file: unexpected ARCEP file format: header of 0 fields, want context deadline exceeded

Le serveur de test « lent » attend r.Context().Done() puis rend la main : net/http répond alors 200 sans corps. Quand le client atteint son délai, il ferme la connexion TLS ; le serveur voit la fermeture, annule la requête, et sa réponse vide peut encore être lue par le client. net/http.Transport garde explicitement une réponse qui arrive en même temps que la fermeture (src/net/http/transport.go, persistConn.roundTrip, cas <-pc.closech puis <-resc). Le client reçoit alors un corps vide sans erreur. Le mécanisme est déduit du code source, pas observé (« à vérifier »).

Le même gestionnaire est copié dans les tests acpr, amf, arcep et platform/httpclient.

À faire

  • Un gestionnaire httpclienttest qui bloque jusqu'à l'annulation de la requête puis coupe la connexion sans répondre (http.ErrAbortHandler).
  • L'utiliser à la place des copies.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    0