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):

Reply via email to