mon_module.Tools package

Submodules

mon_module.Tools.Monitoring module

Module de surveillance des ressources système pendant l’exécution de tests.

Ce fichier contient une classe principale Monitoring permettant de suivre en temps réel l’utilisation des ressources système (CPU, mémoire, disque) durant l’exécution de tests. Il offre des fonctionnalités de surveillance, de mise à jour des données et de visualisation graphique des résultats.

Contenu :

  1. Classe principale

    • Monitoring : Classe pour surveiller et analyser les ressources utilisées.

  2. Fonctionnalités

    • Surveillance des ressources système (CPU, mémoire, disque) via psutil.

    • Génération de graphiques interactifs avec plotly.

    • Sauvegarde des résultats au format texte, HTML ou JSON.

    • Gestion des intervalles de mise à jour via des threads.

class mon_module.Tools.Monitoring.Monitoring(interval: float = 1.0)[source]

Bases: object

Classe de monitoring qui suit l’utilisation des ressources (CPU, mémoire, disque) pendant l’exécution des tests.

Cette classe collecte les informations sur l’utilisation des ressources du système durant l’exécution des tests. Elle fournit des fonctionnalités pour démarrer et arrêter la surveillance, mettre à jour les valeurs des ressources, et générer des graphiques ou des fichiers texte avec ces données.

Attributs :
  • cpu (:class:`List[float]`) : Liste des valeurs d’utilisation du CPU.

  • memory (:class:`List[float]`) : Liste des valeurs d’utilisation de la mémoire.

  • disk (:class:`List[float]`) : Liste des valeurs d’utilisation du disque.

  • times (:class:`List[float]`) : Liste des timestamps correspondant aux valeurs des ressources.

  • monitoring (:class:`bool`) : Indique si la surveillance est en cours ou non.

  • thread (:class:`threading.Thread`) : Le thread qui exécute le monitoring.

  • tests_info (:class:`List[dict]`) : Liste des informations relatives aux tests exécutés.

  • interval (:class:`float`) : Intervalle de temps entre chaque mise à jour des données en secondes.

interval: float = 1.0

Intervalle de temps entre chaque mise à jour des données en secondes.

property n_entries: int

Retourne le nombre d’entrées (mesures) dans le monitoring.

Returns:

Nombre d’entrées dans les listes de données.

start(interval: float = 1.0)[source]

Démarre la surveillance des ressources.

Parameters:

interval – Intervalle de mise à jour des données (en secondes).

monitor()[source]

Surveille les ressources en continu dans un thread séparé.

stop()[source]

Arrête la surveillance et effectue une dernière mise à jour des valeurs.

add_test_info(name: str)[source]

Ajoute des informations sur un test dans la liste des tests.

Parameters:

name – Le nom complet du test, au format “<path>test_<file>.py::test_<test_name>”.

static get_color_map_by_name(names: list[str], palette: list[str] = ['#636EFA', '#EF553B', '#00CC96', '#AB63FA', '#FFA15A', '#19D3F3', '#FF6692', '#B6E880', '#FF97FF', '#FECB52']) dict[str, str][source]

Génère un dictionnaire associant chaque nom de fichier à une couleur unique.

Cette fonction prend une liste de noms de fichiers et associe une couleur de la palette spécifiée à chaque nom de fichier. Si le nombre de fichiers dépasse le nombre de couleurs disponibles dans la palette, elle réutilise les couleurs de manière cyclique.

Parameters:
  • names – Liste des noms des fichiers pour lesquels une couleur doit être attribuée.

  • palette – Liste des couleurs à utiliser pour les fichiers. Si non spécifié, la palette Plotly est utilisée par défaut.

Returns:

Un dictionnaire où les clés sont les noms de fichiers et les valeurs sont les couleurs attribuées.

static get_y_range(data, padding_ratio: float = 0.0)[source]

Calcule la plage de valeurs de l’axe Y avec un espacement supplémentaire autour des valeurs.

