summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Tantsur <dtantsur@protonmail.com>2020-06-30 10:51:53 +0200
committerDmitry Tantsur <dtantsur@protonmail.com>2020-06-30 10:51:53 +0200
commit00ad03b709275e185ccb5b8e80cb7db4b9071d56 (patch)
treec2bd8ff3d16a989e3098988ff10cc912c7025217
parentf97f8e2c0600633e938eac45b4e353a3df81a5e8 (diff)
downloadironic-python-agent-00ad03b709275e185ccb5b8e80cb7db4b9071d56.tar.gz
Fixes minor issues in the read() retries patch
Follow-up to commit c5b97eb781cf9851f9abe87a1500b4da55b8bde8. Two things slipped through the cracks: * ImageDownloadError was instantiated incorrectly, resulting in a wrong error message. This was uncovered by using assertRaisesRegext in tests. * We allowed calling write(None). This was uncovered by avoiding sleep(4) in tests and enabling more failed calls before timeout. Change-Id: If5e798c5461ea3e474a153574b0db2da96f2dfa8
-rw-r--r--ironic_python_agent/extensions/standby.py3
-rw-r--r--ironic_python_agent/tests/unit/extensions/test_standby.py7
2 files changed, 6 insertions, 4 deletions
diff --git a/ironic_python_agent/extensions/standby.py b/ironic_python_agent/extensions/standby.py
index 0a120770..e687d10e 100644
--- a/ironic_python_agent/extensions/standby.py
+++ b/ironic_python_agent/extensions/standby.py
@@ -356,13 +356,14 @@ class ImageDownload(object):
if chunk:
self._last_chunk_time = time.time()
self._hash_algo.update(chunk)
+ yield chunk
elif (time.time() - self._last_chunk_time
> CONF.image_download_connection_timeout):
LOG.error('Timeout reached waiting for a chunk of data from '
'a remote server.')
raise errors.ImageDownloadError(
+ self._image_info['id'],
'Timed out reading next chunk from webserver')
- yield chunk
def verify_image(self, image_location):
"""Verifies the checksum of the local images matches expectations.
diff --git a/ironic_python_agent/tests/unit/extensions/test_standby.py b/ironic_python_agent/tests/unit/extensions/test_standby.py
index 4fbb9e15..5d27f6d7 100644
--- a/ironic_python_agent/tests/unit/extensions/test_standby.py
+++ b/ironic_python_agent/tests/unit/extensions/test_standby.py
@@ -1234,8 +1234,8 @@ class TestStandbyExtension(base.IronicAgentTest):
return self
def __next__(self):
- if self.count == 1:
- time.sleep(4)
+ if self.count:
+ time.sleep(0.1)
return None
self.count += 1
return "meow"
@@ -1253,8 +1253,9 @@ class TestStandbyExtension(base.IronicAgentTest):
hexdigest_mock = md5_mock.return_value.hexdigest
hexdigest_mock.return_value = image_info['checksum']
requests_mock.side_effect = create_timeout
- self.assertRaises(
+ self.assertRaisesRegex(
errors.ImageDownloadError,
+ 'Timed out reading next chunk',
self.agent_extension._stream_raw_image_onto_device,
image_info,
'/dev/foo')