summaryrefslogtreecommitdiff
path: root/tests/unit/test_utils.py
diff options
context:
space:
mode:
authorTim Burke <tim.burke@gmail.com>2015-09-23 10:42:43 -0700
committerTim Burke <tim.burke@gmail.com>2016-01-11 11:12:13 -0800
commitd4157ce5b5eeeebb3516092de995cee20025a5c1 (patch)
tree48105d68f3a7bcf19d67c0593796d10c63eea696 /tests/unit/test_utils.py
parent81003b8d993dc61ef19c6fc4cbe60d9fda76b4d1 (diff)
downloadpython-swiftclient-d4157ce5b5eeeebb3516092de995cee20025a5c1.tar.gz
Retry file uploads via SwiftService
When we introduced LengthWrapper, we neglected to make it resettable. As a result, upload failures result in errors like: put_object(...) failure and no ability to reset contents for reupload. Now, LengthWrappers will be resettable if their _readable has seek/tell. Related-Change: I6c8bc1366dfb591a26d934a30cd21c9e6b9a04ce Change-Id: I21f43f06e8c78b24d1fc081efedf2687942e042f
Diffstat (limited to 'tests/unit/test_utils.py')
-rw-r--r--tests/unit/test_utils.py26
1 files changed, 22 insertions, 4 deletions
diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py
index 4faac6d..3439f4a 100644
--- a/tests/unit/test_utils.py
+++ b/tests/unit/test_utils.py
@@ -219,9 +219,10 @@ class TestReadableToIterable(testtools.TestCase):
class TestLengthWrapper(testtools.TestCase):
def test_stringio(self):
- contents = six.StringIO(u'a' * 100)
+ contents = six.StringIO(u'a' * 50 + u'b' * 50)
+ contents.seek(22)
data = u.LengthWrapper(contents, 42, True)
- s = u'a' * 42
+ s = u'a' * 28 + u'b' * 14
read_data = u''.join(iter(data.read, ''))
self.assertEqual(42, len(data))
@@ -229,10 +230,19 @@ class TestLengthWrapper(testtools.TestCase):
self.assertEqual(s, read_data)
self.assertEqual(md5(s.encode()).hexdigest(), data.get_md5sum())
+ data.reset()
+ self.assertEqual(md5().hexdigest(), data.get_md5sum())
+
+ read_data = u''.join(iter(data.read, ''))
+ self.assertEqual(42, len(read_data))
+ self.assertEqual(s, read_data)
+ self.assertEqual(md5(s.encode()).hexdigest(), data.get_md5sum())
+
def test_bytesio(self):
- contents = six.BytesIO(b'a' * 100)
+ contents = six.BytesIO(b'a' * 50 + b'b' * 50)
+ contents.seek(22)
data = u.LengthWrapper(contents, 42, True)
- s = b'a' * 42
+ s = b'a' * 28 + b'b' * 14
read_data = b''.join(iter(data.read, ''))
self.assertEqual(42, len(data))
@@ -272,3 +282,11 @@ class TestLengthWrapper(testtools.TestCase):
self.assertEqual(segment_length, len(read_data))
self.assertEqual(s, read_data)
self.assertEqual(md5(s).hexdigest(), data.get_md5sum())
+
+ data.reset()
+ self.assertEqual(md5().hexdigest(), data.get_md5sum())
+ read_data = b''.join(iter(data.read, ''))
+ self.assertEqual(segment_length, len(data))
+ self.assertEqual(segment_length, len(read_data))
+ self.assertEqual(s, read_data)
+ self.assertEqual(md5(s).hexdigest(), data.get_md5sum())