moto/tests/test_sqs/test_server.py

76 lines
2.2 KiB
Python
Raw Normal View History

from __future__ import unicode_literals
2013-03-05 13:14:43 +00:00
import re
2013-08-03 21:21:25 +00:00
import sure # noqa
import threading
import time
2013-03-05 13:14:43 +00:00
import moto.server as server
'''
Test the different server responses
'''
2013-03-23 13:44:53 +00:00
def test_sqs_list_identities():
2013-12-29 01:15:37 +00:00
backend = server.create_backend_app("sqs")
test_client = backend.test_client()
2013-03-05 13:14:43 +00:00
res = test_client.get('/?Action=ListQueues')
2014-08-26 17:25:50 +00:00
res.data.should.contain(b"ListQueuesResponse")
2013-03-05 13:14:43 +00:00
res = test_client.put('/?Action=CreateQueue&QueueName=testqueue')
res = test_client.put('/?Action=CreateQueue&QueueName=otherqueue')
res = test_client.get('/?Action=ListQueues&QueueNamePrefix=other')
2014-08-26 17:25:50 +00:00
res.data.should_not.contain(b'testqueue')
2013-03-05 13:14:43 +00:00
res = test_client.put(
'/123/testqueue?MessageBody=test-message&Action=SendMessage')
res = test_client.get(
'/123/testqueue?Action=ReceiveMessage&MaxNumberOfMessages=1')
2014-08-26 17:25:50 +00:00
message = re.search("<Body>(.*?)</Body>", res.data.decode('utf-8')).groups()[0]
2013-03-23 13:44:53 +00:00
message.should.equal('test-message')
def test_messages_polling():
backend = server.create_backend_app("sqs")
test_client = backend.test_client()
messages = []
test_client.put('/?Action=CreateQueue&QueueName=testqueue')
def insert_messages():
messages_count = 5
while messages_count > 0:
test_client.put(
'/123/testqueue?MessageBody=test-message&Action=SendMessage'
'&Attribute.1.Name=WaitTimeSeconds&Attribute.1.Value=10'
)
messages_count -= 1
time.sleep(.5)
def get_messages():
count = 0
while count < 5:
msg_res = test_client.get(
'/123/testqueue?Action=ReceiveMessage&MaxNumberOfMessages=1&WaitTimeSeconds=5'
)
new_msgs = re.findall("<Body>(.*?)</Body>", msg_res.data.decode('utf-8'))
count += len(new_msgs)
messages.append(new_msgs)
get_messages_thread = threading.Thread(target=get_messages)
insert_messages_thread = threading.Thread(target=insert_messages)
get_messages_thread.start()
insert_messages_thread.start()
get_messages_thread.join()
insert_messages_thread.join()
# got each message in a separate call to ReceiveMessage, despite the long WaitTimeSeconds
assert len(messages) == 5