summaryrefslogtreecommitdiff
path: root/openstackclient/tests/compute
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/tests/compute')
-rw-r--r--openstackclient/tests/compute/v2/fakes.py97
-rw-r--r--openstackclient/tests/compute/v2/test_flavor.py193
-rw-r--r--openstackclient/tests/compute/v2/test_server.py31
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(