get_item update_item return capacity consumed correctly

This commit is contained in:
Chris Keogh 2017-09-25 11:39:09 +13:00
parent d0f38407a1
commit 84bd16d2a2
2 changed files with 108 additions and 4 deletions

View File

@ -194,7 +194,10 @@ class DynamoHandler(BaseResponse):
if result: if result:
item_dict = result.to_json() item_dict = result.to_json()
item_dict['ConsumedCapacityUnits'] = 1 item_dict['ConsumedCapacity'] = {
'TableName': name,
'CapacityUnits': 1
}
return dynamo_json_dump(item_dict) return dynamo_json_dump(item_dict)
else: else:
er = 'com.amazonaws.dynamodb.v20111205#ResourceNotFoundException' er = 'com.amazonaws.dynamodb.v20111205#ResourceNotFoundException'
@ -238,7 +241,10 @@ class DynamoHandler(BaseResponse):
return self.error(er, 'Validation Exception') return self.error(er, 'Validation Exception')
if item: if item:
item_dict = item.describe_attrs(attributes=None) item_dict = item.describe_attrs(attributes=None)
item_dict['ConsumedCapacityUnits'] = 0.5 item_dict['ConsumedCapacity'] = {
'TableName': name,
'CapacityUnits': 0.5
}
return dynamo_json_dump(item_dict) return dynamo_json_dump(item_dict)
else: else:
# Item not found # Item not found
@ -523,7 +529,10 @@ class DynamoHandler(BaseResponse):
return self.error(er, 'Validation Exception') return self.error(er, 'Validation Exception')
item_dict = item.to_json() item_dict = item.to_json()
item_dict['ConsumedCapacityUnits'] = 0.5 item_dict['ConsumedCapacity'] = {
'TableName': name,
'CapacityUnits': 0.5
}
if not existing_item: if not existing_item:
item_dict['Attributes'] = {} item_dict['Attributes'] = {}

View File

@ -405,11 +405,11 @@ def test_basic_projection_expressions_with_attr_expression_names():
results = table.query( results = table.query(
KeyConditionExpression=Key('forum_name').eq( KeyConditionExpression=Key('forum_name').eq(
'the-key'), 'the-key'),
ProjectionExpression='#rl, #rt, subject',
ExpressionAttributeNames={ ExpressionAttributeNames={
'#rl': 'body', '#rl': 'body',
'#rt': 'attachment' '#rt': 'attachment'
}, },
ProjectionExpression='#rl, #rt, subject'
) )
assert 'body' in results['Items'][0] assert 'body' in results['Items'][0]
@ -418,3 +418,98 @@ def test_basic_projection_expressions_with_attr_expression_names():
assert results['Items'][0]['subject'] == '123' assert results['Items'][0]['subject'] == '123'
assert 'attachment' in results['Items'][0] assert 'attachment' in results['Items'][0]
assert results['Items'][0]['attachment'] == 'something' assert results['Items'][0]['attachment'] == 'something'
@mock_dynamodb2
def test_put_item_returns_consumed_capacity():
dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
# Create the DynamoDB table.
table = dynamodb.create_table(
TableName='users',
KeySchema=[
{
'AttributeName': 'forum_name',
'KeyType': 'HASH'
},
{
'AttributeName': 'subject',
'KeyType': 'RANGE'
},
],
AttributeDefinitions=[
{
'AttributeName': 'forum_name',
'AttributeType': 'S'
},
{
'AttributeName': 'subject',
'AttributeType': 'S'
},
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5
}
)
table = dynamodb.Table('users')
response = table.put_item(Item={
'forum_name': 'the-key',
'subject': '123',
'body': 'some test message',
})
assert 'ConsumedCapacity' in response
@mock_dynamodb2
def test_update_item_returns_consumed_capacity():
dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
# Create the DynamoDB table.
table = dynamodb.create_table(
TableName='users',
KeySchema=[
{
'AttributeName': 'forum_name',
'KeyType': 'HASH'
},
{
'AttributeName': 'subject',
'KeyType': 'RANGE'
},
],
AttributeDefinitions=[
{
'AttributeName': 'forum_name',
'AttributeType': 'S'
},
{
'AttributeName': 'subject',
'AttributeType': 'S'
},
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5
}
)
table = dynamodb.Table('users')
table.put_item(Item={
'forum_name': 'the-key',
'subject': '123',
'body': 'some test message',
})
response = table.update_item(Key={
'forum_name': 'the-key',
'subject': '123'
},
UpdateExpression='set body=:tb',
ExpressionAttributeValues={
':tb': 'a new message'
})
assert 'ConsumedCapacity' in response
assert 'CapacityUnits' in response['ConsumedCapacity']
assert 'TableName' in response['ConsumedCapacity']