def get_key(self, bucket_name, key_name, version_id=None): s3_client = aws_stack.connect_to_service('s3') value = b'' if bucket_name != BUCKET_MARKER_LOCAL: value = s3_client.get_object(Bucket=bucket_name, Key=key_name)['Body'].read() return s3_models.FakeKey(name=key_name, value=value)
def test_default_key_buffer_size(): # save original DEFAULT_KEY_BUFFER_SIZE environment variable content original_default_key_buffer_size = os.environ.get( "MOTO_S3_DEFAULT_KEY_BUFFER_SIZE", None) os.environ["MOTO_S3_DEFAULT_KEY_BUFFER_SIZE"] = "2" # 2 bytes assert get_s3_default_key_buffer_size() == 2 fk = s3model.FakeKey("a", os.urandom(1)) # 1 byte string assert fk._value_buffer._rolled is False os.environ["MOTO_S3_DEFAULT_KEY_BUFFER_SIZE"] = "1" # 1 byte assert get_s3_default_key_buffer_size() == 1 fk = s3model.FakeKey("a", os.urandom(3)) # 3 byte string assert fk._value_buffer._rolled is True # if no MOTO_S3_DEFAULT_KEY_BUFFER_SIZE env variable is present the buffer size should be less than # S3_UPLOAD_PART_MIN_SIZE to prevent in memory caching of multi part uploads del os.environ["MOTO_S3_DEFAULT_KEY_BUFFER_SIZE"] assert get_s3_default_key_buffer_size() < S3_UPLOAD_PART_MIN_SIZE # restore original environment variable content if original_default_key_buffer_size: os.environ[ "MOTO_S3_DEFAULT_KEY_BUFFER_SIZE"] = original_default_key_buffer_size