Prevent verify-config from IndexError
verify-config raises IndexError when tempest.conf contains an empty api_extensions list. The patch fixes that and adds a few unit tests to that. Change-Id: Ia9abea77e3baeb9418cb1869cec2a159cdc9fd48 Related-Bug: #1786915
This commit is contained in:
parent
b53b923818
commit
d7e05dd767
@ -279,6 +279,9 @@ def verify_extensions(os, service, results):
|
||||
if not results.get(service):
|
||||
results[service] = {}
|
||||
extensions_opt = get_enabled_extensions(service)
|
||||
if not extensions_opt:
|
||||
LOG.info("'%s' has no api_extensions set.", service)
|
||||
return results
|
||||
if extensions_opt[0] == 'all':
|
||||
results[service]['extensions'] = extensions
|
||||
return results
|
||||
|
@ -343,6 +343,24 @@ class TestDiscovery(base.TestCase):
|
||||
self.assertEqual(sorted(['fake1', 'fake2', 'not_fake']),
|
||||
sorted(results['neutron']['extensions']))
|
||||
|
||||
def test_verify_extensions_neutron_none(self):
|
||||
def fake_list_extensions():
|
||||
return {'extensions': []}
|
||||
fake_os = mock.MagicMock()
|
||||
fake_client = mock.MagicMock()
|
||||
fake_client.list_extensions = fake_list_extensions
|
||||
self.useFixture(fixtures.MockPatchObject(
|
||||
verify_tempest_config, 'get_extension_client',
|
||||
return_value=fake_client))
|
||||
self.useFixture(fixtures.MockPatchObject(
|
||||
verify_tempest_config, 'get_enabled_extensions',
|
||||
return_value=(['all'])))
|
||||
results = verify_tempest_config.verify_extensions(fake_os,
|
||||
'neutron', {})
|
||||
self.assertIn('neutron', results)
|
||||
self.assertIn('extensions', results['neutron'])
|
||||
self.assertEqual([], results['neutron']['extensions'])
|
||||
|
||||
def test_verify_extensions_cinder(self):
|
||||
def fake_list_extensions():
|
||||
return {'extensions': [{'alias': 'fake1'},
|
||||
@ -391,6 +409,24 @@ class TestDiscovery(base.TestCase):
|
||||
self.assertEqual(sorted(['fake1', 'fake2', 'not_fake']),
|
||||
sorted(results['cinder']['extensions']))
|
||||
|
||||
def test_verify_extensions_cinder_none(self):
|
||||
def fake_list_extensions():
|
||||
return {'extensions': []}
|
||||
fake_os = mock.MagicMock()
|
||||
fake_client = mock.MagicMock()
|
||||
fake_client.list_extensions = fake_list_extensions
|
||||
self.useFixture(fixtures.MockPatchObject(
|
||||
verify_tempest_config, 'get_extension_client',
|
||||
return_value=fake_client))
|
||||
self.useFixture(fixtures.MockPatchObject(
|
||||
verify_tempest_config, 'get_enabled_extensions',
|
||||
return_value=(['all'])))
|
||||
results = verify_tempest_config.verify_extensions(fake_os,
|
||||
'cinder', {})
|
||||
self.assertIn('cinder', results)
|
||||
self.assertIn('extensions', results['cinder'])
|
||||
self.assertEqual([], results['cinder']['extensions'])
|
||||
|
||||
def test_verify_extensions_nova(self):
|
||||
def fake_list_extensions():
|
||||
return ([{'alias': 'fake1'}, {'alias': 'fake2'},
|
||||
@ -437,6 +473,24 @@ class TestDiscovery(base.TestCase):
|
||||
self.assertEqual(sorted(['fake1', 'fake2', 'not_fake']),
|
||||
sorted(results['nova']['extensions']))
|
||||
|
||||
def test_verify_extensions_nova_none(self):
|
||||
def fake_list_extensions():
|
||||
return ({'extensions': []})
|
||||
fake_os = mock.MagicMock()
|
||||
fake_client = mock.MagicMock()
|
||||
fake_client.list_extensions = fake_list_extensions
|
||||
self.useFixture(fixtures.MockPatchObject(
|
||||
verify_tempest_config, 'get_extension_client',
|
||||
return_value=fake_client))
|
||||
self.useFixture(fixtures.MockPatchObject(
|
||||
verify_tempest_config, 'get_enabled_extensions',
|
||||
return_value=(['all'])))
|
||||
results = verify_tempest_config.verify_extensions(fake_os,
|
||||
'nova', {})
|
||||
self.assertIn('nova', results)
|
||||
self.assertIn('extensions', results['nova'])
|
||||
self.assertEqual([], results['nova']['extensions'])
|
||||
|
||||
def test_verify_extensions_swift(self):
|
||||
def fake_list_extensions():
|
||||
return {'fake1': 'metadata',
|
||||
@ -485,6 +539,24 @@ class TestDiscovery(base.TestCase):
|
||||
self.assertEqual(sorted(['not_fake', 'fake1', 'fake2']),
|
||||
sorted(results['swift']['extensions']))
|
||||
|
||||
def test_verify_extensions_swift_none(self):
|
||||
def fake_list_extensions():
|
||||
return {'swift': 'metadata'}
|
||||
fake_os = mock.MagicMock()
|
||||
fake_client = mock.MagicMock()
|
||||
fake_client.list_capabilities = fake_list_extensions
|
||||
self.useFixture(fixtures.MockPatchObject(
|
||||
verify_tempest_config, 'get_extension_client',
|
||||
return_value=fake_client))
|
||||
self.useFixture(fixtures.MockPatchObject(
|
||||
verify_tempest_config, 'get_enabled_extensions',
|
||||
return_value=(['all'])))
|
||||
results = verify_tempest_config.verify_extensions(fake_os,
|
||||
'swift', {})
|
||||
self.assertIn('swift', results)
|
||||
self.assertIn('extensions', results['swift'])
|
||||
self.assertEqual([], results['swift']['extensions'])
|
||||
|
||||
def test_get_extension_client(self):
|
||||
creds = credentials_factory.get_credentials(
|
||||
fill_in=False, username='fake_user', project_name='fake_project',
|
||||
|
Loading…
x
Reference in New Issue
Block a user