[zmq] Refactoring consumer side
* Introduce ZmqNotificationServer * Implement single listener per target Change-Id: I874c3fa6a86d3110a2145bea8ad06ca0bbd522c7
This commit is contained in:
@@ -12,7 +12,6 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import fixtures
|
||||
import testtools
|
||||
|
||||
import oslo_messaging
|
||||
@@ -150,57 +149,3 @@ class TestZmqBasics(zmq_common.ZmqBaseTestCase):
|
||||
self.driver.send_notification(target, context, message, '3.0')
|
||||
self.listener._received.wait(5)
|
||||
self.assertTrue(self.listener._received.isSet())
|
||||
|
||||
|
||||
class TestPoller(test_utils.BaseTestCase):
|
||||
|
||||
@testtools.skipIf(zmq is None, "zmq not available")
|
||||
def setUp(self):
|
||||
super(TestPoller, self).setUp()
|
||||
self.poller = zmq_async.get_poller()
|
||||
self.ctx = zmq.Context()
|
||||
self.internal_ipc_dir = self.useFixture(fixtures.TempDir()).path
|
||||
self.ADDR_REQ = "ipc://%s/request1" % self.internal_ipc_dir
|
||||
|
||||
def test_poll_blocking(self):
|
||||
|
||||
rep = self.ctx.socket(zmq.REP)
|
||||
rep.bind(self.ADDR_REQ)
|
||||
|
||||
reply_poller = zmq_async.get_reply_poller()
|
||||
reply_poller.register(rep)
|
||||
|
||||
def listener():
|
||||
incoming, socket = reply_poller.poll()
|
||||
self.assertEqual(b'Hello', incoming[0])
|
||||
socket.send_string('Reply')
|
||||
reply_poller.resume_polling(socket)
|
||||
|
||||
executor = zmq_async.get_executor(listener)
|
||||
executor.execute()
|
||||
|
||||
req1 = self.ctx.socket(zmq.REQ)
|
||||
req1.connect(self.ADDR_REQ)
|
||||
|
||||
req2 = self.ctx.socket(zmq.REQ)
|
||||
req2.connect(self.ADDR_REQ)
|
||||
|
||||
req1.send_string('Hello')
|
||||
req2.send_string('Hello')
|
||||
|
||||
reply = req1.recv_string()
|
||||
self.assertEqual('Reply', reply)
|
||||
|
||||
reply = req2.recv_string()
|
||||
self.assertEqual('Reply', reply)
|
||||
|
||||
def test_poll_timeout(self):
|
||||
rep = self.ctx.socket(zmq.REP)
|
||||
rep.bind(self.ADDR_REQ)
|
||||
|
||||
reply_poller = zmq_async.get_reply_poller()
|
||||
reply_poller.register(rep)
|
||||
|
||||
incoming, socket = reply_poller.poll(1)
|
||||
self.assertIsNone(incoming)
|
||||
self.assertIsNone(socket)
|
||||
|
||||
@@ -46,7 +46,7 @@ class TestPubSub(zmq_common.ZmqBaseTestCase):
|
||||
self.listeners.append(zmq_common.TestServerListener(self.driver))
|
||||
|
||||
def _send_request(self, target):
|
||||
# Needed only in test env to get listener a chance to connect
|
||||
# Needed only in test env to give listener a chance to connect
|
||||
# before request fires
|
||||
time.sleep(1)
|
||||
with contextlib.closing(zmq_request.FanoutRequest(
|
||||
|
||||
@@ -105,21 +105,21 @@ class TestGetReplyPoller(test_utils.BaseTestCase):
|
||||
def test_default_reply_poller_is_HoldReplyPoller(self):
|
||||
zmq_async._is_eventlet_zmq_available = lambda: True
|
||||
|
||||
actual = zmq_async.get_reply_poller()
|
||||
actual = zmq_async.get_poller()
|
||||
|
||||
self.assertTrue(isinstance(actual, green_poller.HoldReplyPoller))
|
||||
self.assertTrue(isinstance(actual, green_poller.GreenPoller))
|
||||
|
||||
def test_when_eventlet_is_available_then_return_HoldReplyPoller(self):
|
||||
zmq_async._is_eventlet_zmq_available = lambda: True
|
||||
|
||||
actual = zmq_async.get_reply_poller('eventlet')
|
||||
actual = zmq_async.get_poller('eventlet')
|
||||
|
||||
self.assertTrue(isinstance(actual, green_poller.HoldReplyPoller))
|
||||
self.assertTrue(isinstance(actual, green_poller.GreenPoller))
|
||||
|
||||
def test_when_eventlet_is_unavailable_then_return_ThreadingPoller(self):
|
||||
zmq_async._is_eventlet_zmq_available = lambda: False
|
||||
|
||||
actual = zmq_async.get_reply_poller('eventlet')
|
||||
actual = zmq_async.get_poller('eventlet')
|
||||
|
||||
self.assertTrue(isinstance(actual, threading_poller.ThreadingPoller))
|
||||
|
||||
@@ -128,7 +128,7 @@ class TestGetReplyPoller(test_utils.BaseTestCase):
|
||||
|
||||
errmsg = 'Invalid zmq_concurrency value: x'
|
||||
with self.assertRaisesRegexp(ValueError, errmsg):
|
||||
zmq_async.get_reply_poller(invalid_opt)
|
||||
zmq_async.get_poller(invalid_opt)
|
||||
|
||||
|
||||
class TestGetExecutor(test_utils.BaseTestCase):
|
||||
|
||||
Reference in New Issue
Block a user