Replace removed exceptions and prevent regression

Replaces the NoSuchMetric exception that was replaced. The exception
is replaced with MetricNotAvailable and test cases are added to prevent
regression.

The changes in the exceptions were introduced in:
https://review.opendev.org/#/c/658127/

Change-Id: Id0f872e916aaa5dec59ed1ae6c0f653553b3fe46
This commit is contained in:
Dantali0n
2019-06-12 10:25:43 +02:00
parent 46a36d1ad7
commit 15754a14dd
6 changed files with 73 additions and 3 deletions

View File

@@ -169,7 +169,7 @@ class CeilometerHelper(base.DataSourceBase):
meter = self.METRIC_MAP.get(meter_name)
if meter is None:
raise exception.NoSuchMetric()
raise exception.MetricNotAvailable(metric=meter_name)
if aggregate == 'mean':
aggregate = 'avg'

View File

@@ -86,7 +86,7 @@ class GnocchiHelper(base.DataSourceBase):
meter = self.METRIC_MAP.get(meter_name)
if meter is None:
raise exception.NoSuchMetric()
raise exception.MetricNotAvailable(metric=meter_name)
if aggregate == 'count':
aggregate = 'mean'

View File

@@ -97,7 +97,7 @@ class MonascaHelper(base.DataSourceBase):
meter = self.METRIC_MAP.get(meter_name)
if meter is None:
raise exception.NoSuchMetric()
raise exception.MetricNotAvailable(metric=meter_name)
if aggregate == 'mean':
aggregate = 'avg'

View File

@@ -20,6 +20,7 @@ from __future__ import unicode_literals
import mock
from watcher.common import clients
from watcher.common import exception
from watcher.datasources import ceilometer as ceilometer_helper
from watcher.tests import base
@@ -70,6 +71,29 @@ class TestCeilometerHelper(base.BaseTestCase):
)
self.assertEqual(expected_result, val)
def test_statistic_aggregation_metric_unavailable(self, mock_ceilometer):
helper = ceilometer_helper.CeilometerHelper()
# invalidate instance_cpu_usage in metric map
original_metric_value = helper.METRIC_MAP.get('instance_cpu_usage')
helper.METRIC_MAP.update(
instance_cpu_usage=None
)
self.assertRaises(
exception.MetricNotAvailable,
helper.statistic_aggregation, resource=mock.Mock(id="INSTANCE_ID"),
resource_type='instance', meter_name="instance_cpu_usage",
period="7300",
granularity=None
)
# restore the metric map as it is a static attribute that does not get
# restored between unit tests!
helper.METRIC_MAP.update(
instance_cpu_usage=original_metric_value
)
def test_get_host_cpu_usage(self, mock_ceilometer):
self.helper.get_host_cpu_usage('compute1', 600, 'mean')
self.mock_aggregation.assert_called_once_with(

View File

@@ -18,6 +18,7 @@ import mock
from oslo_config import cfg
from watcher.common import clients
from watcher.common import exception
from watcher.datasources import gnocchi as gnocchi_helper
from watcher.tests import base
@@ -57,6 +58,28 @@ class TestGnocchiHelper(base.BaseTestCase):
)
self.assertEqual(expected_result, result)
def test_statistic_aggregation_metric_unavailable(self, mock_gnocchi):
helper = gnocchi_helper.GnocchiHelper()
# invalidate instance_cpu_usage in metric map
original_metric_value = helper.METRIC_MAP.get('instance_cpu_usage')
helper.METRIC_MAP.update(
instance_cpu_usage=None
)
self.assertRaises(
exception.MetricNotAvailable, helper.statistic_aggregation,
resource=mock.Mock(id='16a86790-327a-45f9-bc82-45839f062fdc'),
resource_type='instance', meter_name='instance_cpu_usage',
period=300, granularity=360, aggregate='mean',
)
# restore the metric map as it is a static attribute that does not get
# restored between unit tests!
helper.METRIC_MAP.update(
instance_cpu_usage=original_metric_value
)
def test_get_host_cpu_usage(self, mock_gnocchi):
self.helper.get_host_cpu_usage('compute1', 600, 'mean', 300)
self.mock_aggregation.assert_called_once_with(

View File

@@ -18,6 +18,7 @@ import mock
from oslo_config import cfg
from watcher.common import clients
from watcher.common import exception
from watcher.datasources import monasca as monasca_helper
from watcher.tests import base
@@ -65,6 +66,28 @@ class TestMonascaHelper(base.BaseTestCase):
)
self.assertEqual(0.6, result)
def test_statistic_aggregation_metric_unavailable(self, mock_monasca):
helper = monasca_helper.MonascaHelper()
# invalidate host_cpu_usage in metric map
original_metric_value = helper.METRIC_MAP.get('host_cpu_usage')
helper.METRIC_MAP.update(
host_cpu_usage=None
)
self.assertRaises(
exception.MetricNotAvailable, helper.statistic_aggregation,
resource=mock.Mock(id='NODE_UUID'), resource_type='compute_node',
meter_name='host_cpu_usage', period=7200, granularity=300,
aggregate='mean',
)
# restore the metric map as it is a static attribute that does not get
# restored between unit tests!
helper.METRIC_MAP.update(
instance_cpu_usage=original_metric_value
)
def test_check_availability(self, mock_monasca):
monasca = mock.MagicMock()
monasca.metrics.list.return_value = True