diff options
author | Dmitry Tantsur <dtantsur@protonmail.com> | 2020-06-30 10:51:53 +0200 |
---|---|---|
committer | Dmitry Tantsur <dtantsur@protonmail.com> | 2020-06-30 10:51:53 +0200 |
commit | 00ad03b709275e185ccb5b8e80cb7db4b9071d56 (patch) | |
tree | c2bd8ff3d16a989e3098988ff10cc912c7025217 | |
parent | f97f8e2c0600633e938eac45b4e353a3df81a5e8 (diff) | |
download | ironic-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.py | 3 | ||||
-rw-r--r-- | ironic_python_agent/tests/unit/extensions/test_standby.py | 7 |
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') |