From d6c12241a40a4c8da9d1b111aebd7e96acb5f57c Mon Sep 17 00:00:00 2001 From: Hironori Shiina Date: Sun, 9 Jul 2017 01:04:19 +0900 Subject: [PATCH] Fix unit tests for volume connector and target This patch fixes a few issues in unit tests for volume connector and target as follow-up for these pathces: - I485595b081b2c1c9f9bdf55382d06dd275784fad - I2347d0893abc2b1ccdea1ad6e794217b168a54c5 This patch incudes: - fix overindent in _validate_obj() method in each test - fix pagination tests - split a test class based on fake response Change-Id: Icb2f8d10161ba3658deb065332cb9567a1f91e11 Partial-Bug: 1526231 --- ironicclient/tests/unit/v1/test_node.py | 4 +- .../tests/unit/v1/test_volume_connector.py | 155 ++++++++++-------- .../tests/unit/v1/test_volume_target.py | 148 +++++++++-------- 3 files changed, 172 insertions(+), 135 deletions(-) diff --git a/ironicclient/tests/unit/v1/test_node.py b/ironicclient/tests/unit/v1/test_node.py index a0792d9..aa1ceaf 100644 --- a/ironicclient/tests/unit/v1/test_node.py +++ b/ironicclient/tests/unit/v1/test_node.py @@ -61,12 +61,12 @@ PORTGROUP = {'uuid': '11111111-2222-3333-4444-555555555555', 'address': 'AA:BB:CC:DD:EE:FF', 'extra': {}} CONNECTOR = {'uuid': 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee', - 'node_uuid': 'bbbbbbbb-cccc-dddd-eeee-ffffffffffff', + 'node_uuid': NODE1['uuid'], 'type': 'iqn', 'connector_id': 'iqn.2010-10.org.openstack:test', 'extra': {}} TARGET = {'uuid': 'cccccccc-dddd-eeee-ffff-000000000000', - 'node_uuid': 'dddddddd-eeee-ffff-0000-111111111111', + 'node_uuid': NODE1['uuid'], 'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, diff --git a/ironicclient/tests/unit/v1/test_volume_connector.py b/ironicclient/tests/unit/v1/test_volume_connector.py index 156a8eb..dd435c3 100644 --- a/ironicclient/tests/unit/v1/test_volume_connector.py +++ b/ironicclient/tests/unit/v1/test_volume_connector.py @@ -112,10 +112,20 @@ fake_responses_pagination = { 'GET': ( {}, {"connectors": [CONNECTOR1], - "next": "http://127.0.0.1:6385/v1/volume/connectors/?limit=1"} + "next": "http://127.0.0.1:6385/v1/volume/connectors/?marker=%s" % + CONNECTOR1['uuid']} ), }, '/v1/volume/connectors/?limit=1': + { + 'GET': ( + {}, + {"connectors": [CONNECTOR1], + "next": "http://127.0.0.1:6385/v1/volume/connectors/?limit=1" + "&marker=%s" % CONNECTOR1['uuid']} + ), + }, + '/v1/volume/connectors/?limit=1&marker=%s' % CONNECTOR1['uuid']: { 'GET': ( {}, @@ -149,19 +159,13 @@ fake_responses_sorting = { } -class VolumeConnectorManagerTest(testtools.TestCase): - - def setUp(self): - super(VolumeConnectorManagerTest, self).setUp() - self.api = utils.FakeAPI(fake_responses) - self.mgr = ironicclient.v1.volume_connector.VolumeConnectorManager( - self.api) +class VolumeConnectorManagerTestBase(testtools.TestCase): def _validate_obj(self, expect, obj): - self.assertEqual(expect['uuid'], obj.uuid) - self.assertEqual(expect['type'], obj.type) - self.assertEqual(expect['connector_id'], obj.connector_id) - self.assertEqual(expect['node_uuid'], obj.node_uuid) + self.assertEqual(expect['uuid'], obj.uuid) + self.assertEqual(expect['type'], obj.type) + self.assertEqual(expect['connector_id'], obj.connector_id) + self.assertEqual(expect['node_uuid'], obj.node_uuid) def _validate_list(self, expect_request, expect_connectors, actual_connectors): @@ -170,6 +174,15 @@ class VolumeConnectorManagerTest(testtools.TestCase): for expect, obj in zip(expect_connectors, actual_connectors): self._validate_obj(expect, obj) + +class VolumeConnectorManagerTest(VolumeConnectorManagerTestBase): + + def setUp(self): + super(VolumeConnectorManagerTest, self).setUp() + self.api = utils.FakeAPI(fake_responses) + self.mgr = ironicclient.v1.volume_connector.VolumeConnectorManager( + self.api) + def test_volume_connectors_list(self): volume_connectors = self.mgr.list() expect = [ @@ -218,63 +231,6 @@ class VolumeConnectorManagerTest(testtools.TestCase): self.assertRaises(exc.InvalidAttribute, self.mgr.list, detail=True, fields=['uuid', 'connector_id']) - def test_volume_connectors_list_limit(self): - self.api = utils.FakeAPI(fake_responses_pagination) - self.mgr = ironicclient.v1.volume_connector.VolumeConnectorManager( - self.api) - volume_connectors = self.mgr.list(limit=1) - expect = [ - ('GET', '/v1/volume/connectors/?limit=1', {}, None), - ] - expect_connectors = [CONNECTOR2] - self._validate_list(expect, expect_connectors, volume_connectors) - - def test_volume_connectors_list_marker(self): - self.api = utils.FakeAPI(fake_responses_pagination) - self.mgr = ironicclient.v1.volume_connector.VolumeConnectorManager( - self.api) - volume_connectors = self.mgr.list(marker=CONNECTOR1['uuid']) - expect = [ - ('GET', '/v1/volume/connectors/?marker=%s' % CONNECTOR1['uuid'], - {}, None), - ] - expect_connectors = [CONNECTOR2] - self._validate_list(expect, expect_connectors, volume_connectors) - - def test_volume_connectors_list_pagination_no_limit(self): - self.api = utils.FakeAPI(fake_responses_pagination) - self.mgr = ironicclient.v1.volume_connector.VolumeConnectorManager( - self.api) - volume_connectors = self.mgr.list(limit=0) - expect = [ - ('GET', '/v1/volume/connectors', {}, None), - ('GET', '/v1/volume/connectors/?limit=1', {}, None) - ] - expect_connectors = [CONNECTOR1, CONNECTOR2] - self._validate_list(expect, expect_connectors, volume_connectors) - - def test_volume_connectors_list_sort_key(self): - self.api = utils.FakeAPI(fake_responses_sorting) - self.mgr = ironicclient.v1.volume_connector.VolumeConnectorManager( - self.api) - volume_connectors = self.mgr.list(sort_key='updated_at') - expect = [ - ('GET', '/v1/volume/connectors/?sort_key=updated_at', {}, None) - ] - expect_connectors = [CONNECTOR2, CONNECTOR1] - self._validate_list(expect, expect_connectors, volume_connectors) - - def test_volume_connectors_list_sort_dir(self): - self.api = utils.FakeAPI(fake_responses_sorting) - self.mgr = ironicclient.v1.volume_connector.VolumeConnectorManager( - self.api) - volume_connectors = self.mgr.list(sort_dir='desc') - expect = [ - ('GET', '/v1/volume/connectors/?sort_dir=desc', {}, None) - ] - expect_connectors = [CONNECTOR2, CONNECTOR1] - self._validate_list(expect, expect_connectors, volume_connectors) - def test_volume_connectors_show(self): volume_connector = self.mgr.get(CONNECTOR1['uuid']) expect = [ @@ -332,3 +288,64 @@ class VolumeConnectorManagerTest(testtools.TestCase): ] self.assertEqual(expect, self.api.calls) self._validate_obj(UPDATED_CONNECTOR, volume_connector) + + +class VolumeConnectorManagerPaginationTest(VolumeConnectorManagerTestBase): + + def setUp(self): + super(VolumeConnectorManagerPaginationTest, self).setUp() + self.api = utils.FakeAPI(fake_responses_pagination) + self.mgr = ironicclient.v1.volume_connector.VolumeConnectorManager( + self.api) + + def test_volume_connectors_list_limit(self): + volume_connectors = self.mgr.list(limit=1) + expect = [ + ('GET', '/v1/volume/connectors/?limit=1', {}, None), + ] + expect_connectors = [CONNECTOR1] + self._validate_list(expect, expect_connectors, volume_connectors) + + def test_volume_connectors_list_marker(self): + volume_connectors = self.mgr.list(marker=CONNECTOR1['uuid']) + expect = [ + ('GET', '/v1/volume/connectors/?marker=%s' % CONNECTOR1['uuid'], + {}, None), + ] + expect_connectors = [CONNECTOR2] + self._validate_list(expect, expect_connectors, volume_connectors) + + def test_volume_connectors_list_pagination_no_limit(self): + volume_connectors = self.mgr.list(limit=0) + expect = [ + ('GET', '/v1/volume/connectors', {}, None), + ('GET', '/v1/volume/connectors/?marker=%s' % CONNECTOR1['uuid'], + {}, None) + ] + expect_connectors = [CONNECTOR1, CONNECTOR2] + self._validate_list(expect, expect_connectors, volume_connectors) + + +class VolumeConnectorManagerSortingTest(VolumeConnectorManagerTestBase): + + def setUp(self): + super(VolumeConnectorManagerSortingTest, self).setUp() + self.api = utils.FakeAPI(fake_responses_sorting) + self.mgr = ironicclient.v1.volume_connector.VolumeConnectorManager( + self.api) + + def test_volume_connectors_list_sort_key(self): + volume_connectors = self.mgr.list(sort_key='updated_at') + expect = [ + ('GET', '/v1/volume/connectors/?sort_key=updated_at', {}, None) + ] + expect_connectors = [CONNECTOR2, CONNECTOR1] + self._validate_list(expect, expect_connectors, volume_connectors) + + def test_volume_connectors_list_sort_dir(self): + volume_connectors = self.mgr.list(sort_dir='desc') + expect = [ + ('GET', '/v1/volume/connectors/?sort_dir=desc', {}, None) + ] + expect_connectors = [CONNECTOR2, CONNECTOR1] + self._validate_list(expect, expect_connectors, volume_connectors) diff --git a/ironicclient/tests/unit/v1/test_volume_target.py b/ironicclient/tests/unit/v1/test_volume_target.py index 058f6ae..dceb9f2 100644 --- a/ironicclient/tests/unit/v1/test_volume_target.py +++ b/ironicclient/tests/unit/v1/test_volume_target.py @@ -116,10 +116,20 @@ fake_responses_pagination = { 'GET': ( {}, {"targets": [TARGET1], - "next": "http://127.0.0.1:6385/v1/volume/targets/?limit=1"} + "next": "http://127.0.0.1:6385/v1/volume/targets/?marker=%s" % + TARGET1['uuid']} ), }, '/v1/volume/targets/?limit=1': + { + 'GET': ( + {}, + {"targets": [TARGET1], + "next": "http://127.0.0.1:6385/v1/volume/targets/?limit=1" + "&marker=%s" % TARGET1['uuid']} + ), + }, + '/v1/volume/targets/?limit=1&marker=%s' % TARGET1['uuid']: { 'GET': ( {}, @@ -153,19 +163,14 @@ fake_responses_sorting = { } -class VolumeTargetManagerTest(testtools.TestCase): - - def setUp(self): - super(VolumeTargetManagerTest, self).setUp() - self.api = utils.FakeAPI(fake_responses) - self.mgr = ironicclient.v1.volume_target.VolumeTargetManager(self.api) +class VolumeTargetManagerTestBase(testtools.TestCase): def _validate_obj(self, expect, obj): - self.assertEqual(expect['uuid'], obj.uuid) - self.assertEqual(expect['volume_type'], obj.volume_type) - self.assertEqual(expect['boot_index'], obj.boot_index) - self.assertEqual(expect['volume_id'], obj.volume_id) - self.assertEqual(expect['node_uuid'], obj.node_uuid) + self.assertEqual(expect['uuid'], obj.uuid) + self.assertEqual(expect['volume_type'], obj.volume_type) + self.assertEqual(expect['boot_index'], obj.boot_index) + self.assertEqual(expect['volume_id'], obj.volume_id) + self.assertEqual(expect['node_uuid'], obj.node_uuid) def _validate_list(self, expect_request, expect_targets, actual_targets): @@ -174,6 +179,14 @@ class VolumeTargetManagerTest(testtools.TestCase): for expect, obj in zip(expect_targets, actual_targets): self._validate_obj(expect, obj) + +class VolumeTargetManagerTest(VolumeTargetManagerTestBase): + + def setUp(self): + super(VolumeTargetManagerTest, self).setUp() + self.api = utils.FakeAPI(fake_responses) + self.mgr = ironicclient.v1.volume_target.VolumeTargetManager(self.api) + def test_volume_targets_list(self): volume_targets = self.mgr.list() expect = [ @@ -219,58 +232,6 @@ class VolumeTargetManagerTest(testtools.TestCase): self.assertRaises(exc.InvalidAttribute, self.mgr.list, detail=True, fields=['uuid', 'boot_index']) - def test_volume_targets_list_limit(self): - self.api = utils.FakeAPI(fake_responses_pagination) - self.mgr = ironicclient.v1.volume_target.VolumeTargetManager(self.api) - volume_targets = self.mgr.list(limit=1) - expect = [ - ('GET', '/v1/volume/targets/?limit=1', {}, None), - ] - expect_targets = [TARGET2] - self._validate_list(expect, expect_targets, volume_targets) - - def test_volume_targets_list_marker(self): - self.api = utils.FakeAPI(fake_responses_pagination) - self.mgr = ironicclient.v1.volume_target.VolumeTargetManager(self.api) - volume_targets = self.mgr.list(marker=TARGET1['uuid']) - expect = [ - ('GET', '/v1/volume/targets/?marker=%s' % TARGET1['uuid'], - {}, None), - ] - expect_targets = [TARGET2] - self._validate_list(expect, expect_targets, volume_targets) - - def test_volume_targets_list_pagination_no_limit(self): - self.api = utils.FakeAPI(fake_responses_pagination) - self.mgr = ironicclient.v1.volume_target.VolumeTargetManager(self.api) - volume_targets = self.mgr.list(limit=0) - expect = [ - ('GET', '/v1/volume/targets', {}, None), - ('GET', '/v1/volume/targets/?limit=1', {}, None) - ] - expect_targets = [TARGET1, TARGET2] - self._validate_list(expect, expect_targets, volume_targets) - - def test_volume_targets_list_sort_key(self): - self.api = utils.FakeAPI(fake_responses_sorting) - self.mgr = ironicclient.v1.volume_target.VolumeTargetManager(self.api) - volume_targets = self.mgr.list(sort_key='updated_at') - expect = [ - ('GET', '/v1/volume/targets/?sort_key=updated_at', {}, None) - ] - expect_targets = [TARGET2, TARGET1] - self._validate_list(expect, expect_targets, volume_targets) - - def test_volume_targets_list_sort_dir(self): - self.api = utils.FakeAPI(fake_responses_sorting) - self.mgr = ironicclient.v1.volume_target.VolumeTargetManager(self.api) - volume_targets = self.mgr.list(sort_dir='desc') - expect = [ - ('GET', '/v1/volume/targets/?sort_dir=desc', {}, None) - ] - expect_targets = [TARGET2, TARGET1] - self._validate_list(expect, expect_targets, volume_targets) - def test_volume_targets_show(self): volume_target = self.mgr.get(TARGET1['uuid']) expect = [ @@ -327,3 +288,62 @@ class VolumeTargetManagerTest(testtools.TestCase): ] self.assertEqual(expect, self.api.calls) self._validate_obj(UPDATED_TARGET, volume_target) + + +class VolumeTargetManagerPaginationTest(VolumeTargetManagerTestBase): + + def setUp(self): + super(VolumeTargetManagerPaginationTest, self).setUp() + self.api = utils.FakeAPI(fake_responses_pagination) + self.mgr = ironicclient.v1.volume_target.VolumeTargetManager(self.api) + + def test_volume_targets_list_limit(self): + volume_targets = self.mgr.list(limit=1) + expect = [ + ('GET', '/v1/volume/targets/?limit=1', {}, None), + ] + expect_targets = [TARGET1] + self._validate_list(expect, expect_targets, volume_targets) + + def test_volume_targets_list_marker(self): + volume_targets = self.mgr.list(marker=TARGET1['uuid']) + expect = [ + ('GET', '/v1/volume/targets/?marker=%s' % TARGET1['uuid'], + {}, None), + ] + expect_targets = [TARGET2] + self._validate_list(expect, expect_targets, volume_targets) + + def test_volume_targets_list_pagination_no_limit(self): + volume_targets = self.mgr.list(limit=0) + expect = [ + ('GET', '/v1/volume/targets', {}, None), + ('GET', '/v1/volume/targets/?marker=%s' % TARGET1['uuid'], + {}, None) + ] + expect_targets = [TARGET1, TARGET2] + self._validate_list(expect, expect_targets, volume_targets) + + +class VolumeTargetManagerSortingTest(VolumeTargetManagerTestBase): + + def setUp(self): + super(VolumeTargetManagerSortingTest, self).setUp() + self.api = utils.FakeAPI(fake_responses_sorting) + self.mgr = ironicclient.v1.volume_target.VolumeTargetManager(self.api) + + def test_volume_targets_list_sort_key(self): + volume_targets = self.mgr.list(sort_key='updated_at') + expect = [ + ('GET', '/v1/volume/targets/?sort_key=updated_at', {}, None) + ] + expect_targets = [TARGET2, TARGET1] + self._validate_list(expect, expect_targets, volume_targets) + + def test_volume_targets_list_sort_dir(self): + volume_targets = self.mgr.list(sort_dir='desc') + expect = [ + ('GET', '/v1/volume/targets/?sort_dir=desc', {}, None) + ] + expect_targets = [TARGET2, TARGET1] + self._validate_list(expect, expect_targets, volume_targets)