diff options
author | Zuul <zuul@review.opendev.org> | 2020-02-13 11:59:11 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2020-02-13 11:59:11 +0000 |
commit | fbb6cedfbebda04613e8176eb109bfb3018486dc (patch) | |
tree | bbabd1b65d5bb05f4cb63f6ce26d7318d16424e9 | |
parent | 1f5425e962ff75e8ac247783175fb13962d2f5ec (diff) | |
parent | 4f8726c8143adbeeaa91eed7a7fa13c1e9d96017 (diff) | |
download | oslo-vmware-fbb6cedfbebda04613e8176eb109bfb3018486dc.tar.gz |
Merge "Adds standard file operation functions"3.1.0
-rw-r--r-- | oslo_vmware/rw_handles.py | 32 | ||||
-rw-r--r-- | oslo_vmware/tests/test_rw_handles.py | 25 |
2 files changed, 57 insertions, 0 deletions
diff --git a/oslo_vmware/rw_handles.py b/oslo_vmware/rw_handles.py index 3a01ed9..5a9c201 100644 --- a/oslo_vmware/rw_handles.py +++ b/oslo_vmware/rw_handles.py @@ -177,6 +177,32 @@ class FileHandle(object): """ raise NotImplementedError() + def tell(self): + """Get the position of File Handle + + :return: position + """ + raise NotImplementedError() + + def fileno(self): + """returns the integer file descriptor + by default this is not supported and raises IOError + """ + raise IOError() + + def seek(self, offset): + """sets the file's current position at the offset + + :param offset: offset + """ + pass + + def flush(self): + """flushes the internal buffer + + """ + pass + def get_size(self): """Get size of the file to be read. @@ -484,6 +510,9 @@ class VmdkWriteHandle(VmdkHandle): """"Get managed object reference of the VM created for import.""" return self._vm_ref + def tell(self): + return self._bytes_written + def write(self, data): """Write data to the file. @@ -585,6 +614,9 @@ class VmdkReadHandle(VmdkHandle): LOG.exception(excep_msg) raise exceptions.VimException(excep_msg, excep) + def tell(self): + return self._bytes_read + def close(self): """Releases the lease and close the connection. diff --git a/oslo_vmware/tests/test_rw_handles.py b/oslo_vmware/tests/test_rw_handles.py index 064ad8e..9f78fa1 100644 --- a/oslo_vmware/tests/test_rw_handles.py +++ b/oslo_vmware/tests/test_rw_handles.py @@ -168,6 +168,12 @@ class VmdkHandleTest(base.TestCase): self.assertRaises(exceptions.VimException, handle.update_progress) + def test_fileno(self): + session = mock.Mock() + handle = rw_handles.VmdkHandle(session, None, 'fake-url', None) + + self.assertRaises(IOError, handle.fileno) + class VmdkWriteHandleTest(base.TestCase): """Tests for VmdkWriteHandle.""" @@ -228,6 +234,16 @@ class VmdkWriteHandleTest(base.TestCase): self._conn.putrequest.assert_called_once_with('PUT', '/ds/disk1.vmdk') self._conn.send.assert_called_once_with(data) + def test_tell(self): + session = self._create_mock_session() + handle = rw_handles.VmdkWriteHandle(session, '10.1.2.3', 443, + 'rp-1', 'folder-1', None, + 100) + data = [1] * 10 + handle.write(data) + self.assertEqual(len(data), handle._bytes_written) + self.assertEqual(len(data), handle.tell()) + def test_write_post(self): session = self._create_mock_session() handle = rw_handles.VmdkWriteHandle(session, '10.1.2.3', 443, @@ -326,6 +342,15 @@ class VmdkReadHandleTest(base.TestCase): data = handle.read(chunk_size) self.assertEqual('fake-data', data) + def test_tell(self): + chunk_size = rw_handles.READ_CHUNKSIZE + session = self._create_mock_session() + handle = rw_handles.VmdkReadHandle(session, '10.1.2.3', 443, + 'vm-1', '[ds] disk1.vmdk', + chunk_size * 10) + data = handle.read(chunk_size) + self.assertEqual(len(data), handle.tell()) + def test_update_progress(self): chunk_size = len('fake-data') vmdk_size = chunk_size * 10 |