Skip to content

Commit

Permalink
Merge pull request aws#638 from jeskew/hotfix/sqs-delete-message-batch
Browse files Browse the repository at this point in the history
Hotfix/sqs delete message batch
  • Loading branch information
jeremeamia committed Jun 18, 2015
2 parents 0c01842 + 5217883 commit 686021e
Show file tree
Hide file tree
Showing 3 changed files with 139 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/Api/Serializer/QueryParamBuilder.php
Expand Up @@ -16,7 +16,15 @@ class QueryParamBuilder

protected function queryName(Shape $shape, $default = null)
{
return $shape['queryName'] ?: $default;
if (null !== $shape['queryName']) {
return $shape['queryName'];
}

if ($this->isFlat($shape) && !empty($shape['member']['locationName'])) {
return $shape['member']['locationName'];
}

return $default;
}

protected function isFlat(Shape $shape)
Expand Down
53 changes: 53 additions & 0 deletions tests/Api/test_cases/protocols/input/query.json
Expand Up @@ -186,6 +186,59 @@
}
]
},
{
"description": "Flattened list with LocationName",
"metadata": {
"protocol": "query",
"apiVersion": "2014-01-01"
},
"shapes": {
"InputShape": {
"type": "structure",
"members": {
"ScalarArg": {
"shape": "StringType"
},
"ListArg": {
"shape": "ListType"
}
}
},
"ListType": {
"type": "list",
"member": {
"shape": "StringType",
"locationName": "ListArgLocation"
},
"flattened": true
},
"StringType": {
"type": "string"
}
},
"cases": [
{
"given": {
"input": {
"shape": "InputShape"
},
"name": "OperationName"
},
"params": {
"ScalarArg": "foo",
"ListArg": [
"a",
"b",
"c"
]
},
"serialized": {
"uri": "/",
"body": "Action=OperationName&Version=2014-01-01&ScalarArg=foo&ListArgLocation.1=a&ListArgLocation.2=b&ListArgLocation.3=c"
}
}
]
},
{
"description": "Serialize map type",
"metadata": {
Expand Down
77 changes: 77 additions & 0 deletions tests/Integ/SqsBatchSerializationTest.php
@@ -0,0 +1,77 @@
<?php

namespace Aws\Test\Integ;

use Aws\Sqs\SqsClient;

class SqsBatchSerializationTest extends \PHPUnit_Framework_TestCase
{
use IntegUtils;

public static function setUpBeforeClass()
{
$queue = self::getIntegTestingQueueName();
$client = self::getSdk()->createSqs();
self::cleanup($client, $queue);
self::log('Creating queue ' . $queue);
$client->createQueue(['QueueName' => $queue]);
}

public static function tearDownAfterClass()
{
$queue = self::getIntegTestingQueueName();
$client = self::getSdk()->createSqs();
self::cleanup($client, $queue);
}

public function testDeleteMessageBatchSendsCorrectly()
{
$client = self::getSdk()->createSqs();

$queue = $client->getQueueUrl(['QueueName' => self::getIntegTestingQueueName()]);
for ($i = 0; $i < 10; $i++) {
$client->sendMessage([
'QueueUrl' => $queue->get('QueueUrl'),
'MessageBody' => json_encode(['testing' => 'testing']),
]);
}

$messages = $client->receiveMessage([
'QueueUrl' => $queue->get('QueueUrl'),
'MaxNumberOfMessages' => 10,
]);

$client->deleteMessageBatch([
'QueueUrl' => $queue->get('QueueUrl'),
'Entries' => array_map(
function (array $message) {
return [
'Id' => $message['MessageId'],
'ReceiptHandle' => $message['ReceiptHandle'],
];
},
$messages->get('Messages')
)
]);
}

private static function cleanup(SqsClient $client, $queue)
{
try {
$queue = $client->getQueueUrl([
'QueueName' => $queue,
]);

$client->deleteQueue(['QueueUrl' => $queue->get('QueueUrl')]);

return true;
} catch (\Exception $e) {
return false;
}
}

private static function getIntegTestingQueueName()
{
return self::getResourcePrefix() . '-integ-testing-queue';
}
}

0 comments on commit 686021e

Please sign in to comment.