This is an automated email from the ASF dual-hosted git repository. tomaz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/libcloud.git
commit d8f0d3a9fbd8c1edd2d116ccfcaff1471fdb324e Author: Tomaz Muraus <to...@tomaz.me> AuthorDate: Sat Jan 28 15:15:55 2023 +0100 Add additional corectness tests for read_in_chunks function. --- libcloud/test/test_utils.py | 69 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/libcloud/test/test_utils.py b/libcloud/test/test_utils.py index 395bfea47..69d37059b 100644 --- a/libcloud/test/test_utils.py +++ b/libcloud/test/test_utils.py @@ -14,7 +14,9 @@ # limitations under the License. import sys +import random import socket +import string import os.path import platform import unittest @@ -267,6 +269,73 @@ class TestUtils(unittest.TestCase): self.assertEqual(index, 548) + def test_read_in_chunks_corectness(self): + data = "".join( + random.choice(string.ascii_lowercase) for i in range(5 * 1024 * 1024) + ).encode("utf-8") + + # fill_size = False + chunk_size = None + iterator = libcloud.utils.files.read_in_chunks( + iter([data]), chunk_size=chunk_size, fill_size=False + ) + self.assertEqual(data, libcloud.utils.files.exhaust_iterator(iterator)) + + chunk_size = 1024 * 1024 + iterator = libcloud.utils.files.read_in_chunks( + iter([data]), chunk_size=chunk_size, fill_size=False + ) + self.assertEqual(data, libcloud.utils.files.exhaust_iterator(iterator)) + + chunk_size = 2 * 1024 * 1024 + iterator = libcloud.utils.files.read_in_chunks( + iter([data]), chunk_size=chunk_size, fill_size=False + ) + self.assertEqual(data, libcloud.utils.files.exhaust_iterator(iterator)) + + chunk_size = 5 * 1024 * 1024 + iterator = libcloud.utils.files.read_in_chunks( + iter([data]), chunk_size=chunk_size, fill_size=False + ) + self.assertEqual(data, libcloud.utils.files.exhaust_iterator(iterator)) + + chunk_size = 10 * 1024 * 1024 + iterator = libcloud.utils.files.read_in_chunks( + iter([data]), chunk_size=chunk_size, fill_size=False + ) + self.assertEqual(data, libcloud.utils.files.exhaust_iterator(iterator)) + + # fill_size = True + chunk_size = None + iterator = libcloud.utils.files.read_in_chunks( + iter([data]), chunk_size=chunk_size, fill_size=True + ) + self.assertEqual(data, libcloud.utils.files.exhaust_iterator(iterator)) + + chunk_size = 1024 * 1024 + iterator = libcloud.utils.files.read_in_chunks( + iter([data]), chunk_size=chunk_size, fill_size=True + ) + self.assertEqual(data, libcloud.utils.files.exhaust_iterator(iterator)) + + chunk_size = 2 * 1024 * 1024 + iterator = libcloud.utils.files.read_in_chunks( + iter([data]), chunk_size=chunk_size, fill_size=True + ) + self.assertEqual(data, libcloud.utils.files.exhaust_iterator(iterator)) + + chunk_size = 5 * 1024 * 1024 + iterator = libcloud.utils.files.read_in_chunks( + iter([data]), chunk_size=chunk_size, fill_size=True + ) + self.assertEqual(data, libcloud.utils.files.exhaust_iterator(iterator)) + + chunk_size = 10 * 1024 * 1024 + iterator = libcloud.utils.files.read_in_chunks( + iter([data]), chunk_size=chunk_size, fill_size=True + ) + self.assertEqual(data, libcloud.utils.files.exhaust_iterator(iterator)) + def test_exhaust_iterator(self): def iterator_func(): for x in range(0, 1000):