Monitoring

class 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.

Parameters:

interval (float)

Attributs

Monitoring.interval: float = 1.0

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

Monitoring.n_entries

Nombre d’entrées (mesures) dans le monitoring (int).

Méthodes

Monitoring Manipulation

Monitoring.start(interval: float = 1.0)[source]

Démarre la surveillance des ressources.

Parameters:

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

Monitoring.monitor()[source]

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

Monitoring.stop()[source]

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

Monitoring.add_test_info(name: str)[source]

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

Parameters:

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

Drawing

static Monitoring.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 (list[str]) – Liste des noms des fichiers pour lesquels une couleur doit être attribuée.

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

Returns:

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

Return type:

dict[str, str]

static Monitoring.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 (float) – Rapport d’espacement ajouté à la plage des données.

Returns:

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

static Monitoring.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 (Figure) – L’objet figure de Plotly dans lequel les éléments (barres et lignes) seront ajoutés.

  • y_range (list) – 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 (list[dict]) – 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 (dict) – 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 (float) – Le dernier timestamp enregistré, utilisé pour déterminer la fin de la zone colorée pour le dernier test.

  • row (int) – 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.

Divers

Monitoring.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 (str | Path) – 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 (bool) – Option pour l’enregistrement HTML permettant de ne sauver que le div

Monitoring.tostring() str[source]

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

Returns:

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

Return type:

str