Skip to content

[event-filter] Implémentation du socle

Lucas Seguinot requested to merge feat-event-filter into develop

Cette MR implémente un event-filter dans che. La documentation et l'API sont ajoutées dans https://git.canopsis.net/canopsis/canopsis/merge_requests/531.

La spécification est implémentée, sauf :

  • dans les patterns, l'opérateur in (c'est plus compliqué à implémenter que je ne le pensais avec les types go, pour le moment on peut s'en passer en définissant plusieurs règles).
  • les règles d'enrichissement. J'ai implémenté une partie du décodage pour faire tous les tests d'une traite, je pense faire la suite dans une autre MR.

Il y a pas mal de modifications :

  • le plus gros du code est dans le package lib/canopsis/eventfilter/pattern qui implémente les patterns permettant de sélectionner les événements auxquels les règles sont appliquées. Il y a (en gros) un fichier par type (par exemple les filtres sur les entiers sont implémentés dans integer.go).
  • le reste de la logique de l'eventfilter est implémentée dans lib/canopsis/eventfilter

Tests

  • Créer des règles avec l'API (https://git.canopsis.net/canopsis/canopsis/merge_requests/531)
    • Vérifier que les règles invalides sont rejetées par l'API (la validation des règles ne vérifie pas les patterns, ce serait trop complexe, sachant qu'ils ne sont pas implémentés en python).
  • Vérifier que l'on peut bien lister, supprimer, modifier les règles avec l'API.
  • Envoyer des événements (pour logger le passage des événements dans l'event-filter, ajouter un champs debug valant true à l'événement)
    • Vérifier que les patterns reconnaissent bien les événements correspondants (cf. doc pour les patterns)
    • Vérifier que les règles inactives sont ignorées
    • Vérifier que les actions drop et break ont le comportement attendu
    • Vérifier que les règles sont bien appliquées comme décrit dans la partie "Application des règles" de la spec.
Edited by Lucas Seguinot

Merge request reports

Loading