Tests for utils.metering

Change-Id: I57edbf953dbd93d1e3558bf24cfaf14a474520c4
This commit is contained in:
Radomir Dopieralski 2015-01-27 14:48:37 +01:00
parent 852614c89e
commit f4e87a133e
2 changed files with 134 additions and 1 deletions

View File

@ -158,6 +158,6 @@ class RolesTest(test.BaseAdminViewTests):
self.assertEqual(len(mock_patch.call_args_list), 1) self.assertEqual(len(mock_patch.call_args_list), 1)
args = mock_patch.call_args_list[0][0] args = mock_patch.call_args_list[0][0]
self.assertEqual(args[1], plan.id) self.assertEqual(args[1], plan.id)
self.assertEqual(args[2], {'Controller-1::Flavor': u'flavor-1', self.assertEqual(args[2], {'Controller-1::Flavor': u'flavor-1',
'Controller-1::Image': u'2'}) 'Controller-1::Image': u'2'})

View File

@ -13,8 +13,12 @@
# under the License. # under the License.
import collections import collections
import datetime
import mock
from tuskar_ui.test import helpers from tuskar_ui.test import helpers
from tuskar_ui.utils import metering
from tuskar_ui.utils import utils from tuskar_ui.utils import utils
@ -72,3 +76,132 @@ class UtilsTests(helpers.TestCase):
self.assertEqual(ret, 0) self.assertEqual(ret, 0)
ret = utils.safe_int_cast(object()) ret = utils.safe_int_cast(object())
self.assertEqual(ret, 0) self.assertEqual(ret, 0)
class MeteringTests(helpers.TestCase):
def test_query_data(self):
Meter = collections.namedtuple('Meter', 'name unit')
request = 'request'
from_date = datetime.datetime(2015, 1, 1, 13, 45)
to_date = datetime.datetime(2015, 1, 2, 13, 45)
with mock.patch(
'openstack_dashboard.api.ceilometer.meter_list',
return_value=[Meter('foo.bar', u'µD')],
), mock.patch(
'openstack_dashboard.api.ceilometer.CeilometerUsage',
return_value=mock.MagicMock(**{
'resource_aggregates_with_statistics.return_value': 'plonk',
}),
):
ret = metering.query_data(request, from_date, to_date,
'all', 'foo.bar')
self.assertEqual(ret, ('plonk', u'µD'))
def test_url_part(self):
ret = metering.url_part('foo_bar_baz', True)
self.assertTrue('meter=foo_bar_baz' in ret)
self.assertTrue('barchart=True' in ret)
ret = metering.url_part('foo_bar_baz', False)
self.assertTrue('meter=foo_bar_baz' in ret)
self.assertFalse('barchart=True' in ret)
def test_get_meter_name(self):
ret = metering.get_meter_name('foo.bar.baz')
self.assertEqual(ret, 'foo_bar_baz')
def test_get_meters(self):
ret = metering.get_meters(['foo.bar', 'foo.baz'])
self.assertEqual(ret, [('foo.bar', 'foo_bar'), ('foo.baz', 'foo_baz')])
def test_get_barchart_stats(self):
series = [
{'data': [{'x': 1, 'y': 1}, {'x': 4, 'y': 4}]},
{'data': [{'x': 2, 'y': 2}, {'x': 5, 'y': 5}]},
{'data': [{'x': 3, 'y': 3}, {'x': 6, 'y': 6}]},
]
# Arrogance is measured in IT in micro-Dijkstras, µD.
average, used, tooltip_average = metering.get_barchart_stats(series,
u'µD')
self.assertEqual(average, 2)
self.assertEqual(used, 4)
self.assertEqual(tooltip_average, u'Average 2 µD<br> From: 1, to: 4')
def test_create_json_output(self):
ret = metering.create_json_output([], False, u'µD', None, None)
self.assertEqual(ret, {
'series': [],
'settings': {
'higlight_last_point': True,
'axes_x': False,
'axes_y': True,
'xMin': '',
'renderer': 'StaticAxes',
'xMax': '',
'axes_y_label': False,
'auto_size': False,
'auto_resize': False,
},
})
series = [
{'data': [{'x': 1, 'y': 1}, {'x': 4, 'y': 4}]},
{'data': [{'x': 2, 'y': 2}, {'x': 5, 'y': 5}]},
{'data': [{'x': 3, 'y': 3}, {'x': 6, 'y': 6}]},
]
ret = metering.create_json_output(series, True, u'µD', None, None)
self.assertEqual(ret, {
'series': series,
'stats': {
'average': 2,
'used': 4,
'tooltip_average': u'Average 2 µD<br> From: 1, to: 4',
},
'settings': {
'yMin': 0,
'yMax': 100,
'higlight_last_point': True,
'axes_x': False,
'axes_y': True,
'bar_chart_settings': {
'color_scale_domain': [0, 80, 80, 100],
'orientation': 'vertical',
'color_scale_range': [
'#0000FF',
'#0000FF',
'#FF0000',
'#FF0000',
],
'width': 30,
'average_color_scale_domain': [0, 100],
'used_label_placement': 'left',
'average_color_scale_range': ['#0000FF', '#0000FF'],
},
'xMin': '',
'renderer': 'StaticAxes',
'xMax': '',
'axes_y_label': False,
'auto_size': False,
'auto_resize': False,
},
})
def test_get_nodes_stats(self):
request = 'request'
with mock.patch(
'tuskar_ui.utils.metering.create_json_output',
return_value='',
) as create_json_output, mock.patch(
'tuskar_ui.utils.metering.query_data',
return_value=([], u'µD'),
), mock.patch(
'openstack_dashboard.utils.metering.series_for_meter',
return_value=[],
), mock.patch(
'openstack_dashboard.utils.metering.calc_date_args',
return_value=('from date', 'to date'),
):
ret = metering.get_nodes_stats(request, 'abc', 'foo.bar')
self.assertEqual(ret, '')
self.assertEqual(create_json_output.call_args_list, [
mock.call([], None, u'µD', 'from date', 'to date')
])