Fix "TypeError: format requires a mapping" in waiters

This is to fix the "TypeError: format requires a mapping" in
wait_for_image_imported_to_stores and wait_for_image_copied_to_stores.

Change-Id: I8a33bd4f4ea189ce9247dfecec1e53001682b870
This commit is contained in:
zhufl 2020-11-19 16:57:06 +08:00
parent 805f2a070b
commit 414ffbacb7
2 changed files with 54 additions and 4 deletions

View File

@ -207,8 +207,8 @@ def wait_for_image_imported_to_stores(client, image_id, stores):
time.sleep(client.build_interval)
message = ('Image %(image_id)s failed to import '
'on stores: %s' % str(image['os_glance_failed_import']))
message = ('Image %s failed to import on stores: %s' %
(image_id, str(image['os_glance_failed_import'])))
caller = test_utils.find_test_caller()
if caller:
message = '(%s) %s' % (caller, message)
@ -238,8 +238,8 @@ def wait_for_image_copied_to_stores(client, image_id):
time.sleep(client.build_interval)
message = ('Image %(image_id)s failed to finish the copy operation '
'on stores: %s' % str(store_left))
message = ('Image %s failed to finish the copy operation '
'on stores: %s' % (image_id, str(store_left)))
caller = test_utils.find_test_caller()
if caller:
message = '(%s) %s' % (caller, message)

View File

@ -55,6 +55,56 @@ class TestImageWaiters(base.TestCase):
waiters.wait_for_image_status,
self.client, 'fake_image_id', 'active')
def test_wait_for_image_imported_to_stores(self):
self.client.show_image.return_value = ({'status': 'active',
'stores': 'fake_store'})
start_time = int(time.time())
waiters.wait_for_image_imported_to_stores(
self.client, 'fake_image_id', 'fake_store')
end_time = int(time.time())
# Ensure waiter returns before build_timeout
self.assertLess((end_time - start_time), 10)
def test_wait_for_image_imported_to_stores_timeout(self):
time_mock = self.patch('time.time')
client = mock.MagicMock()
client.build_timeout = 2
self.patch('time.time', side_effect=[0., 1., 2.])
time_mock.side_effect = utils.generate_timeout_series(1)
client.show_image.return_value = ({
'status': 'saving',
'stores': 'fake_store',
'os_glance_failed_import': 'fake_os_glance_failed_import'})
self.assertRaises(lib_exc.TimeoutException,
waiters.wait_for_image_imported_to_stores,
client, 'fake_image_id', 'fake_store')
def test_wait_for_image_copied_to_stores(self):
self.client.show_image.return_value = ({
'status': 'active',
'os_glance_importing_to_stores': '',
'os_glance_failed_import': 'fake_os_glance_failed_import'})
start_time = int(time.time())
waiters.wait_for_image_copied_to_stores(
self.client, 'fake_image_id')
end_time = int(time.time())
# Ensure waiter returns before build_timeout
self.assertLess((end_time - start_time), 10)
def test_wait_for_image_copied_to_stores_timeout(self):
time_mock = self.patch('time.time')
self.patch('time.time', side_effect=[0., 1.])
time_mock.side_effect = utils.generate_timeout_series(1)
self.client.show_image.return_value = ({
'status': 'active',
'os_glance_importing_to_stores': 'processing',
'os_glance_failed_import': 'fake_os_glance_failed_import'})
self.assertRaises(lib_exc.TimeoutException,
waiters.wait_for_image_copied_to_stores,
self.client, 'fake_image_id')
class TestInterfaceWaiters(base.TestCase):