From 1aa17bcee91cf91caeffa4bd3b0cdfb406455c6a Mon Sep 17 00:00:00 2001 From: Louis Opter Date: Tue, 3 Apr 2012 00:43:49 +0000 Subject: [PATCH 1/3] Rename the pubpush test to pubpush_inheritance Also rename the variable in the pubsub test from pusher/puller to publisher/subscriber. --- tests/test_pubpush.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/test_pubpush.py b/tests/test_pubpush.py index 59e4023..884f39e 100644 --- a/tests/test_pubpush.py +++ b/tests/test_pubpush.py @@ -29,8 +29,8 @@ import zerorpc -def test_pushpull(): - endpoint = 'ipc://test_pushpull' +def test_pushpull_inheritance(): + endpoint = 'ipc://test_pushpull_inheritance' pusher = zerorpc.Pusher() pusher.bind(endpoint) @@ -52,11 +52,11 @@ def lolita(self, a, b): print 'done' -def test_pubsub(): - endpoint = 'ipc://test_pubsub' +def test_pubsub_inheritance(): + endpoint = 'ipc://test_pubsub_inheritance' - pusher = zerorpc.Publisher() - pusher.bind(endpoint) + publisher = zerorpc.Publisher() + publisher.bind(endpoint) trigger = gevent.event.Event() class Subscriber(zerorpc.Subscriber): @@ -65,11 +65,11 @@ def lolita(self, a, b): assert a + b == 3 trigger.set() - puller = Subscriber() - puller.connect(endpoint) - gevent.spawn(puller.run) + subscriber = Subscriber() + subscriber.connect(endpoint) + gevent.spawn(subscriber.run) trigger.clear() - pusher.lolita(1, 2) + publisher.lolita(1, 2) trigger.wait() print 'done' From bc0fc0a1b147b03c21ece79e0534106e378c89b6 Mon Sep 17 00:00:00 2001 From: Louis Opter Date: Tue, 3 Apr 2012 00:45:55 +0000 Subject: [PATCH 2/3] Subscriber/Puller constructors take a methods argument The Subscriber and Puller constructors were missing the `methods' arguments making them unusable with an already instantied object. Likewise, the unused name argument has been removed from the Puller class. --- zerorpc/core.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/zerorpc/core.py b/zerorpc/core.py index ccc7346..e641581 100644 --- a/zerorpc/core.py +++ b/zerorpc/core.py @@ -336,8 +336,7 @@ def __getattr__(self, method): class Puller(SocketBase): - def __init__(self, methods=None, name=None, context=None, - zmq_socket=zmq.PULL): + def __init__(self, methods=None, context=None, zmq_socket=zmq.PULL): super(Puller, self).__init__(zmq_socket, context=context) if methods is None: @@ -398,6 +397,7 @@ def __init__(self, context=None): class Subscriber(Puller): - def __init__(self, context=None): - super(Subscriber, self).__init__(context=context, zmq_socket=zmq.SUB) + def __init__(self, methods=None, context=None): + super(Subscriber, self).__init__(methods=methods, context=context, + zmq_socket=zmq.SUB) self._events.setsockopt(zmq.SUBSCRIBE, '') From 7de90e022d603683c97eef4518c85892b4433173 Mon Sep 17 00:00:00 2001 From: Louis Opter Date: Tue, 3 Apr 2012 00:53:52 +0000 Subject: [PATCH 3/3] Add a new unit test on Subscriber/Puller for the methods argument --- tests/test_pubpush.py | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tests/test_pubpush.py b/tests/test_pubpush.py index 884f39e..e558b2d 100644 --- a/tests/test_pubpush.py +++ b/tests/test_pubpush.py @@ -73,3 +73,51 @@ def lolita(self, a, b): publisher.lolita(1, 2) trigger.wait() print 'done' + + +def test_pushpull_composite(): + endpoint = 'ipc://test_pushpull_composite' + trigger = gevent.event.Event() + + class Puller(object): + def lolita(self, a, b): + print 'lolita', a, b + assert a + b == 3 + trigger.set() + + pusher = zerorpc.Pusher() + pusher.bind(endpoint) + + service = Puller() + puller = zerorpc.Puller(service) + puller.connect(endpoint) + gevent.spawn(puller.run) + + trigger.clear() + pusher.lolita(1, 2) + trigger.wait() + print 'done' + + +def test_pubsub_composite(): + endpoint = 'ipc://test_pubsub_composite' + trigger = gevent.event.Event() + + class Subscriber(object): + def lolita(self, a, b): + print 'lolita', a, b + assert a + b == 3 + trigger.set() + + publisher = zerorpc.Publisher() + publisher.bind(endpoint) + + service = Subscriber() + subscriber = zerorpc.Subscriber(service) + subscriber.connect(endpoint) + gevent.spawn(subscriber.run) + + trigger.clear() + publisher.lolita(1, 2) + trigger.wait() + print 'done'