diff options
Diffstat (limited to 'openstackclient/tests/compute')
| -rw-r--r-- | openstackclient/tests/compute/v2/fakes.py | 97 | ||||
| -rw-r--r-- | openstackclient/tests/compute/v2/test_flavor.py | 193 | ||||
| -rw-r--r-- | openstackclient/tests/compute/v2/test_server.py | 31 |
3 files changed, 149 insertions, 172 deletions
diff --git a/openstackclient/tests/compute/v2/fakes.py b/openstackclient/tests/compute/v2/fakes.py index 32161ddc..0d6cd430 100644 --- a/openstackclient/tests/compute/v2/fakes.py +++ b/openstackclient/tests/compute/v2/fakes.py @@ -46,18 +46,6 @@ EXTENSION = { 'links': extension_links, } -flavor_id = 'm1.large' -flavor_name = 'Large' -flavor_ram = 8192 -flavor_vcpus = 4 - -FLAVOR = { - 'id': flavor_id, - 'name': flavor_name, - 'ram': flavor_ram, - 'vcpus': flavor_vcpus, -} - floating_ip_num = 100 fix_ip_num = 100 injected_file_num = 100 @@ -209,3 +197,88 @@ class FakeServer(object): if servers is None: servers = FakeServer.create_servers(count) return mock.MagicMock(side_effect=servers) + + +class FakeFlavorResource(fakes.FakeResource): + """Fake flavor object's methods to help test. + + The flavor object has three methods to get, set, unset its properties. + Need to fake them, otherwise the functions to be tested won't run properly. + """ + + # Fake properties. + _keys = {'property': 'value'} + + def set_keys(self, args): + self._keys.update(args) + + def unset_keys(self, keys): + for key in keys: + self._keys.pop(key, None) + + def get_keys(self): + return self._keys + + +class FakeFlavor(object): + """Fake one or more flavors.""" + + @staticmethod + def create_one_flavor(attrs={}): + """Create a fake flavor. + + :param Dictionary attrs: + A dictionary with all attributes + :return: + A FakeFlavorResource object, with id, name, ram, vcpus, properties + """ + # Set default attributes. + flavor_info = { + 'id': 'flavor-id-' + uuid.uuid4().hex, + 'name': 'flavor-name-' + uuid.uuid4().hex, + 'ram': 8192, + 'vcpus': 4, + } + + # Overwrite default attributes. + flavor_info.update(attrs) + + flavor = FakeFlavorResource(info=copy.deepcopy(flavor_info), + loaded=True) + return flavor + + @staticmethod + def create_flavors(attrs={}, count=2): + """Create multiple fake flavors. + + :param Dictionary attrs: + A dictionary with all attributes + :param int count: + The number of flavors to fake + :return: + A list of FakeFlavorResource objects faking the flavors + """ + flavors = [] + for i in range(0, count): + flavors.append(FakeFlavor.create_one_flavor(attrs)) + + return flavors + + @staticmethod + def get_flavors(flavors=None, count=2): + """Get an iterable MagicMock object with a list of faked flavors. + + If flavors list is provided, then initialize the Mock object with the + list. Otherwise create one. + + :param List flavors: + A list of FakeFlavorResource objects faking flavors + :param int count: + The number of flavors to fake + :return: + An iterable Mock object with side_effect set to a list of faked + flavors + """ + if flavors is None: + flavors = FakeServer.create_flavors(count) + return mock.MagicMock(side_effect=flavors) diff --git a/openstackclient/tests/compute/v2/test_flavor.py b/openstackclient/tests/compute/v2/test_flavor.py index 523104f0..095b5f28 100644 --- a/openstackclient/tests/compute/v2/test_flavor.py +++ b/openstackclient/tests/compute/v2/test_flavor.py @@ -13,26 +13,8 @@ # under the License. # -import copy - from openstackclient.compute.v2 import flavor from openstackclient.tests.compute.v2 import fakes as compute_fakes -from openstackclient.tests import fakes - - -class FakeFlavorResource(fakes.FakeResource): - - _keys = {'property': 'value'} - - def set_keys(self, args): - self._keys.update(args) - - def unset_keys(self, keys): - for key in keys: - self._keys.pop(key, None) - - def get_keys(self): - return self._keys class TestFlavor(compute_fakes.TestComputev2): @@ -47,16 +29,43 @@ class TestFlavor(compute_fakes.TestComputev2): class TestFlavorList(TestFlavor): + # Return value of self.flavors_mock.list(). + flavors = compute_fakes.FakeFlavor.create_flavors(count=1) + + columns = ( + 'ID', + 'Name', + 'RAM', + 'Disk', + 'Ephemeral', + 'VCPUs', + 'Is Public', + ) + columns_long = columns + ( + 'Swap', + 'RXTX Factor', + 'Properties' + ) + + data = (( + flavors[0].id, + flavors[0].name, + flavors[0].ram, + '', + '', + flavors[0].vcpus, + '' + ), ) + data_long = (data[0] + ( + '', + '', + 'property=\'value\'' + ), ) + def setUp(self): super(TestFlavorList, self).setUp() - self.flavors_mock.list.return_value = [ - FakeFlavorResource( - None, - copy.deepcopy(compute_fakes.FLAVOR), - loaded=True, - ), - ] + self.flavors_mock.list.return_value = self.flavors # Get the command object to test self.cmd = flavor.ListFlavor(self.app, None) @@ -85,26 +94,8 @@ class TestFlavorList(TestFlavor): **kwargs ) - collist = ( - 'ID', - 'Name', - 'RAM', - 'Disk', - 'Ephemeral', - 'VCPUs', - 'Is Public', - ) - self.assertEqual(collist, columns) - datalist = (( - compute_fakes.flavor_id, - compute_fakes.flavor_name, - compute_fakes.flavor_ram, - '', - '', - compute_fakes.flavor_vcpus, - '' - ), ) - self.assertEqual(datalist, tuple(data)) + self.assertEqual(self.columns, columns) + self.assertEqual(tuple(self.data), tuple(data)) def test_flavor_list_all_flavors(self): arglist = [ @@ -130,26 +121,8 @@ class TestFlavorList(TestFlavor): **kwargs ) - collist = ( - 'ID', - 'Name', - 'RAM', - 'Disk', - 'Ephemeral', - 'VCPUs', - 'Is Public', - ) - self.assertEqual(collist, columns) - datalist = (( - compute_fakes.flavor_id, - compute_fakes.flavor_name, - compute_fakes.flavor_ram, - '', - '', - compute_fakes.flavor_vcpus, - '' - ), ) - self.assertEqual(datalist, tuple(data)) + self.assertEqual(self.columns, columns) + self.assertEqual(tuple(self.data), tuple(data)) def test_flavor_list_private_flavors(self): arglist = [ @@ -175,26 +148,8 @@ class TestFlavorList(TestFlavor): **kwargs ) - collist = ( - 'ID', - 'Name', - 'RAM', - 'Disk', - 'Ephemeral', - 'VCPUs', - 'Is Public', - ) - self.assertEqual(collist, columns) - datalist = (( - compute_fakes.flavor_id, - compute_fakes.flavor_name, - compute_fakes.flavor_ram, - '', - '', - compute_fakes.flavor_vcpus, - '' - ), ) - self.assertEqual(datalist, tuple(data)) + self.assertEqual(self.columns, columns) + self.assertEqual(tuple(self.data), tuple(data)) def test_flavor_list_public_flavors(self): arglist = [ @@ -220,26 +175,8 @@ class TestFlavorList(TestFlavor): **kwargs ) - collist = ( - 'ID', - 'Name', - 'RAM', - 'Disk', - 'Ephemeral', - 'VCPUs', - 'Is Public', - ) - self.assertEqual(collist, columns) - datalist = (( - compute_fakes.flavor_id, - compute_fakes.flavor_name, - compute_fakes.flavor_ram, - '', - '', - compute_fakes.flavor_vcpus, - '' - ), ) - self.assertEqual(datalist, tuple(data)) + self.assertEqual(self.columns, columns) + self.assertEqual(tuple(self.data), tuple(data)) def test_flavor_list_long(self): arglist = [ @@ -265,44 +202,19 @@ class TestFlavorList(TestFlavor): **kwargs ) - collist = ( - 'ID', - 'Name', - 'RAM', - 'Disk', - 'Ephemeral', - 'VCPUs', - 'Is Public', - 'Swap', - 'RXTX Factor', - 'Properties' - ) - self.assertEqual(collist, columns) - datalist = (( - compute_fakes.flavor_id, - compute_fakes.flavor_name, - compute_fakes.flavor_ram, - '', - '', - compute_fakes.flavor_vcpus, - '', - '', - '', - 'property=\'value\'' - ), ) - self.assertEqual(datalist, tuple(data)) + self.assertEqual(self.columns_long, columns) + self.assertEqual(tuple(self.data_long), tuple(data)) class TestFlavorSet(TestFlavor): + # Return value of self.flavors_mock.find(). + flavor = compute_fakes.FakeFlavor.create_one_flavor() + def setUp(self): super(TestFlavorSet, self).setUp() - self.flavors_mock.find.return_value = FakeFlavorResource( - None, - copy.deepcopy(compute_fakes.FLAVOR), - loaded=True, - ) + self.flavors_mock.find.return_value = self.flavor self.cmd = flavor.SetFlavor(self.app, None) @@ -328,14 +240,13 @@ class TestFlavorSet(TestFlavor): class TestFlavorUnset(TestFlavor): + # Return value of self.flavors_mock.find(). + flavor = compute_fakes.FakeFlavor.create_one_flavor() + def setUp(self): super(TestFlavorUnset, self).setUp() - self.flavors_mock.find.return_value = FakeFlavorResource( - None, - copy.deepcopy(compute_fakes.FLAVOR), - loaded=True, - ) + self.flavors_mock.find.return_value = self.flavor self.cmd = flavor.UnsetFlavor(self.app, None) diff --git a/openstackclient/tests/compute/v2/test_server.py b/openstackclient/tests/compute/v2/test_server.py index c22e59a7..a750ed5d 100644 --- a/openstackclient/tests/compute/v2/test_server.py +++ b/openstackclient/tests/compute/v2/test_server.py @@ -110,11 +110,7 @@ class TestServerCreate(TestServer): ) self.cimages_mock.get.return_value = self.image - self.flavor = fakes.FakeResource( - None, - copy.deepcopy(compute_fakes.FLAVOR), - loaded=True, - ) + self.flavor = compute_fakes.FakeFlavor.create_one_flavor() self.flavors_mock.get.return_value = self.flavor self.volume = fakes.FakeResource( @@ -192,7 +188,7 @@ class TestServerCreate(TestServer): self.assertEqual(collist, columns) datalist = ( '', - 'Large ()', + self.flavor.name + ' ()', self.new_server.id, self.new_server.name, self.new_server.networks, @@ -276,7 +272,7 @@ class TestServerCreate(TestServer): self.assertEqual(collist, columns) datalist = ( '', - 'Large ()', + self.flavor.name + ' ()', self.new_server.id, self.new_server.name, self.new_server.networks, @@ -349,7 +345,7 @@ class TestServerCreate(TestServer): self.assertEqual(collist, columns) datalist = ( '', - 'Large ()', + self.flavor.name + ' ()', self.new_server.id, self.new_server.name, self.new_server.networks, @@ -360,13 +356,13 @@ class TestServerCreate(TestServer): def test_server_create_with_block_device_mapping(self): arglist = [ '--image', 'image1', - '--flavor', compute_fakes.flavor_id, + '--flavor', self.flavor.id, '--block-device-mapping', compute_fakes.block_device_mapping, self.new_server.name, ] verifylist = [ ('image', 'image1'), - ('flavor', compute_fakes.flavor_id), + ('flavor', self.flavor.id), ('block_device_mapping', [compute_fakes.block_device_mapping]), ('config_drive', False), ('server_name', self.new_server.name), @@ -418,7 +414,7 @@ class TestServerCreate(TestServer): self.assertEqual(collist, columns) datalist = ( '', - 'Large ()', + self.flavor.name + ' ()', self.new_server.id, self.new_server.name, self.new_server.networks, @@ -666,11 +662,8 @@ class TestServerResize(TestServer): self.servers_mock.revert_resize.return_value = None # This is the return value for utils.find_resource() - self.flavors_get_return_value = fakes.FakeResource( - None, - copy.deepcopy(compute_fakes.FLAVOR), - loaded=True, - ) + self.flavors_get_return_value = \ + compute_fakes.FakeFlavor.create_one_flavor() self.flavors_mock.get.return_value = self.flavors_get_return_value # Get the command object to test @@ -700,11 +693,11 @@ class TestServerResize(TestServer): def test_server_resize(self): arglist = [ - '--flavor', compute_fakes.flavor_id, + '--flavor', self.flavors_get_return_value.id, self.server.id, ] verifylist = [ - ('flavor', compute_fakes.flavor_id), + ('flavor', self.flavors_get_return_value.id), ('confirm', False), ('revert', False), ('server', self.server.id), @@ -718,7 +711,7 @@ class TestServerResize(TestServer): self.server.id, ) self.flavors_mock.get.assert_called_with( - compute_fakes.flavor_id, + self.flavors_get_return_value.id, ) self.servers_mock.resize.assert_called_with( |
