diff options
Diffstat (limited to 'tests/s3/test_multipart.py')
-rw-r--r-- | tests/s3/test_multipart.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/s3/test_multipart.py b/tests/s3/test_multipart.py index 5921889c..5c64ba73 100644 --- a/tests/s3/test_multipart.py +++ b/tests/s3/test_multipart.py @@ -90,3 +90,35 @@ class S3MultiPartUploadTest (unittest.TestCase): self.assertEqual(lmpu.key_name, key_name) # Abort using the one returned in the list lmpu.cancel_upload() + + def test_four_part_file(self): + key_name = "k" + contents = "01234567890123456789" + sfp = StringIO.StringIO(contents) + + # upload 20 bytes in 4 parts of 5 bytes each + mpu = self.bucket.initiate_multipart_upload(key_name) + mpu.upload_part_from_file(sfp, part_num=1, size=5) + mpu.upload_part_from_file(sfp, part_num=2, size=5) + mpu.upload_part_from_file(sfp, part_num=3, size=5) + mpu.upload_part_from_file(sfp, part_num=4, size=5) + sfp.close() + + etags = {} + pn = 0 + for part in mpu: + pn += 1 + self.assertEqual(5, part.size) + etags[pn] = part.etag + self.assertEqual(pn, 4) + # etags for 01234 + self.assertEqual(etags[1], etags[3]) + # etags for 56789 + self.assertEqual(etags[2], etags[4]) + # etag 01234 != etag 56789 + self.assertNotEqual(etags[1], etags[2]) + + # parts are too small to compete as each part must + # be a min of 5MB so so we'll assume that is enough + # testing and abort the upload. + mpu.cancel_upload() |