Esempio n. 1
0
  def test_upload_part_bad_number(self):

    object = self.test_path + 'upload_part'
    contents = os.urandom(1024)

    request = messages.UploadRequest(self.test_bucket, object, None)
    response = self.client.create_multipart_upload(request)
    upload_id = response.upload_id

    part_number = 0.5
    request = messages.UploadPartRequest(self.test_bucket, 
                                         object, 
                                         upload_id, 
                                         part_number, 
                                         contents)

    self.assertRaises(messages.S3ClientError,
                      self.client.upload_part, 
                      request)

    try:
      response = self.client.upload_part(request)
    except Exception as e:
      self.assertIsInstance(e, messages.S3ClientError)
      self.assertEqual(e.code, 400)
Esempio n. 2
0
 def _start_upload(self):
     # The uploader by default transfers data in chunks of 1024 * 1024 bytes at
     # a time, buffering writes until that size is reached.
     try:
         request = messages.UploadRequest(self._bucket, self._name,
                                          self._mime_type)
         response = self._client.create_multipart_upload(request)
         self.upload_id = response.upload_id
     except Exception as e:  # pylint: disable=broad-except
         logging.error('Error in _start_upload while inserting file %s: %s',
                       self._path, traceback.format_exc())
         self.last_error = e
         raise e
Esempio n. 3
0
    def test_complete_multipart_upload_too_many(self):

        object = self.test_path + 'upload_part'
        request = messages.UploadRequest(self.test_bucket, object, None)
        response = self.client.create_multipart_upload(request)
        upload_id = response.upload_id

        part_number = 1
        contents_1 = os.urandom(5 * 1024)
        request_1 = messages.UploadPartRequest(self.test_bucket, object,
                                               upload_id, part_number,
                                               contents_1)
        response_1 = self.client.upload_part(request_1)

        part_number = 2
        contents_2 = os.urandom(1024)
        request_2 = messages.UploadPartRequest(self.test_bucket, object,
                                               upload_id, part_number,
                                               contents_2)
        response_2 = self.client.upload_part(request_2)

        parts = [
            {
                'PartNumber': 1,
                'ETag': response_1.etag
            },
            {
                'PartNumber': 2,
                'ETag': response_2.etag
            },
            {
                'PartNumber': 3,
                'ETag': 'fake-etag'
            },
        ]
        complete_request = messages.CompleteMultipartUploadRequest(
            self.test_bucket, object, upload_id, parts)

        try:
            self.client.complete_multipart_upload(complete_request)
        except Exception as e:
            self.assertIsInstance(e, messages.S3ClientError)
            self.assertEqual(e.code, 400)