Fix s3 multipart test cases broken by LIBCLOUD-378 The breakage was caused by an overzealous check. Also added test cases for checking small and big uploads via S3 multipart upload API
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/fedd709c Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/fedd709c Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/fedd709c Branch: refs/heads/0.13.1 Commit: fedd709cac9e406871310d73ce2c54d5da3a9496 Parents: db4cfbd Author: Mahendra <[email protected]> Authored: Tue Sep 3 20:40:54 2013 +0530 Committer: Tomaz Muraus <[email protected]> Committed: Wed Sep 4 12:05:51 2013 +0200 ---------------------------------------------------------------------- libcloud/test/storage/test_s3.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/fedd709c/libcloud/test/storage/test_s3.py ---------------------------------------------------------------------- diff --git a/libcloud/test/storage/test_s3.py b/libcloud/test/storage/test_s3.py index 2287d5c..9f35169 100644 --- a/libcloud/test/storage/test_s3.py +++ b/libcloud/test/storage/test_s3.py @@ -34,6 +34,7 @@ from libcloud.storage.drivers.s3 import S3StorageDriver, S3USWestStorageDriver from libcloud.storage.drivers.s3 import S3EUWestStorageDriver from libcloud.storage.drivers.s3 import S3APSEStorageDriver from libcloud.storage.drivers.s3 import S3APNEStorageDriver +from libcloud.storage.drivers.s3 import CHUNK_SIZE from libcloud.storage.drivers.dummy import DummyIterator from libcloud.test import StorageMockHttp, MockRawResponse # pylint: disable-msg=E0611 @@ -243,8 +244,6 @@ class S3MockHttp(StorageMockHttp, MockHttpTestCase): self.assertEqual(part_no, str(count)) self.assertEqual(etag, headers['etag']) - self.assertEqual(count, 3) - body = self.fixtures.load('complete_multipart.xml') return (httplib.OK, body, @@ -740,7 +739,7 @@ class S3Tests(unittest.TestCase): self.assertTrue('some-value' in obj.meta_data) self.driver_type._upload_file = old_func - def test_upload_object_via_stream(self): + def test_upload_small_object_via_stream(self): if self.driver.supports_s3_multipart_upload: self.mock_raw_response_klass.type = 'MULTIPART' @@ -762,6 +761,28 @@ class S3Tests(unittest.TestCase): self.assertEqual(obj.name, object_name) self.assertEqual(obj.size, 3) + def test_upload_big_object_via_stream(self): + + if self.driver.supports_s3_multipart_upload: + self.mock_raw_response_klass.type = 'MULTIPART' + self.mock_response_klass.type = 'MULTIPART' + else: + self.mock_raw_response_klass.type = None + self.mock_response_klass.type = None + + container = Container(name='foo_bar_container', extra={}, + driver=self.driver) + object_name = 'foo_test_stream_data' + iterator = DummyIterator(data=['2'*CHUNK_SIZE, '3'*CHUNK_SIZE, '5']) + extra = {'content_type': 'text/plain'} + obj = self.driver.upload_object_via_stream(container=container, + object_name=object_name, + iterator=iterator, + extra=extra) + + self.assertEqual(obj.name, object_name) + self.assertEqual(obj.size, CHUNK_SIZE*2 + 1) + def test_upload_object_via_stream_abort(self): if not self.driver.supports_s3_multipart_upload: return
