44https://oss.oracle.com/licenses/upl.
55"""
66
7- from unittest .mock import AsyncMock , MagicMock , Mock , create_autospec , patch
7+ from unittest .mock import AsyncMock , MagicMock , Mock , patch
88
99import oci
1010import pytest
11+ from oracle .oci_monitoring_mcp_server .metrics .models import Metric
1112from oracle .oci_monitoring_mcp_server .metrics .tools import MonitoringMetricsTools
1213
1314
@@ -23,9 +24,10 @@ def mock_context():
2324
2425class TestMetricTools :
2526 @pytest .mark .asyncio
26- @patch .object (MonitoringMetricsTools , "get_monitoring_client" )
2727 async def test_get_compute_metrics (self , mock_context ):
28- with patch ("oci.monitoring.MonitoringClient" ) as mock_oci_monitoring_client :
28+ with patch .object (
29+ MonitoringMetricsTools , "get_monitoring_client"
30+ ) as mock_oci_monitoring_client :
2931 metric = oci .monitoring .models .MetricData (
3032 namespace = "123" ,
3133 resource_group = None ,
@@ -37,7 +39,8 @@ async def test_get_compute_metrics(self, mock_context):
3739 ],
3840 )
3941
40- mock_list_response = create_autospec (oci .response .Response )
42+ mock_oci_monitoring_client .return_value = Mock ()
43+ mock_list_response = Mock ()
4144 mock_list_response .data = [metric ]
4245 mock_oci_monitoring_client .return_value .summarize_metrics_data .return_value = (
4346 mock_list_response
@@ -60,3 +63,39 @@ async def test_get_compute_metrics(self, mock_context):
6063 assert len (result [0 ]["datapoints" ]) == 2
6164 assert result [0 ]["datapoints" ][0 ]["timestamp" ] == "2023-01-01T00:00:00Z"
6265 assert result [0 ]["datapoints" ][0 ]["value" ] == pytest .approx (42.0 )
66+
67+ @pytest .mark .asyncio
68+ async def test_get_metrics_data (self , mock_context ):
69+ with patch .object (
70+ MonitoringMetricsTools , "get_monitoring_client"
71+ ) as mock_oci_monitoring_client :
72+ metric = oci .monitoring .models .MetricData (
73+ namespace = "123" ,
74+ resource_group = None ,
75+ dimensions = {"resourceId" : "instance1" },
76+ compartment_id = "compartment1" ,
77+ aggregated_datapoints = [
78+ MagicMock (timestamp = "2023-01-01T00:00:00Z" , value = 42.0 ),
79+ MagicMock (timestamp = "2023-01-01T00:01:00Z" , value = 43.5 ),
80+ ],
81+ )
82+
83+ mock_oci_monitoring_client .return_value = Mock ()
84+ mock_list_response = Mock ()
85+ mock_list_response .data = [metric ]
86+ mock_oci_monitoring_client .return_value .summarize_metrics_data .return_value = (
87+ mock_list_response
88+ )
89+
90+ metrics_tools = MonitoringMetricsTools ()
91+
92+ result = await metrics_tools .get_metrics_data (
93+ mock_context ,
94+ compartment_id = "compartment1" ,
95+ start_time = "2023-01-01T00:00:00Z" ,
96+ end_time = "2023-01-01T00:00:00Z" ,
97+ )
98+
99+ assert result is not None
100+ for metric in result :
101+ assert isinstance (metric , Metric )
0 commit comments