TEST_F(QueueOperationTest, TestQueueAttributes) { CreateQueueRequest createQueueRequest; createQueueRequest.SetQueueName(BuildResourceName(BASE_ATTRIBUTES_QUEUE_NAME)); createQueueRequest.AddAttributes(QueueAttributeName::DelaySeconds, "45"); CreateQueueOutcome createQueueOutcome = sqsClient->CreateQueue(createQueueRequest); ASSERT_TRUE(createQueueOutcome.IsSuccess()); Aws::String queueUrl = createQueueOutcome.GetResult().GetQueueUrl(); ASSERT_TRUE(queueUrl.find(createQueueRequest.GetQueueName()) != Aws::String::npos); GetQueueAttributesRequest queueAttributesRequest; queueAttributesRequest.AddAttributeNames(QueueAttributeName::DelaySeconds).WithQueueUrl(queueUrl); GetQueueAttributesOutcome queueAttributesOutcome = sqsClient->GetQueueAttributes(queueAttributesRequest); ASSERT_TRUE(queueAttributesOutcome.IsSuccess()); EXPECT_EQ("45", queueAttributesOutcome.GetResult().GetAttributes().find(QueueAttributeName::DelaySeconds)->second); SetQueueAttributesRequest setQueueAttributesRequest; setQueueAttributesRequest.AddAttributes(QueueAttributeName::VisibilityTimeout, "42").WithQueueUrl(queueUrl); SetQueueAttributesOutcome setQueueAttributesOutcome = sqsClient->SetQueueAttributes(setQueueAttributesRequest); ASSERT_TRUE(setQueueAttributesOutcome.IsSuccess()); queueAttributesRequest.AddAttributeNames(QueueAttributeName::VisibilityTimeout).WithQueueUrl(queueUrl); queueAttributesOutcome = sqsClient->GetQueueAttributes(queueAttributesRequest); ASSERT_TRUE(queueAttributesOutcome.IsSuccess()); EXPECT_EQ("45", queueAttributesOutcome.GetResult().GetAttributes().find(QueueAttributeName::DelaySeconds)->second); EXPECT_EQ("42", queueAttributesOutcome.GetResult().GetAttributes().find(QueueAttributeName::VisibilityTimeout)->second); DeleteQueueRequest deleteQueueRequest; deleteQueueRequest.WithQueueUrl(queueUrl); DeleteQueueOutcome deleteQueueOutcome = sqsClient->DeleteQueue(deleteQueueRequest); ASSERT_TRUE(deleteQueueOutcome.IsSuccess()); }
TEST_F(QueueOperationTest, TestListDeadLetterSourceQueues) { CreateQueueRequest createQueueRequest; createQueueRequest.SetQueueName(DEAD_LETTER_SOURCE_QUEUE_NAME); CreateQueueOutcome createQueueOutcome = sqsClient->CreateQueue(createQueueRequest); ASSERT_TRUE(createQueueOutcome.IsSuccess()); Aws::String queueUrl = createQueueOutcome.GetResult().GetQueueUrl(); createQueueRequest.SetQueueName(DEAD_LETTER_QUEUE_NAME); createQueueOutcome = sqsClient->CreateQueue(createQueueRequest); ASSERT_TRUE(createQueueOutcome.IsSuccess()); Aws::String deadLetterQueueUrl = createQueueOutcome.GetResult().GetQueueUrl(); GetQueueAttributesRequest queueAttributesRequest; queueAttributesRequest.AddAttributeNames(QueueAttributeName::QueueArn).WithQueueUrl(deadLetterQueueUrl); GetQueueAttributesOutcome queueAttributesOutcome = sqsClient->GetQueueAttributes(queueAttributesRequest); ASSERT_TRUE(queueAttributesOutcome.IsSuccess()); Aws::String redrivePolicy = "{\"maxReceiveCount\":\"5\", \"deadLetterTargetArn\":\"" + queueAttributesOutcome.GetResult().GetAttributes().find(QueueAttributeName::QueueArn)->second + "\"}"; SetQueueAttributesRequest setQueueAttributesRequest; setQueueAttributesRequest.AddAttributes(QueueAttributeName::RedrivePolicy, redrivePolicy).WithQueueUrl(queueUrl); SetQueueAttributesOutcome setQueueAttributesOutcome = sqsClient->SetQueueAttributes(setQueueAttributesRequest); ASSERT_TRUE(setQueueAttributesOutcome.IsSuccess()); ListDeadLetterSourceQueuesRequest listDeadLetterQueuesRequest; listDeadLetterQueuesRequest.WithQueueUrl(deadLetterQueueUrl); ListDeadLetterSourceQueuesOutcome listDeadLetterQueuesOutcome = sqsClient->ListDeadLetterSourceQueues(listDeadLetterQueuesRequest); ASSERT_TRUE(listDeadLetterQueuesOutcome.IsSuccess()); //deadletter queue stuff is eventually consistent, let's try for 100 seconds or so. unsigned count = 0; bool found = listDeadLetterQueuesOutcome.GetResult().GetQueueUrls().size() == 1uL; while (listDeadLetterQueuesOutcome.IsSuccess() && !found && count++ < 100) { if (listDeadLetterQueuesOutcome.GetResult().GetQueueUrls().size() == 1uL) { found = true; } std::this_thread::sleep_for(std::chrono::seconds(1)); listDeadLetterQueuesOutcome = sqsClient->ListDeadLetterSourceQueues(listDeadLetterQueuesRequest); } ASSERT_TRUE(found); EXPECT_EQ(queueUrl, listDeadLetterQueuesOutcome.GetResult().GetQueueUrls()[0]); DeleteQueueRequest deleteQueueRequest; deleteQueueRequest.WithQueueUrl(queueUrl); DeleteQueueOutcome deleteQueueOutcome = sqsClient->DeleteQueue(deleteQueueRequest); ASSERT_TRUE(deleteQueueOutcome.IsSuccess()); deleteQueueRequest.WithQueueUrl(deadLetterQueueUrl); deleteQueueOutcome = sqsClient->DeleteQueue(deleteQueueRequest); ASSERT_TRUE(deleteQueueOutcome.IsSuccess()); }