summaryrefslogtreecommitdiff
path: root/openstackclient/tests/unit
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-10-12 22:41:43 +0000
committerGerrit Code Review <review@openstack.org>2018-10-12 22:41:43 +0000
commitac9877de467fad483feb2652a1a02b20b9ebc395 (patch)
treebe0f0d41432ceaf89324ac61c70d1af2a8020c96 /openstackclient/tests/unit
parent5ad925b600e68965f615c1c1cf61eac454717050 (diff)
parent9647d43bd5e77c815ac2f08b7de2226a657a66bc (diff)
downloadpython-openstackclient-ac9877de467fad483feb2652a1a02b20b9ebc395.tar.gz
Merge "Add volume backend pool list command"
Diffstat (limited to 'openstackclient/tests/unit')
-rw-r--r--openstackclient/tests/unit/volume/v2/fakes.py37
-rw-r--r--openstackclient/tests/unit/volume/v2/test_volume_backend.py95
2 files changed, 132 insertions, 0 deletions
diff --git a/openstackclient/tests/unit/volume/v2/fakes.py b/openstackclient/tests/unit/volume/v2/fakes.py
index ad13f1b9..8d1db63e 100644
--- a/openstackclient/tests/unit/volume/v2/fakes.py
+++ b/openstackclient/tests/unit/volume/v2/fakes.py
@@ -252,6 +252,41 @@ class FakeCapability(object):
return capability
+class FakePool(object):
+ """Fake Pools."""
+
+ @staticmethod
+ def create_one_pool(attrs=None):
+ """Create a fake pool.
+
+ :param Dictionary attrs:
+ A dictionary with all attributes of the pool
+ :return:
+ A FakeResource object with pool name and attrs.
+ """
+ # Set default attribute
+ pool_info = {
+ 'name': 'host@lvmdriver-1#lvmdriver-1',
+ 'storage_protocol': 'iSCSI',
+ 'thick_provisioning_support': False,
+ 'thin_provisioning_support': True,
+ 'total_volumes': 99,
+ 'total_capacity_gb': 1000.00,
+ 'allocated_capacity_gb': 100,
+ 'max_over_subscription_ratio': 200.0,
+ }
+
+ # Overwrite default attributes if there are some attributes set
+ pool_info.update(attrs or {})
+
+ pool = fakes.FakeResource(
+ None,
+ pool_info,
+ loaded=True)
+
+ return pool
+
+
class FakeVolumeClient(object):
def __init__(self, **kwargs):
@@ -294,6 +329,8 @@ class FakeVolumeClient(object):
self.management_url = kwargs['endpoint']
self.capabilities = mock.Mock()
self.capabilities.resource_class = fakes.FakeResource(None, {})
+ self.pools = mock.Mock()
+ self.pools.resource_class = fakes.FakeResource(None, {})
class TestVolume(utils.TestCommand):
diff --git a/openstackclient/tests/unit/volume/v2/test_volume_backend.py b/openstackclient/tests/unit/volume/v2/test_volume_backend.py
index 73df6032..db188660 100644
--- a/openstackclient/tests/unit/volume/v2/test_volume_backend.py
+++ b/openstackclient/tests/unit/volume/v2/test_volume_backend.py
@@ -71,3 +71,98 @@ class TestShowVolumeCapability(volume_fakes.TestVolume):
self.capability_mock.get.assert_called_with(
'fake',
)
+
+
+class TestListVolumePool(volume_fakes.TestVolume):
+ """Tests for volume backend pool listing."""
+
+ # The pool to be listed
+ pools = volume_fakes.FakePool.create_one_pool()
+
+ def setUp(self):
+ super(TestListVolumePool, self).setUp()
+
+ self.pool_mock = self.app.client_manager.volume.pools
+ self.pool_mock.list.return_value = [self.pools]
+
+ # Get the command object to test
+ self.cmd = volume_backend.ListPool(self.app, None)
+
+ def test_pool_list(self):
+ arglist = []
+ verifylist = []
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # In base command class Lister in cliff, abstract method take_action()
+ # returns a tuple containing the column names and an iterable
+ # containing the data to be listed.
+ columns, data = self.cmd.take_action(parsed_args)
+
+ expected_columns = [
+ 'Name',
+ ]
+
+ # confirming if all expected columns are present in the result.
+ self.assertEqual(expected_columns, columns)
+
+ datalist = ((
+ self.pools.name,
+ ), )
+
+ # confirming if all expected values are present in the result.
+ self.assertEqual(datalist, tuple(data))
+
+ # checking if proper call was made to list pools
+ self.pool_mock.list.assert_called_with(
+ detailed=False,
+ )
+
+ # checking if long columns are present in output
+ self.assertNotIn("total_volumes", columns)
+ self.assertNotIn("storage_protocol", columns)
+
+ def test_service_list_with_long_option(self):
+ arglist = [
+ '--long'
+ ]
+ verifylist = [
+ ('long', True)
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # In base command class Lister in cliff, abstract method take_action()
+ # returns a tuple containing the column names and an iterable
+ # containing the data to be listed.
+ columns, data = self.cmd.take_action(parsed_args)
+
+ expected_columns = [
+ 'Name',
+ 'Protocol',
+ 'Thick',
+ 'Thin',
+ 'Volumes',
+ 'Capacity',
+ 'Allocated',
+ 'Max Over Ratio',
+ ]
+
+ # confirming if all expected columns are present in the result.
+ self.assertEqual(expected_columns, columns)
+
+ datalist = ((
+ self.pools.name,
+ self.pools.storage_protocol,
+ self.pools.thick_provisioning_support,
+ self.pools.thin_provisioning_support,
+ self.pools.total_volumes,
+ self.pools.total_capacity_gb,
+ self.pools.allocated_capacity_gb,
+ self.pools.max_over_subscription_ratio,
+ ), )
+
+ # confirming if all expected values are present in the result.
+ self.assertEqual(datalist, tuple(data))
+
+ self.pool_mock.list.assert_called_with(
+ detailed=True,
+ )