summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-03-02 11:32:07 +0000
committerGerrit Code Review <review@openstack.org>2020-03-02 11:32:07 +0000
commitcb40fac97296d431a32585cf40ef5ef80e8e9075 (patch)
treec1cdbfbe4a4eab73b457dd0bd993ebc71bf257d9
parentd507db7b979b01003a76730920ff30ec7a1c0a8e (diff)
parente9ec55ce1ac8d2d71452d9412cacef41116611df (diff)
downloadoslo-vmware-cb40fac97296d431a32585cf40ef5ef80e8e9075.tar.gz
Merge "Add ability to change read chunk size"3.2.0
-rw-r--r--oslo_vmware/rw_handles.py4
-rw-r--r--oslo_vmware/tests/test_rw_handles.py23
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