import datetime
from unittest import TestCase, mock
+import gnocchiclient
+
from osm_mon.collector.vnf_collectors.openstack import GnocchiBackend
from osm_mon.core.config import Config
@mock.patch.object(GnocchiBackend, '_build_neutron_client')
@mock.patch.object(GnocchiBackend, '_build_gnocchi_client')
- def test_collect_gnocchi_instance(self, build_gnocchi_client, build_neutron_client):
+ def test_collect_gnocchi_rate_instance(self, build_gnocchi_client, _):
mock_gnocchi_client = mock.Mock()
mock_gnocchi_client.metric.get_measures.return_value = [(datetime.datetime(2019, 4, 12, 15, 43,
tzinfo=datetime.timezone(
(datetime.datetime(2019, 4, 12, 15, 44,
tzinfo=datetime.timezone(
datetime.timedelta(0),
- '+00:00')), 60.0, 0.0333070363)]
+ '+00:00')), 60.0, 600000000)]
build_gnocchi_client.return_value = mock_gnocchi_client
backend = GnocchiBackend({'_id': 'test_uuid'})
- value = backend._collect_instance_metric('cpu_utilization', 'test_resource_id')
- self.assertEqual(value, 0.0333070363)
- mock_gnocchi_client.metric.get_measures.assert_called_once_with('cpu_utilization',
- limit=1,
+ value = backend._collect_instance_metric('cpu', 'test_resource_id')
+ self.assertEqual(value, 1.0)
+ mock_gnocchi_client.metric.get_measures.assert_called_once_with('cpu',
+ aggregation="rate:mean",
+ start=mock.ANY,
+ resource_id='test_resource_id')
+
+ @mock.patch.object(GnocchiBackend, '_build_neutron_client')
+ @mock.patch.object(GnocchiBackend, '_build_gnocchi_client')
+ def test_collect_gnocchi_non_rate_instance(self, build_gnocchi_client, _):
+ mock_gnocchi_client = mock.Mock()
+ mock_gnocchi_client.metric.get_measures.return_value = [(datetime.datetime(2019, 4, 12, 15, 43,
+ tzinfo=datetime.timezone(
+ datetime.timedelta(0),
+ '+00:00')), 60.0, 0.0345442539),
+ (datetime.datetime(2019, 4, 12, 15, 44,
+ tzinfo=datetime.timezone(
+ datetime.timedelta(0),
+ '+00:00')), 60.0, 128)]
+ build_gnocchi_client.return_value = mock_gnocchi_client
+
+ backend = GnocchiBackend({'_id': 'test_uuid'})
+ value = backend._collect_instance_metric('memory.usage', 'test_resource_id')
+ self.assertEqual(value, 128)
+ mock_gnocchi_client.metric.get_measures.assert_called_once_with('memory.usage',
+ aggregation=None,
+ start=mock.ANY,
+ resource_id='test_resource_id')
+
+ @mock.patch.object(GnocchiBackend, '_build_neutron_client')
+ @mock.patch.object(GnocchiBackend, '_build_gnocchi_client')
+ def test_collect_gnocchi_no_metric(self, build_gnocchi_client, _):
+ mock_gnocchi_client = mock.Mock()
+ mock_gnocchi_client.metric.get_measures.side_effect = gnocchiclient.exceptions.NotFound()
+ build_gnocchi_client.return_value = mock_gnocchi_client
+
+ backend = GnocchiBackend({'_id': 'test_uuid'})
+ value = backend._collect_instance_metric('memory.usage', 'test_resource_id')
+ self.assertIsNone(value)
+ mock_gnocchi_client.metric.get_measures.assert_called_once_with('memory.usage',
+ aggregation=None,
+ start=mock.ANY,
resource_id='test_resource_id')
@mock.patch.object(GnocchiBackend, '_build_neutron_client')