示例#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)
示例#2
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)
示例#3
0
  def _write_to_s3(self, data):

    try:
      request = messages.UploadPartRequest(
          self._bucket, self._name, self.upload_id, self.part_number, data)
      response = self._client.upload_part(request)
      self.parts.append({
          'ETag': response.etag, 'PartNumber': response.part_number
      })
      self.part_number = self.part_number + 1
    except messages.S3ClientError as e:
      self.last_error = e
      if e.code == 404:
        raise IOError(errno.ENOENT, 'Not found: %s' % self._path)
      else:
        logging.error('HTTP error while requesting file %s: %s', self._path, 3)
        raise
示例#4
0
    def test_upload_part_nonexistent_upload_id(self):

        object = self.test_path + 'upload_part'
        upload_id = 'not-an-id-12345'
        part_number = 1
        contents = os.urandom(1024)

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

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

        try:
            self.client.upload_part(request)
        except Exception as e:
            self.assertIsInstance(e, messages.S3ClientError)
            self.assertEqual(e.code, 404)