Add subscriptions for queue object
A new method 'subscriptions' is added for queue object in this patch, so that the API user can list subscriptions of a queue easily. Change-Id: Ia4a3da6a1b2165ba623c7101ecb4614245520f1b
This commit is contained in:
parent
71e43e98f1
commit
47f1bfcb61
|
@ -50,6 +50,17 @@ class Client(client.Client):
|
||||||
self.client_uuid = self.conf.get('client_uuid',
|
self.client_uuid = self.conf.get('client_uuid',
|
||||||
uuid.uuid4().hex)
|
uuid.uuid4().hex)
|
||||||
|
|
||||||
|
def queue(self, ref, **kwargs):
|
||||||
|
"""Returns a queue instance
|
||||||
|
|
||||||
|
:param ref: Queue's reference id.
|
||||||
|
:type ref: `six.text_type`
|
||||||
|
|
||||||
|
:returns: A queue instance
|
||||||
|
:rtype: `queues.Queue`
|
||||||
|
"""
|
||||||
|
return queues.Queue(self, ref, **kwargs)
|
||||||
|
|
||||||
@decorators.version(min_version=2)
|
@decorators.version(min_version=2)
|
||||||
def subscription(self, queue_name, **kwargs):
|
def subscription(self, queue_name, **kwargs):
|
||||||
"""Returns a subscription instance
|
"""Returns a subscription instance
|
||||||
|
|
|
@ -27,6 +27,12 @@ class Queue(queues.Queue):
|
||||||
return core.signed_url_create(trans, req, self._name, paths=paths,
|
return core.signed_url_create(trans, req, self._name, paths=paths,
|
||||||
ttl_seconds=ttl_seconds, methods=methods)
|
ttl_seconds=ttl_seconds, methods=methods)
|
||||||
|
|
||||||
|
def subscriptions(self, detailed=False, marker=None, limit=20):
|
||||||
|
return self.client.subscriptions(queue_name=self._name,
|
||||||
|
detailed=detailed,
|
||||||
|
marker=marker,
|
||||||
|
limit=limit)
|
||||||
|
|
||||||
|
|
||||||
def create_object(parent):
|
def create_object(parent):
|
||||||
return lambda args: Queue(parent, args["name"], auto_create=False)
|
return lambda args: Queue(parent, args["name"], auto_create=False)
|
||||||
|
|
|
@ -62,4 +62,9 @@ class QueuesV1MessageUnitTest(base.QueuesTestBase):
|
||||||
|
|
||||||
|
|
||||||
class QueuesV2MessageUnitTest(QueuesV1MessageUnitTest):
|
class QueuesV2MessageUnitTest(QueuesV1MessageUnitTest):
|
||||||
pass
|
|
||||||
|
def test_message_delete_with_claim(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_message_delete(self):
|
||||||
|
pass
|
||||||
|
|
|
@ -20,6 +20,7 @@ from zaqarclient import errors
|
||||||
from zaqarclient.queues import client
|
from zaqarclient.queues import client
|
||||||
from zaqarclient.queues.v1 import iterator
|
from zaqarclient.queues.v1 import iterator
|
||||||
from zaqarclient.queues.v1 import message
|
from zaqarclient.queues.v1 import message
|
||||||
|
from zaqarclient.queues.v2 import subscription
|
||||||
from zaqarclient.tests.queues import base
|
from zaqarclient.tests.queues import base
|
||||||
from zaqarclient.transport import response
|
from zaqarclient.transport import response
|
||||||
|
|
||||||
|
@ -465,7 +466,36 @@ class QueuesV1_1QueueFunctionalTest(QueuesV1QueueFunctionalTest):
|
||||||
|
|
||||||
|
|
||||||
class QueuesV2QueueUnitTest(QueuesV1_1QueueUnitTest):
|
class QueuesV2QueueUnitTest(QueuesV1_1QueueUnitTest):
|
||||||
pass
|
|
||||||
|
def test_message_get(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_queue_subscriptions(self):
|
||||||
|
result = {
|
||||||
|
"subscriptions": [{
|
||||||
|
"source": 'test',
|
||||||
|
"id": "1",
|
||||||
|
"subscriber": 'http://trigger.me',
|
||||||
|
"ttl": 3600,
|
||||||
|
"options": {}},
|
||||||
|
{
|
||||||
|
"source": 'test',
|
||||||
|
"id": "2",
|
||||||
|
"subscriber": 'http://trigger.you',
|
||||||
|
"ttl": 7200,
|
||||||
|
"options": {}}]
|
||||||
|
}
|
||||||
|
|
||||||
|
with mock.patch.object(self.transport, 'send',
|
||||||
|
autospec=True) as send_method:
|
||||||
|
|
||||||
|
resp = response.Response(None, json.dumps(result))
|
||||||
|
send_method.return_value = resp
|
||||||
|
|
||||||
|
subscriptions = self.queue.subscriptions()
|
||||||
|
subscriber_list = [s.subscriber for s in list(subscriptions)]
|
||||||
|
self.assertIn('http://trigger.me', subscriber_list)
|
||||||
|
self.assertIn('http://trigger.you', subscriber_list)
|
||||||
|
|
||||||
|
|
||||||
class QueuesV2QueueFunctionalTest(QueuesV1_1QueueFunctionalTest):
|
class QueuesV2QueueFunctionalTest(QueuesV1_1QueueFunctionalTest):
|
||||||
|
@ -490,3 +520,18 @@ class QueuesV2QueueFunctionalTest(QueuesV1_1QueueFunctionalTest):
|
||||||
queue = signed_client.queue('test_queue')
|
queue = signed_client.queue('test_queue')
|
||||||
[message] = list(queue.messages())
|
[message] = list(queue.messages())
|
||||||
self.assertEqual('Post It!', message.body)
|
self.assertEqual('Post It!', message.body)
|
||||||
|
|
||||||
|
def test_queue_subscriptions(self):
|
||||||
|
queue_name = 'test_queue'
|
||||||
|
queue = self.client.queue(queue_name, force_create=True)
|
||||||
|
self.addCleanup(queue.delete)
|
||||||
|
queue._get_transport = mock.Mock(return_value=self.transport)
|
||||||
|
|
||||||
|
subscription.Subscription(self.client, queue_name,
|
||||||
|
subscriber='http://trigger.me')
|
||||||
|
subscription.Subscription(self.client, queue_name,
|
||||||
|
subscriber='http://trigger.you')
|
||||||
|
|
||||||
|
get_subscriptions = queue.subscriptions()
|
||||||
|
self.assertTrue(isinstance(get_subscriptions, iterator._Iterator))
|
||||||
|
self.assertEqual(2, len(list(get_subscriptions)))
|
||||||
|
|
Loading…
Reference in New Issue