Parameters:
  • data – Liste des données pour lesquelles la plage doit être calculée.

  • padding_ratio – Rapport d’espacement ajouté à la plage des données.

Returns:

La plage calculée [min, max] avec l’espacement ajouté.

static draw_test_section(fig: Figure, y_range: list, tests: list[dict], color_map: dict, last_time: float, row: int)[source]

Ajoute des barres verticales et des zones colorées pour chaque test dans un graphique Plotly.

Cette fonction ajoute des zones colorées en fonction des timestamps des tests et leur fichier associé, ainsi que des lignes verticales pour marquer chaque test. Elle est utilisée pour représenter graphiquement les périodes d’exécution de chaque test dans le temps.

Parameters:
  • fig – L’objet figure de Plotly dans lequel les éléments (barres et lignes) seront ajoutés.

  • y_range – La plage des valeurs sur l’axe Y pour la section du graphique où les zones colorées seront tracées. La plage est définie par deux valeurs [y_min, y_max].

  • tests – Une liste de dictionnaires représentant les tests effectués. Chaque dictionnaire doit contenir les clés : - “Timestamp” (float) : Le timestamp du test. - “File” (str) : Le nom du fichier associé au test. - “Test” (str) : Le nom du test effectué.

  • color_map – Un dictionnaire associant chaque fichier de test à une couleur. Le fichier est utilisé comme clé et la couleur (en format HTML) comme valeur.

  • last_time – Le dernier timestamp enregistré, utilisé pour déterminer la fin de la zone colorée pour le dernier test.

  • row – L’index de la ligne dans la figure Plotly (utile lorsque plusieurs sous-graphiques sont utilisés) pour ajouter les éléments (barres verticales et zones colorées) dans la section correspondante.

Returns:

Cette fonction modifie l’objet fig en ajoutant des traces et des formes, mais ne retourne rien.

save(filename: str | Path, full_html: bool = False)[source]

Sauvegarde les données de monitoring dans un fichier spécifié en fonction de l’extension du fichier.

Cette méthode permet de sauvegarder les informations de monitoring dans différents formats en fonction de l’extension du fichier fourni :

  • .png : Sauvegarde une image de la figure générée par la méthode draw.

  • .html : Sauvegarde la figure au format HTML.

  • .json : Sauvegarde les données au format JSON.

  • Pour d’autres formats, les informations de monitoring seront enregistrées sous forme de texte brut.

Le format texte contient les informations suivantes :

  • Timestamps : Liste des timestamps collectés pendant le monitoring.

  • CPU Usage : Utilisation du CPU.

  • Memory Usage : Utilisation de la mémoire.

  • Disk Usage : Utilisation du disque.

  • Liste des tests : Détails des tests effectués, incluant le fichier, le test et le timestamp.

Parameters:
  • filename – Le chemin et nom du fichier dans lequel les données de monitoring seront enregistrées. Le format de sauvegarde sera déterminé en fonction de l’extension du fichier (ex. .png, .html, .json).

  • full_html – Option pour l’enregistrement html permettant de ne sauver que le div

tostring() str[source]

Retourne une représentation textuelle des données de monitoring.

Returns:

Chaîne décrivant les données de monitoring.

mon_module.Tools.Utils module

Fichier de fonctions génériques pour la gestion des fichiers, l’affichage de messages colorés dans la console.

Ce module regroupe des utilitaires pour des tâches courantes et est structuré en plusieurs sections :

  • Gestion de fichiers : manipulation des noms de fichiers et ajout d’extensions ou de suffixes.

  • Affichage : impression de messages colorés pour les erreurs ou avertissements.

Structure :

  1. File Management

    • add_extension : Ajoute une extension à un fichier s’il n’en a pas.

    • add_suffix : Ajoute un suffixe à un nom de fichier, tout en préservant l’extension.

    • get_timestamp_for_files : Génère un horodatage au format adapté pour les noms de fichiers.

  2. Prints

    • print_error : Affiche un message d’erreur en rouge.

    • print_warning : Affiche un avertissement en jaune.

