Example #1
0
 def test_s3_path_object_optional(self):
     self.assertEqual(
         s3io.parse_s3_path('s3://bucket/name', object_optional=True),
         ('bucket', 'name'))
     self.assertEqual(
         s3io.parse_s3_path('s3://bucket/', object_optional=True),
         ('bucket', ''))
Example #2
0
  def setUp(self):

    # These tests can be run locally against a mock S3 client, or as integration
    # tests against the real S3 client.
    self.USE_MOCK = True

    # If you're running integration tests with S3, set this variable to be an
    # s3 path that you have access to where test data can be written. If you're
    # just running tests against the mock, this can be any s3 path. It should
    # end with a '/'.
    self.TEST_DATA_PATH = 's3://random-data-sets/beam_tests/'

    self.test_bucket, self.test_path = s3io.parse_s3_path(self.TEST_DATA_PATH)

    if self.USE_MOCK:
      self.client = fake_client.FakeS3Client()
      test_data_bucket, _ = s3io.parse_s3_path(self.TEST_DATA_PATH)
      self.client.known_buckets.add(test_data_bucket)
      self.aws = s3io.S3IO(self.client)
    else:
      self.aws = s3io.S3IO()
Example #3
0
    def _insert_random_file(self, client, path, size):
        bucket, name = s3io.parse_s3_path(path)
        contents = os.urandom(size)
        fakeFile = fake_client.FakeFile(bucket, name, contents)

        if self.USE_MOCK:
            self.client.add_file(fakeFile)

        else:
            f = self.aws.open(path, 'w')
            f.write(contents)
            f.close()

        return fakeFile
Example #4
0
  def test_file_mime_type(self):
    if self.USE_MOCK:
      self.skipTest("The boto3_client mock doesn't support mime_types")

    mime_type = 'example/example'
    file_name = self.TEST_DATA_PATH + 'write_file'
    f = self.aws.open(file_name, 'w', mime_type=mime_type)
    f.write(b'a string of binary text')
    f.close()

    bucket, key = s3io.parse_s3_path(file_name)
    metadata = self.client.get_object_metadata(messages.GetRequest(bucket, key))

    self.assertEqual(mime_type, metadata.mime_type)

    # Clean up
    self.aws.delete(file_name)
Example #5
0
    def test_get_range_bad_start_end(self):

        file_name = self.TEST_DATA_PATH + 'get_range'
        contents = os.urandom(1024)

        with self.aws.open(file_name, 'w') as f:
            f.write(contents)
        bucket, object = s3io.parse_s3_path(file_name)

        response = self.client.get_range(messages.GetRequest(bucket, object),
                                         -10, 20)
        self.assertEqual(response, contents)

        response = self.client.get_range(messages.GetRequest(bucket, object),
                                         20, 10)
        self.assertEqual(response, contents)

        # Clean up
        self.aws.delete(file_name)
Example #6
0
 def test_s3_path(self):
     self.assertEqual(s3io.parse_s3_path('s3://bucket/name'),
                      ('bucket', 'name'))
     self.assertEqual(s3io.parse_s3_path('s3://bucket/name/sub'),
                      ('bucket', 'name/sub'))