Coverage for mcpgateway / utils / metrics_common.py: 100%
4 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-02-11 07:10 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-02-11 07:10 +0000
1# -*- coding: utf-8 -*-
2"""Location: ./mcpgateway/utils/metrics_common.py
3Copyright 2025
4SPDX-License-Identifier: Apache-2.0
5Authors: Mihai Criveti
7Common utilities for metrics handling across service modules.
8"""
10# Standard
11from typing import List
13# First-Party
14from mcpgateway.schemas import TopPerformer
17def build_top_performers(results: List) -> List[TopPerformer]:
18 """
19 Convert database query results to TopPerformer objects.
21 This utility function eliminates code duplication across service modules
22 that need to convert database query results with metrics into TopPerformer objects.
24 Args:
25 results: List of database query results, each containing:
26 - id: Entity ID
27 - name: Entity name
28 - execution_count: Total executions
29 - avg_response_time: Average response time
30 - success_rate: Success rate percentage
31 - last_execution: Last execution timestamp
33 Returns:
34 List[TopPerformer]: List of TopPerformer objects with proper type conversions
36 Examples:
37 >>> from unittest.mock import MagicMock
38 >>> result = MagicMock()
39 >>> result.id = 1
40 >>> result.name = "test"
41 >>> result.execution_count = 10
42 >>> result.avg_response_time = 1.5
43 >>> result.success_rate = 85.0
44 >>> result.last_execution = None
45 >>> performers = build_top_performers([result])
46 >>> len(performers)
47 1
48 >>> performers[0].id
49 1
50 >>> performers[0].execution_count
51 10
52 >>> performers[0].avg_response_time
53 1.5
54 """
55 return [
56 TopPerformer(
57 id=result.id,
58 name=result.name,
59 execution_count=result.execution_count or 0,
60 avg_response_time=float(result.avg_response_time) if result.avg_response_time else None,
61 success_rate=float(result.success_rate) if result.success_rate else None,
62 last_execution=result.last_execution,
63 )
64 for result in results
65 ]