Skip to content

Commit 9306d6b

Browse files
committed
Renames pop_message() to pop_messages(). Makes pop_message() a convienence method
1 parent 740cc75 commit 9306d6b

3 files changed

Lines changed: 42 additions & 4 deletions

File tree

SoftLayer/CLI/modules/messaging.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ def execute(self, args):
340340
manager = MessagingManager(self.client)
341341
mq_client = manager.get_connection(args['<account_id>'])
342342

343-
messages = mq_client.pop_message(
343+
messages = mq_client.pop_messages(
344344
args['<queue_name>'],
345345
args.get('--count') or 1)
346346
formatted_messages = []

SoftLayer/managers/messaging.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,8 @@ def push_queue_message(self, queue_name, body, **kwargs):
256256
data=json.dumps(message))
257257
return json.loads(resp.content)
258258

259-
def pop_message(self, queue_name, count=1):
260-
""" Pop message from a queue
259+
def pop_messages(self, queue_name, count=1):
260+
""" Pop messages from a queue
261261
262262
:param queue_name: Queue Name
263263
:param count: (optional) number of messages to retrieve
@@ -266,6 +266,18 @@ def pop_message(self, queue_name, count=1):
266266
params={'batch': count})
267267
return json.loads(resp.content)
268268

269+
def pop_message(self, queue_name):
270+
""" Pop a single message from a queue. If no messages are returned
271+
this returns None
272+
273+
:param queue_name: Queue Name
274+
"""
275+
messages = self.pop_messages(queue_name, count=1)
276+
if messages['item_count'] > 0:
277+
return messages['items'][0]
278+
else:
279+
return None
280+
269281
def delete_message(self, queue_name, message_id):
270282
""" Delete a message
271283

SoftLayer/tests/managers/queue_tests.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@
2828
'message': 'Object created',
2929
'visibility_delay': 0,
3030
'visibility_interval': 30000}
31+
MESSAGE_POP = {
32+
'item_count': 1,
33+
'items': [MESSAGE_1],
34+
}
35+
MESSAGE_POP_EMPTY = {
36+
'item_count': 0,
37+
'items': []
38+
}
3139

3240
TOPIC_1 = {'name': 'example_topic', 'tags': ['tag1', 'tag2', 'tag3']}
3341
TOPIC_LIST = {'item_count': 1, 'items': [TOPIC_1]}
@@ -303,15 +311,33 @@ def test_push_queue_message(self, make_request):
303311
'post', 'queues/example_queue/messages', data='{"body": "<body>"}')
304312
self.assertEqual(MESSAGE_1, result)
305313

314+
@patch('SoftLayer.managers.messaging.MessagingConnection._make_request')
315+
def test_pop_messages(self, make_request):
316+
make_request().content = json.dumps(MESSAGE_POP)
317+
result = self.conn.pop_messages('example_queue')
318+
319+
make_request.assert_called_with(
320+
'get', 'queues/example_queue/messages', params={'batch': 1})
321+
self.assertEqual(MESSAGE_POP, result)
322+
306323
@patch('SoftLayer.managers.messaging.MessagingConnection._make_request')
307324
def test_pop_message(self, make_request):
308-
make_request().content = json.dumps(MESSAGE_1)
325+
make_request().content = json.dumps(MESSAGE_POP)
309326
result = self.conn.pop_message('example_queue')
310327

311328
make_request.assert_called_with(
312329
'get', 'queues/example_queue/messages', params={'batch': 1})
313330
self.assertEqual(MESSAGE_1, result)
314331

332+
@patch('SoftLayer.managers.messaging.MessagingConnection._make_request')
333+
def test_pop_message_empty(self, make_request):
334+
make_request().content = json.dumps(MESSAGE_POP_EMPTY)
335+
result = self.conn.pop_message('example_queue')
336+
337+
make_request.assert_called_with(
338+
'get', 'queues/example_queue/messages', params={'batch': 1})
339+
self.assertEqual(None, result)
340+
315341
@patch('SoftLayer.managers.messaging.MessagingConnection._make_request')
316342
def test_delete_message(self, make_request):
317343
result = self.conn.delete_message('example_queue', MESSAGE_1['id'])

0 commit comments

Comments
 (0)