From 36798da35952cf04ea67cc0cdb9b3ed5d382288e Mon Sep 17 00:00:00 2001 From: Radomir Dopieralski Date: Wed, 21 Jan 2015 12:04:13 +0100 Subject: [PATCH] Added tests form tuskar_ui.infrastructure.flavors.utils Also moved _safe_int_cast and fixed the de_camel_case function Change-Id: I675f1e0911d21a6603164e77ce02c9d8d130ae40 --- tuskar_ui/infrastructure/flavors/tests.py | 36 +++++++++++++++++++++++ tuskar_ui/infrastructure/flavors/utils.py | 14 +++------ tuskar_ui/utils/tests.py | 12 ++++++++ tuskar_ui/utils/utils.py | 7 +++++ 4 files changed, 59 insertions(+), 10 deletions(-) diff --git a/tuskar_ui/infrastructure/flavors/tests.py b/tuskar_ui/infrastructure/flavors/tests.py index 4ab1aa8e2..2c1d04ffe 100644 --- a/tuskar_ui/infrastructure/flavors/tests.py +++ b/tuskar_ui/infrastructure/flavors/tests.py @@ -21,6 +21,7 @@ from novaclient.v1_1 import servers from openstack_dashboard.test.test_data import utils from tuskar_ui import api +from tuskar_ui.infrastructure.flavors import utils as flavors_utils from tuskar_ui.test import helpers as test from tuskar_ui.test.test_data import flavor_data from tuskar_ui.test.test_data import heat_data @@ -223,3 +224,38 @@ class FlavorsTest(test.BaseAdminViewTests): self.assertEqual(get_mock.call_count, 1) self.assertEqual(plan_mock.call_count, 1) self.assertTemplateUsed(res, 'infrastructure/flavors/details.html') + + +class FlavorsUtilsTest(test.TestCase): + def test_get_unmached_suggestions(self): + flavors = [api.flavor.Flavor(flavor) + for flavor in TEST_DATA.novaclient_flavors.list()] + nodes = [api.node.Node(api.node.IronicNode(node)) + for node in self.ironicclient_nodes.list()] + with ( + patch('tuskar_ui.api.flavor.Flavor.list', return_value=flavors) + ), ( + patch('tuskar_ui.api.node.Node.list', return_value=nodes) + ): + ret = flavors_utils.get_flavor_suggestions(None) + FS = flavors_utils.FlavorSuggestion + self.assertEqual(ret, set([ + FS(vcpus=8, ram_bytes=4294967296, disk_bytes=10737418240, + cpu_arch='x86_64', node_id='aa-11'), + FS(vcpus=16, ram_bytes=4294967296, disk_bytes=107374182400, + cpu_arch='x86_64', node_id='bb-22'), + FS(vcpus=32, ram_bytes=8589934592, disk_bytes=1073741824, + cpu_arch='x86_64', node_id='cc-33'), + FS(vcpus=8, ram_bytes=4294967296, disk_bytes=10737418240, + cpu_arch='x86_64', node_id='cc-44'), + FS(vcpus=8, ram_bytes=4294967296, disk_bytes=10737418240, + cpu_arch='x86_64', node_id='dd-55'), + FS(vcpus=8, ram_bytes=4294967296, disk_bytes=10737418240, + cpu_arch='x86_64', node_id='ff-66'), + FS(vcpus=8, ram_bytes=4294967296, disk_bytes=10737418240, + cpu_arch='x86_64', node_id='gg-77'), + FS(vcpus=8, ram_bytes=4294967296, disk_bytes=10737418240, + cpu_arch='x86_64', node_id='hh-88'), + FS(vcpus=16, ram_bytes=8589934592, disk_bytes=1073741824000, + cpu_arch='x86_64', node_id='ii-99'), + ])) diff --git a/tuskar_ui/infrastructure/flavors/utils.py b/tuskar_ui/infrastructure/flavors/utils.py index bc6bc5b61..b09bf82d6 100644 --- a/tuskar_ui/infrastructure/flavors/utils.py +++ b/tuskar_ui/infrastructure/flavors/utils.py @@ -15,6 +15,7 @@ from django.conf import settings from tuskar_ui import api +from tuskar_ui.utils import utils def matching_deployment_mode(): @@ -22,13 +23,6 @@ def matching_deployment_mode(): return deployment_mode.lower() == 'scale' -def _safe_int_cast(value): - try: - return int(value) - except (TypeError, ValueError): - return 0 - - def _get_unmatched_suggestions(request): unmatched_suggestions = [] flavor_suggestions = [FlavorSuggestion.from_flavor(flavor) @@ -62,9 +56,9 @@ class FlavorSuggestion(object): def from_node(cls, node): return cls( node_id=node.uuid, - vcpus=_safe_int_cast(node.cpus), - ram=_safe_int_cast(node.memory_mb), - disk=_safe_int_cast(node.local_gb), + vcpus=utils.safe_int_cast(node.cpus), + ram=utils.safe_int_cast(node.memory_mb), + disk=utils.safe_int_cast(node.local_gb), cpu_arch=node.cpu_arch ) diff --git a/tuskar_ui/utils/tests.py b/tuskar_ui/utils/tests.py index c2dcc3543..f03718bb8 100644 --- a/tuskar_ui/utils/tests.py +++ b/tuskar_ui/utils/tests.py @@ -60,3 +60,15 @@ class UtilsTests(helpers.TestCase): self.assertEqual(ret, [Item(1), Item(2), Item(3)]) ret = list(utils.filter_items(items, index__not_in=(1, 2, 3))) self.assertEqual(ret, [Item(0), Item(4), Item(5), Item(6)]) + + def test_safe_int_cast(self): + ret = utils.safe_int_cast(1) + self.assertEqual(ret, 1) + ret = utils.safe_int_cast('1') + self.assertEqual(ret, 1) + ret = utils.safe_int_cast('') + self.assertEqual(ret, 0) + ret = utils.safe_int_cast(None) + self.assertEqual(ret, 0) + ret = utils.safe_int_cast(object()) + self.assertEqual(ret, 0) diff --git a/tuskar_ui/utils/utils.py b/tuskar_ui/utils/utils.py index 0ecaf8c1d..a75eb24c9 100644 --- a/tuskar_ui/utils/utils.py +++ b/tuskar_ui/utils/utils.py @@ -85,3 +85,10 @@ def filter_items(items, **kwargs): break else: yield item + + +def safe_int_cast(value): + try: + return int(value) + except (TypeError, ValueError): + return 0