mon_module.Tools.Utils.add_extension(filename: str, extension: str) str[source]

Ajoute l’extension au fichier si ce n’est pas déjà l’extension actuelle

Parameters:
  • filename – Nom du fichier

  • extension – Extension finale du fichier

mon_module.Tools.Utils.add_suffix(filename: str, suffix: str) str[source]

Ajoute un suffixe à un nom de fichier (gère la possibilité d’une extension ou non au nom de fichier).

Parameters:
  • filename – Nom de fichier d’origine.

  • suffix – Suffixe à ajouter.

Returns:

Nom de fichier avec l’horodatage ajouté.

mon_module.Tools.Utils.get_timestamp_for_files(with_hour: bool = True) str[source]

Créé un horodatage au format -AAAAMMJJ_HHMMSS pour un nom de fichier.

Parameters:

with_hour – Ajoute ou non l’heure au timestamp

Returns:

Horodatage.

mon_module.Tools.Utils.print_error(msg: str)[source]

Affiche un message avec une couleur rouge

Parameters:

msg – message à afficher

mon_module.Tools.Utils.print_warning(msg: str)[source]

Affiche un message avec une couleur jaune

Parameters:

msg – message à afficher

Module contents

Ce sous-package contient des outils utilitaires pour le projet SampleMaker.

Modules disponibles :

  • Drawing : Fournit des fonctions de dessin génériques.

  • Monitoring : Fournit un module de surveillance des ressources système pendant l’exécution de tests.

  • Utils : Fournit des fonctions d’assistance génériques.

Fonctionnalités principales :

  • Tous les modules peuvent être importés directement via from mon_module.Tools import <module>.

class mon_module.Tools.Monitoring(interval: float = 1.0)[source]

Bases: object

Classe de monitoring qui suit l’utilisation des ressources (CPU, mémoire, disque) pendant l’exécution des tests.

Cette classe collecte les informations sur l’utilisation des ressources du système durant l’exécution des tests. Elle fournit des fonctionnalités pour démarrer et arrêter la surveillance, mettre à jour les valeurs des ressources, et générer des graphiques ou des fichiers texte avec ces données.

Attributs :
  • cpu (:class:`List[float]`) : Liste des valeurs d’utilisation du CPU.

  • memory (:class:`List[float]`) : Liste des valeurs d’utilisation de la mémoire.

  • disk (:class:`List[float]`) : Liste des valeurs d’utilisation du disque.

  • times (:class:`List[float]`) : Liste des timestamps correspondant aux valeurs des ressources.

  • monitoring (:class:`bool`) : Indique si la surveillance est en cours ou non.

  • thread (:class:`threading.Thread`) : Le thread qui exécute le monitoring.

  • tests_info (:class:`List[dict]`) : Liste des informations relatives aux tests exécutés.

  • interval (:class:`float`) : Intervalle de temps entre chaque mise à jour des données en secondes.

interval: float = 1.0

Intervalle de temps entre chaque mise à jour des données en secondes.

property n_entries: int

Retourne le nombre d’entrées (mesures) dans le monitoring.

Returns:

Nombre d’entrées dans les listes de données.

start(interval: float = 1.0)[source]

Démarre la surveillance des ressources.

Parameters:

interval – Intervalle de mise à jour des données (en secondes).

monitor()[source]

Surveille les ressources en continu dans un thread séparé.

stop()[source]

Arrête la surveillance et effectue une dernière mise à jour des valeurs.

add_test_info(name: str)[source]

Ajoute des informations sur un test dans la liste des tests.

Parameters:

name – Le nom complet du test, au format “<path>test_<file>.py::test_<test_name>”.

static get_color_map_by_name(names: list[str], palette: list[str] = ['#636EFA', '#EF553B', '#00CC96', '#AB63FA', '#FFA15A', '#19D3F3', '#FF6692', '#B6E880', '#FF97FF', '#FECB52']) dict[str, str][source]

Génère un dictionnaire associant chaque nom de fichier à une couleur unique.

