-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Validation NeTEx automatique #4204
Conversation
7343117
to
4ac870b
Compare
50ba5c5
to
088cfc8
Compare
Le validateur NeTEx accepte des ResourceHistory pour se conformer au job de validation. Ceci active de fait la validation automatique de resources NETEx.
088cfc8
to
f5c334b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Notes rapides après une première passe:
- @ptitfred je me demandais si j'allais tenter de faire tourner ça en local ; vu tes travaux précédents, est-ce que tu as réussi à travailler en local avec un bucket etc ?
- je me note d'aller voir la couverture de tests, ça m'aidera à rendre ma lecture plus pertinente
Super boulot en première passe !
Oui, le screenshot est tiré de mon setup local. J'ai l'upload S3 depuis un bon moment (pour tester le GTFS diff, et pour la validation OnDemand). |
|
…kground-validation
…kground-validation
…kground-validation
…kground-validation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'ai fait une première relecture hier, et des tests en local.
J'ai spotté un cas qui amène une situation pas bonne en locale, mais je ne suis pas sûr du tout si c'est lié au code de la PR ou pas, je vais refaire un tour et documenter ce que j'ai.
Je refais une passe en fin de journée si tout va bien, et j'apporterais + d'éléments, là trop court niveau timing.
…kground-validation
…kground-validation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Beau boulot ❤️ ! J'ai bien aimé le splitting propre entre NeTEx et GTFS pour généraliser, en particulier.
J'ai procédé à différentes choses, voilà le détail.
Test en local
J’ai pris un dump de production, et j’ai cherché les NeTEx de FLUO (pas le même que celui utilisé par @ptifred sur le screenshot, pour changer un peu).
J’ai démarré avec avec un setup minio local (https://github.com/etalab/transport-site/blob/master/.miniorc.template) mais au final ça n’a pas du être utile sur ce tour, mais ça je ne l’ai su qu’après.
J’ai mis ENROUTE_TOKEN
(dont je me dis qu'il gagnerait à être renommé en ENROUTE_CONVERSION_TOKEN
à présent, et qu'il ne m'a en fait pas servi) et ENROUTE_VALIDATION_TOKEN
à leurs valeurs de production (comme dit par @ptitfred, pas d'environnement de tests sur le validateur).
J’ai ensuite identifié le resource_id
d’un NeTEx fluo, et trouvé le dernier resource_history_id
en SQL.
Puis lancé via iex comme partagé par @ptitfred:
%{
"validator" => Atom.to_string(Transport.Validators.NeTEx),
"resource_history_id" => resource_history_id
}
|> Transport.Jobs.ResourceHistoryValidationJob.new()
|> Oban.insert!()
Ça a tourné comme il faut, et j’ai pu retrouver sur la page de détail de la resource, le rapport qui va bien.
Test sur prochainement
(au final sans gros lien avec cette PR, mais ça améliore le setup de test)
J’ai déployé sur la recette, ajouté ENROUTE_VALIDATION_TOKEN
au worker comme au site (même si c’est probablement utile qu’au worker sur ce tour a priori), et j’ai pu faire une validation à la demande (scope différent, mais qui était touché par la PR légèrement).
Je n’ai pas testé l’historisation, mais c’était quand même intéressant pour voir que la partie erreur apparaissait bien à l’écran sur le on demand.
Revue de code
Voir les commentaires, il y a un petit point où je me suis demandé si on voulait ou pas ajouter un test sur le cas d'erreur, en particulier.
Clarté d’un message
J’ai mis un peu de temps à comprendre Les avertissements sont temporaires
(et j’ai trouvé la traduction plus claire). Peut-être à remplacer par quelque chose du genre “les avertissements affichés sont en beta et vont évoluer” ?
Conclusion et question importante
Un petit pas pour nous, un grand pas pour le PAN, que d’avoir ces validations faites en systématique.
Je ne vois pas le déclenchement via le job automatique, est-ce déjà “intégré” indirectement, ou est-ce que ça fera l’objet d’une autre PR ?
@@ -76,7 +76,7 @@ defmodule Transport.Jobs.OnDemandValidationJob do | |||
validator = NeTEx.validator_name() | |||
|
|||
case NeTEx.validate(url, []) do | |||
{:error, msg} -> | |||
{:error, %{message: msg}} -> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Le changement est en effet révélateur que c'était pas testé. Cependant j'en démordrai jamais : ça relève du travail d'un type checker et pas de tests unitaires (si on utilisait systématiquement des structs plutôt que des maps).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ca va venir, ça va venir !!! https://x.com/josevalim/status/1850480238330892636
conn | ||
|> assign(:related_files, Resource.get_related_files(resource)) | ||
|> assign(:resource, resource) | ||
|> assign(:other_resources, Resource.other_resources(resource)) | ||
|> assign(:issues, Scrivener.paginate(issues, config)) | ||
|> assign(:data_vis, encoded_data_vis(issue_type, validation)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NDR: déplacé dans le refacto spécifique au GTFS plus haut, et pas encore disponible sur NeTEx.
@@ -114,14 +114,16 @@ locale = get_session(@conn, :locale) %> | |||
<%= raw( | |||
dgettext( | |||
"validations", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Le dgettext
ci-dessous est couvert par les tests (donc si on introduit une typo, ça lève une erreur, parfait).
(et donc je vois aussi le souci "mix dialyzer --plt" qui coince @ptitfred sur le CI !) |
J'ai remis à jour la branche, et cette fois... plus de timeout, c'est passé. |
Je relance le build directement dans ces cas-là |
Même problème sur pas mal de PRs avec CircleCI. Je relance et ça passe. C'est assez récent et j'ai jamais enquêté. Peut-être qu'on mange trop de ressources et que CircleCI a été plus agressif pour tuer des process gourmands dernièrement. |
Oui j'ai pas été très inspiré. |
Il faut que je reteste mais autant que je me souvienne (1 mois est passé déjà) le validateur NeTEx est listé à côté des autres et devrait donc bien être déclenché par la validation à l'historisation. |
Après discussion avec @ptitfred on va temporiser le déploiement à lundi. Principalement à cause d'Halloween. |
Je vais refaire quelques tests en local avant de partir en week-end, notamment pour être serein quant à l'historisation. |
…kground-validation
Validation automatique des resources NeTEx historisées.
Voir #4153.
Test ponctuel