diff options
author | Zuul <zuul@review.opendev.org> | 2020-03-02 11:32:07 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2020-03-02 11:32:07 +0000 |
commit | cb40fac97296d431a32585cf40ef5ef80e8e9075 (patch) | |
tree | c1cdbfbe4a4eab73b457dd0bd993ebc71bf257d9 | |
parent | d507db7b979b01003a76730920ff30ec7a1c0a8e (diff) | |
parent | e9ec55ce1ac8d2d71452d9412cacef41116611df (diff) | |
download | oslo-vmware-cb40fac97296d431a32585cf40ef5ef80e8e9075.tar.gz |
Merge "Add ability to change read chunk size"3.2.0
-rw-r--r-- | oslo_vmware/rw_handles.py | 4 | ||||
-rw-r--r-- | oslo_vmware/tests/test_rw_handles.py | 23 |
2 files changed, 22 insertions, 5 deletions
diff --git a/oslo_vmware/rw_handles.py b/oslo_vmware/rw_handles.py index 5a9c201..b98da0c 100644 --- a/oslo_vmware/rw_handles.py +++ b/oslo_vmware/rw_handles.py @@ -594,7 +594,7 @@ class VmdkReadHandle(VmdkHandle): ssl_thumbprint=thumbprint) super(VmdkReadHandle, self).__init__(session, lease, url, self._conn) - def read(self, chunk_size): + def read(self, chunk_size=READ_CHUNKSIZE): """Read a chunk of data from the VMDK file. :param chunk_size: size of read chunk @@ -602,7 +602,7 @@ class VmdkReadHandle(VmdkHandle): :raises: VimException """ try: - data = self._file_handle.read(READ_CHUNKSIZE) + data = self._file_handle.read(chunk_size) self._bytes_read += len(data) return data except Exception as excep: diff --git a/oslo_vmware/tests/test_rw_handles.py b/oslo_vmware/tests/test_rw_handles.py index 9f78fa1..d8d0392 100644 --- a/oslo_vmware/tests/test_rw_handles.py +++ b/oslo_vmware/tests/test_rw_handles.py @@ -288,8 +288,10 @@ class VmdkReadHandleTest(base.TestCase): def setUp(self): super(VmdkReadHandleTest, self).setUp() + + def _mock_connection(self, read_data='fake-data'): self._resp = mock.Mock() - self._resp.read.return_value = 'fake-data' + self._resp.read.return_value = read_data self._conn = mock.Mock() self._conn.getresponse.return_value = self._resp patcher = mock.patch( @@ -298,7 +300,9 @@ class VmdkReadHandleTest(base.TestCase): HTTPConnectionMock = patcher.start() HTTPConnectionMock.return_value = self._conn - def _create_mock_session(self, disk=True, progress=-1): + def _create_mock_session(self, disk=True, progress=-1, + read_data='fake-data'): + self._mock_connection(read_data=read_data) device_url = mock.Mock() device_url.disk = disk device_url.url = 'http://*/ds/disk1.vmdk' @@ -339,8 +343,21 @@ class VmdkReadHandleTest(base.TestCase): handle = rw_handles.VmdkReadHandle(session, '10.1.2.3', 443, 'vm-1', '[ds] disk1.vmdk', chunk_size * 10) + fake_data = 'fake-data' data = handle.read(chunk_size) - self.assertEqual('fake-data', data) + self.assertEqual(fake_data, data) + self.assertEqual(len(fake_data), handle._bytes_read) + + def test_read_small(self): + read_data = 'fake' + session = self._create_mock_session(read_data=read_data) + + read_size = len(read_data) + handle = rw_handles.VmdkReadHandle(session, '10.1.2.3', 443, + 'vm-1', '[ds] disk1.vmdk', + read_size * 10) + handle.read(read_size) + self.assertEqual(read_size, handle._bytes_read) def test_tell(self): chunk_size = rw_handles.READ_CHUNKSIZE |