Cette fonction prend une liste de noms de fichiers et associe une couleur de la palette spécifiée à chaque nom de fichier. Si le nombre de fichiers dépasse le nombre de couleurs disponibles dans la palette, elle réutilise les couleurs de manière cyclique.

Parameters:
  • names – Liste des noms des fichiers pour lesquels une couleur doit être attribuée.

  • palette – Liste des couleurs à utiliser pour les fichiers. Si non spécifié, la palette Plotly est utilisée par défaut.

Returns:

Un dictionnaire où les clés sont les noms de fichiers et les valeurs sont les couleurs attribuées.

static get_y_range(data, padding_ratio: float = 0.0)[source]

Calcule la plage de valeurs de l’axe Y avec un espacement supplémentaire autour des valeurs.

Parameters:
  • data – Liste des données pour lesquelles la plage doit être calculée.

  • padding_ratio – Rapport d’espacement ajouté à la plage des données.

Returns:

La plage calculée [min, max] avec l’espacement ajouté.

static draw_test_section(fig: Figure, y_range: list, tests: list[dict], color_map: dict, last_time: float, row: int)[source]

Ajoute des barres verticales et des zones colorées pour chaque test dans un graphique Plotly.

Cette fonction ajoute des zones colorées en fonction des timestamps des tests et leur fichier associé, ainsi que des lignes verticales pour marquer chaque test. Elle est utilisée pour représenter graphiquement les périodes d’exécution de chaque test dans le temps.

Parameters:
  • fig – L’objet figure de Plotly dans lequel les éléments (barres et lignes) seront ajoutés.

  • y_range – La plage des valeurs sur l’axe Y pour la section du graphique où les zones colorées seront tracées. La plage est définie par deux valeurs [y_min, y_max].

  • tests – Une liste de dictionnaires représentant les tests effectués. Chaque dictionnaire doit contenir les clés : - “Timestamp” (float) : Le timestamp du test. - “File” (str) : Le nom du fichier associé au test. - “Test” (str) : Le nom du test effectué.

  • color_map – Un dictionnaire associant chaque fichier de test à une couleur. Le fichier est utilisé comme clé et la couleur (en format HTML) comme valeur.

  • last_time – Le dernier timestamp enregistré, utilisé pour déterminer la fin de la zone colorée pour le dernier test.

  • row – L’index de la ligne dans la figure Plotly (utile lorsque plusieurs sous-graphiques sont utilisés) pour ajouter les éléments (barres verticales et zones colorées) dans la section correspondante.

Returns:

Cette fonction modifie l’objet fig en ajoutant des traces et des formes, mais ne retourne rien.

save(filename: str | Path, full_html: bool = False)[source]

Sauvegarde les données de monitoring dans un fichier spécifié en fonction de l’extension du fichier.

Cette méthode permet de sauvegarder les informations de monitoring dans différents formats en fonction de l’extension du fichier fourni :

  • .png : Sauvegarde une image de la figure générée par la méthode draw.

  • .html : Sauvegarde la figure au format HTML.

  • .json : Sauvegarde les données au format JSON.

  • Pour d’autres formats, les informations de monitoring seront enregistrées sous forme de texte brut.

Le format texte contient les informations suivantes :

  • Timestamps : Liste des timestamps collectés pendant le monitoring.

  • CPU Usage : Utilisation du CPU.

  • Memory Usage : Utilisation de la mémoire.

  • Disk Usage : Utilisation du disque.

  • Liste des tests : Détails des tests effectués, incluant le fichier, le test et le timestamp.

Parameters:
  • filename – Le chemin et nom du fichier dans lequel les données de monitoring seront enregistrées. Le format de sauvegarde sera déterminé en fonction de l’extension du fichier (ex. .png, .html, .json).

  • full_html – Option pour l’enregistrement html permettant de ne sauver que le div

tostring() str[source]

Retourne une représentation textuelle des données de monitoring.

Returns:

Chaîne décrivant les données de monitoring.