def test_dry_run(self): self.cli_params['dryrun'] = True self.transfer_request_submitter = UploadRequestSubmitter( self.transfer_manager, self.result_queue, self.cli_params) fileinfo = FileInfo(src=self.filename, src_type='local', operation_name='upload', dest=self.bucket + '/' + self.key, dest_type='s3') self.transfer_request_submitter.submit(fileinfo) result = self.result_queue.get() self.assertIsInstance(result, DryRunResult) self.assertEqual(result.transfer_type, 'upload') self.assertTrue(result.src.endswith(self.filename)) self.assertEqual(result.dest, 's3://' + self.bucket + '/' + self.key)
def test_dry_run(self): self.cli_params['dryrun'] = True self.transfer_request_submitter = UploadRequestSubmitter( self.transfer_manager, self.result_queue, self.cli_params) fileinfo = FileInfo( src=self.filename, src_type='local', operation_name='upload', dest=self.bucket + '/' + self.key, dest_type='s3') self.transfer_request_submitter.submit(fileinfo) result = self.result_queue.get() self.assertIsInstance(result, DryRunResult) self.assertEqual(result.transfer_type, 'upload') self.assertTrue(result.src.endswith(self.filename)) self.assertEqual(result.dest, 's3://' + self.bucket + '/' + self.key)
def setUp(self): super(TestUploadRequestSubmitter, self).setUp() self.transfer_request_submitter = UploadRequestSubmitter( self.transfer_manager, self.result_queue, self.cli_params)
class TestUploadRequestSubmitter(BaseTransferRequestSubmitterTest): def setUp(self): super(TestUploadRequestSubmitter, self).setUp() self.transfer_request_submitter = UploadRequestSubmitter( self.transfer_manager, self.result_queue, self.cli_params) def test_can_submit(self): fileinfo = FileInfo(src=self.filename, dest=self.bucket + '/' + self.key, operation_name='upload') self.assertTrue(self.transfer_request_submitter.can_submit(fileinfo)) fileinfo.operation_name = 'foo' self.assertFalse(self.transfer_request_submitter.can_submit(fileinfo)) def test_submit(self): fileinfo = FileInfo(src=self.filename, dest=self.bucket + '/' + self.key) self.cli_params['guess_mime_type'] = True # Default settings future = self.transfer_request_submitter.submit(fileinfo) self.assertIs(self.transfer_manager.upload.return_value, future) upload_call_kwargs = self.transfer_manager.upload.call_args[1] self.assertEqual(upload_call_kwargs['fileobj'], self.filename) self.assertEqual(upload_call_kwargs['bucket'], self.bucket) self.assertEqual(upload_call_kwargs['key'], self.key) self.assertEqual(upload_call_kwargs['extra_args'], {}) # Make sure the subscriber applied are of the correct type and order ref_subscribers = [ ProvideSizeSubscriber, ProvideUploadContentTypeSubscriber, UploadResultSubscriber ] actual_subscribers = upload_call_kwargs['subscribers'] self.assertEqual(len(ref_subscribers), len(actual_subscribers)) for i, actual_subscriber in enumerate(actual_subscribers): self.assertIsInstance(actual_subscriber, ref_subscribers[i]) def test_submit_with_extra_args(self): fileinfo = FileInfo(src=self.filename, dest=self.bucket + '/' + self.key) # Set some extra argument like storage_class to make sure cli # params get mapped to request parameters. self.cli_params['storage_class'] = 'STANDARD_IA' self.transfer_request_submitter.submit(fileinfo) upload_call_kwargs = self.transfer_manager.upload.call_args[1] self.assertEqual(upload_call_kwargs['extra_args'], {'StorageClass': 'STANDARD_IA'}) def test_submit_when_content_type_specified(self): fileinfo = FileInfo(src=self.filename, dest=self.bucket + '/' + self.key) self.cli_params['content_type'] = 'text/plain' self.transfer_request_submitter.submit(fileinfo) upload_call_kwargs = self.transfer_manager.upload.call_args[1] self.assertEqual(upload_call_kwargs['extra_args'], {'ContentType': 'text/plain'}) ref_subscribers = [ProvideSizeSubscriber, UploadResultSubscriber] actual_subscribers = upload_call_kwargs['subscribers'] self.assertEqual(len(ref_subscribers), len(actual_subscribers)) for i, actual_subscriber in enumerate(actual_subscribers): self.assertIsInstance(actual_subscriber, ref_subscribers[i]) def test_submit_when_no_guess_content_mime_type(self): fileinfo = FileInfo(src=self.filename, dest=self.bucket + '/' + self.key) self.cli_params['guess_mime_type'] = False self.transfer_request_submitter.submit(fileinfo) upload_call_kwargs = self.transfer_manager.upload.call_args[1] ref_subscribers = [ProvideSizeSubscriber, UploadResultSubscriber] actual_subscribers = upload_call_kwargs['subscribers'] self.assertEqual(len(ref_subscribers), len(actual_subscribers)) for i, actual_subscriber in enumerate(actual_subscribers): self.assertIsInstance(actual_subscriber, ref_subscribers[i]) def test_warn_on_too_large_transfer(self): fileinfo = FileInfo(src=self.filename, dest=self.bucket + '/' + self.key, size=MAX_UPLOAD_SIZE + 1) future = self.transfer_request_submitter.submit(fileinfo) # A warning should have been submitted because it is too large. warning_result = self.result_queue.get() self.assertIsInstance(warning_result, WarningResult) self.assertIn('exceeds s3 upload limit', warning_result.message) # Make sure that the transfer was still attempted self.assertIs(self.transfer_manager.upload.return_value, future) self.assertEqual(len(self.transfer_manager.upload.call_args_list), 1) def test_dry_run(self): self.cli_params['dryrun'] = True self.transfer_request_submitter = UploadRequestSubmitter( self.transfer_manager, self.result_queue, self.cli_params) fileinfo = FileInfo(src=self.filename, src_type='local', operation_name='upload', dest=self.bucket + '/' + self.key, dest_type='s3') self.transfer_request_submitter.submit(fileinfo) result = self.result_queue.get() self.assertIsInstance(result, DryRunResult) self.assertEqual(result.transfer_type, 'upload') self.assertTrue(result.src.endswith(self.filename)) self.assertEqual(result.dest, 's3://' + self.bucket + '/' + self.key) def test_submit_move_adds_delete_source_subscriber(self): fileinfo = FileInfo(src=self.filename, dest=self.bucket + '/' + self.key) self.cli_params['guess_mime_type'] = True # Default settings self.cli_params['is_move'] = True self.transfer_request_submitter.submit(fileinfo) ref_subscribers = [ ProvideSizeSubscriber, ProvideUploadContentTypeSubscriber, DeleteSourceFileSubscriber, UploadResultSubscriber, ] upload_call_kwargs = self.transfer_manager.upload.call_args[1] actual_subscribers = upload_call_kwargs['subscribers'] self.assertEqual(len(ref_subscribers), len(actual_subscribers)) for i, actual_subscriber in enumerate(actual_subscribers): self.assertIsInstance(actual_subscriber, ref_subscribers[i])
class TestUploadRequestSubmitter(BaseTransferRequestSubmitterTest): def setUp(self): super(TestUploadRequestSubmitter, self).setUp() self.transfer_request_submitter = UploadRequestSubmitter( self.transfer_manager, self.result_queue, self.cli_params) def test_can_submit(self): fileinfo = FileInfo( src=self.filename, dest=self.bucket+'/'+self.key, operation_name='upload') self.assertTrue( self.transfer_request_submitter.can_submit(fileinfo)) fileinfo.operation_name = 'foo' self.assertFalse( self.transfer_request_submitter.can_submit(fileinfo)) def test_submit(self): fileinfo = FileInfo( src=self.filename, dest=self.bucket+'/'+self.key) self.cli_params['guess_mime_type'] = True # Default settings future = self.transfer_request_submitter.submit(fileinfo) self.assertIs(self.transfer_manager.upload.return_value, future) upload_call_kwargs = self.transfer_manager.upload.call_args[1] self.assertEqual(upload_call_kwargs['fileobj'], self.filename) self.assertEqual(upload_call_kwargs['bucket'], self.bucket) self.assertEqual(upload_call_kwargs['key'], self.key) self.assertEqual(upload_call_kwargs['extra_args'], {}) # Make sure the subscriber applied are of the correct type and order ref_subscribers = [ ProvideSizeSubscriber, ProvideUploadContentTypeSubscriber, UploadResultSubscriber ] actual_subscribers = upload_call_kwargs['subscribers'] self.assertEqual(len(ref_subscribers), len(actual_subscribers)) for i, actual_subscriber in enumerate(actual_subscribers): self.assertIsInstance(actual_subscriber, ref_subscribers[i]) def test_submit_with_extra_args(self): fileinfo = FileInfo( src=self.filename, dest=self.bucket+'/'+self.key) # Set some extra argument like storage_class to make sure cli # params get mapped to request parameters. self.cli_params['storage_class'] = 'STANDARD_IA' self.transfer_request_submitter.submit(fileinfo) upload_call_kwargs = self.transfer_manager.upload.call_args[1] self.assertEqual( upload_call_kwargs['extra_args'], {'StorageClass': 'STANDARD_IA'}) def test_submit_when_content_type_specified(self): fileinfo = FileInfo( src=self.filename, dest=self.bucket+'/'+self.key) self.cli_params['content_type'] = 'text/plain' self.transfer_request_submitter.submit(fileinfo) upload_call_kwargs = self.transfer_manager.upload.call_args[1] self.assertEqual( upload_call_kwargs['extra_args'], {'ContentType': 'text/plain'}) ref_subscribers = [ ProvideSizeSubscriber, UploadResultSubscriber ] actual_subscribers = upload_call_kwargs['subscribers'] self.assertEqual(len(ref_subscribers), len(actual_subscribers)) for i, actual_subscriber in enumerate(actual_subscribers): self.assertIsInstance(actual_subscriber, ref_subscribers[i]) def test_submit_when_no_guess_content_mime_type(self): fileinfo = FileInfo( src=self.filename, dest=self.bucket+'/'+self.key) self.cli_params['guess_mime_type'] = False self.transfer_request_submitter.submit(fileinfo) upload_call_kwargs = self.transfer_manager.upload.call_args[1] ref_subscribers = [ ProvideSizeSubscriber, UploadResultSubscriber ] actual_subscribers = upload_call_kwargs['subscribers'] self.assertEqual(len(ref_subscribers), len(actual_subscribers)) for i, actual_subscriber in enumerate(actual_subscribers): self.assertIsInstance(actual_subscriber, ref_subscribers[i]) def test_warn_on_too_large_transfer(self): fileinfo = FileInfo( src=self.filename, dest=self.bucket+'/'+self.key, size=MAX_UPLOAD_SIZE+1) future = self.transfer_request_submitter.submit(fileinfo) # A warning should have been submitted because it is too large. warning_result = self.result_queue.get() self.assertIsInstance(warning_result, WarningResult) self.assertIn('exceeds s3 upload limit', warning_result.message) # Make sure that the transfer was still attempted self.assertIs(self.transfer_manager.upload.return_value, future) self.assertEqual(len(self.transfer_manager.upload.call_args_list), 1) def test_dry_run(self): self.cli_params['dryrun'] = True self.transfer_request_submitter = UploadRequestSubmitter( self.transfer_manager, self.result_queue, self.cli_params) fileinfo = FileInfo( src=self.filename, src_type='local', operation_name='upload', dest=self.bucket + '/' + self.key, dest_type='s3') self.transfer_request_submitter.submit(fileinfo) result = self.result_queue.get() self.assertIsInstance(result, DryRunResult) self.assertEqual(result.transfer_type, 'upload') self.assertTrue(result.src.endswith(self.filename)) self.assertEqual(result.dest, 's3://' + self.bucket + '/' + self.key) def test_submit_move_adds_delete_source_subscriber(self): fileinfo = FileInfo( src=self.filename, dest=self.bucket+'/'+self.key) self.cli_params['guess_mime_type'] = True # Default settings self.cli_params['is_move'] = True self.transfer_request_submitter.submit(fileinfo) ref_subscribers = [ ProvideSizeSubscriber, ProvideUploadContentTypeSubscriber, DeleteSourceFileSubscriber, UploadResultSubscriber, ] upload_call_kwargs = self.transfer_manager.upload.call_args[1] actual_subscribers = upload_call_kwargs['subscribers'] self.assertEqual(len(ref_subscribers), len(actual_subscribers)) for i, actual_subscriber in enumerate(actual_subscribers): self.assertIsInstance(actual_subscriber, ref_subscribers[i])