def test_track_dependency_rate_time_none(self, time_mock): time_mock.time.return_value = 100 metrics_collector = dependency_metrics.DependencyMetrics( meter=self._meter, labels=self._test_labels) dependency_metrics.dependency_map["last_time"] = None obs = Observer( callback=metrics_collector._track_dependency_rate, name="\\ApplicationInsights\\Dependency Calls/Sec", description="Outgoing Requests per second", unit="rps", value_type=float, ) metrics_collector._track_dependency_rate(obs) self.assertEqual( obs.aggregators[tuple(self._test_labels.items())].current, 0.0)
def test_track_failed_dependency_rate_time_none(self, time_mock): time_mock.time.return_value = 100 metrics_collector = dependency_metrics.DependencyMetrics( meter=self._meter, labels=self._test_labels) dependency_metrics.dependency_map["last_time"] = None obs = Observer( callback=metrics_collector._track_failure_rate, name="test", description="test", unit="test", value_type=float, ) metrics_collector._track_failure_rate(obs) self.assertEqual( obs.aggregators[tuple(self._test_labels.items())].current, 0.0)
def test_track_dependency_duration_error(self): metrics_collector = dependency_metrics.DependencyMetrics( meter=self._meter, labels=self._test_labels) dependency_metrics.dependency_map["duration"] = 100 dependency_metrics.dependency_map["count"] = 10 dependency_metrics.dependency_map["last_count"] = 10 obs = Observer( callback=metrics_collector._track_dependency_duration, name="test", description="test", unit="test", value_type=float, ) metrics_collector._track_dependency_duration(obs) self.assertEqual( obs.aggregators[tuple(self._test_labels.items())].current, 0)
def test_track_request_rate_time_none(self, time_mock): time_mock.time.return_value = 100 request_metrics_collector = request_metrics.RequestMetrics( meter=self._meter, labels=self._test_labels, ) request_metrics.requests_map["last_time"] = None obs = Observer( callback=request_metrics_collector._track_request_rate, name="\\ASP.NET Applications(??APP_W3SVC_PROC??)\\Requests/Sec", description="Incoming Requests Average Execution Rate", unit="rps", value_type=float, ) request_metrics_collector._track_request_rate(obs) self.assertEqual( obs.aggregators[tuple(self._test_labels.items())].current, 0.0)
def test_track_memory(self, psutil_mock): performance_metrics_collector = PerformanceMetrics( meter=self._meter, labels=self._test_labels) memory = collections.namedtuple("memory", "available") vmem = memory(available=100) psutil_mock.return_value = vmem obs = Observer( callback=performance_metrics_collector._track_memory, name="\\Memory\\Available Bytes", description="Amount of available memory in bytes", unit="byte", value_type=int, meter=self._meter, ) performance_metrics_collector._track_memory(obs) self.assertEqual( obs.aggregators[tuple(self._test_labels.items())].current, 100)
def test_track_process_memory_exception(self, logger_mock): with mock.patch( "azure_monitor.sdk.auto_collection.performance_metrics.PROCESS", throw(Exception), ): performance_metrics_collector = PerformanceMetrics( meter=self._meter, labels=self._test_labels) obs = Observer( callback=performance_metrics_collector._track_process_memory, name="\\Process(??APP_WIN32_PROC??)\\Private Bytes", description="Amount of memory process has used in bytes", unit="byte", value_type=int, meter=self._meter, ) performance_metrics_collector._track_process_memory(obs) self.assertEqual(logger_mock.exception.called, True)
def test_track_process_cpu_exception(self, logger_mock): with mock.patch( "azure_monitor.sdk.auto_collection.performance_metrics.psutil" ) as psutil_mock: performance_metrics_collector = PerformanceMetrics( meter=self._meter, labels=self._test_labels) psutil_mock.cpu_count.return_value = None obs = Observer( callback=performance_metrics_collector._track_process_cpu, name="\\Process(??APP_WIN32_PROC??)\\% Processor Time", description="Process CPU usage as a percentage", unit="percentage", value_type=float, meter=self._meter, ) performance_metrics_collector._track_process_cpu(obs) self.assertEqual(logger_mock.exception.called, True)
def test_track_cpu(self): performance_metrics_collector = PerformanceMetrics( meter=self._meter, labels=self._test_labels) with mock.patch("psutil.cpu_times_percent") as processor_mock: cpu = collections.namedtuple("cpu", "idle") cpu_times = cpu(idle=94.5) processor_mock.return_value = cpu_times obs = Observer( callback=performance_metrics_collector._track_cpu, name="\\Processor(_Total)\\% Processor Time", description="Processor time as a percentage", unit="percentage", value_type=float, meter=self._meter, ) performance_metrics_collector._track_cpu(obs) self.assertEqual( obs.aggregators[tuple(self._test_labels.items())].current, 5.5)
def test_track_request_duration_error(self): request_metrics_collector = request_metrics.RequestMetrics( meter=self._meter, labels=self._test_labels, ) request_metrics.requests_map["duration"] = 100 request_metrics.requests_map["count"] = 10 request_metrics.requests_map["last_count"] = 10 obs = Observer( callback=request_metrics_collector._track_request_duration, name= "\\ASP.NET Applications(??APP_W3SVC_PROC??)\\Request Execution Time", description="Incoming Requests Average Execution Time", unit="milliseconds", value_type=float, ) request_metrics_collector._track_request_duration(obs) self.assertEqual( obs.aggregators[tuple(self._test_labels.items())].current, 0.0)
def test_track_process_memory(self): with mock.patch( "azure_monitor.sdk.auto_collection.performance_metrics.PROCESS" ) as process_mock: performance_metrics_collector = PerformanceMetrics( meter=self._meter, labels=self._test_labels) memory = collections.namedtuple("memory", "rss") pmem = memory(rss=100) process_mock.memory_info.return_value = pmem obs = Observer( callback=performance_metrics_collector._track_process_memory, name="\\Process(??APP_WIN32_PROC??)\\Private Bytes", description="Amount of memory process has used in bytes", unit="byte", value_type=int, meter=self._meter, ) performance_metrics_collector._track_process_memory(obs) self.assertEqual( obs.aggregators[tuple(self._test_labels.items())].current, 100)
def test_track_process_cpu(self, psutil_mock): with mock.patch( "azure_monitor.sdk.auto_collection.performance_metrics.PROCESS" ) as process_mock: performance_metrics_collector = PerformanceMetrics( meter=self._meter, labels=self._test_labels) process_mock.cpu_percent.return_value = 44.4 psutil_mock.cpu_count.return_value = 2 obs = Observer( callback=performance_metrics_collector._track_process_cpu, name="\\Process(??APP_WIN32_PROC??)\\% Processor Time", description="Process CPU usage as a percentage", unit="percentage", value_type=float, meter=self._meter, ) performance_metrics_collector._track_process_cpu(obs) self.assertEqual( obs.aggregators[tuple(self._test_labels.items())].current, 22.2)
def test_track_dependency_duration(self): metrics_collector = dependency_metrics.DependencyMetrics( meter=self._meter, labels=self._test_labels, span_processor=self._span_processor, ) self._span_processor.dependency_duration = 100 self._span_processor.dependency_count = 10 dependency_metrics.dependency_map["last_count"] = 5 obs = Observer( callback=metrics_collector._track_dependency_duration, name="test", description="test", unit="test", value_type=int, meter=self._meter, ) metrics_collector._track_dependency_duration(obs) self.assertEqual( obs.aggregators[tuple(self._test_labels.items())].current, 20 )
def test_track_request_duration(self): request_metrics_collector = request_metrics.RequestMetrics( meter=self._meter, labels=self._test_labels, span_processor=self._span_processor, collection_type=AutoCollectionType.STANDARD_METRICS, ) self._span_processor.request_duration = 100 self._span_processor.request_count = 10 request_metrics.requests_map["last_count"] = 5 obs = Observer( callback=request_metrics_collector._track_request_duration, name="\\ASP.NET Applications(??APP_W3SVC_PROC??)\\Request Execution Time", description="Incoming Requests Average Execution Time", unit="milliseconds", value_type=int, meter=self._meter, ) request_metrics_collector._track_request_duration(obs) self.assertEqual( obs.aggregators[tuple(self._test_labels.items())].current, 20.0 )
def test_track_request_rate_error(self, time_mock): request_metrics_collector = request_metrics.RequestMetrics( meter=self._meter, labels=self._test_labels, span_processor=self._span_processor, collection_type=AutoCollectionType.STANDARD_METRICS, ) time_mock.time.return_value = 100 request_metrics.requests_map["last_rate"] = 5.0 request_metrics.requests_map["last_time"] = 100 obs = Observer( callback=request_metrics_collector._track_request_rate, name="\\ASP.NET Applications(??APP_W3SVC_PROC??)\\Requests/Sec", description="Incoming Requests Average Execution Rate", unit="rps", value_type=float, meter=self._meter, ) request_metrics_collector._track_request_rate(obs) self.assertEqual( obs.aggregators[tuple(self._test_labels.items())].current, 5.0 )