def setUp(self): # create the io_loop self._io_loop = IOLoop.instance() # and the context self._ctx = zmq.Context(1) self._settings = Settings() self._settings.ZEROMQ_MASTER_PUSH = 'inproc://spyder-zmq-master-push' self._settings.ZEROMQ_WORKER_PROC_FETCHER_PULL = \ self._settings.ZEROMQ_MASTER_PUSH self._settings.ZEROMQ_MASTER_SUB = 'inproc://spyder-zmq-master-sub' self._settings.ZEROMQ_WORKER_PROC_EXTRACTOR_PUB = \ self._settings.ZEROMQ_MASTER_SUB self._settings.ZEROMQ_MGMT_MASTER = 'inproc://spyder-zmq-mgmt-master' self._settings.ZEROMQ_MGMT_WORKER = 'inproc://spyder-zmq-mgmt-worker' # setup the mgmt sockets self._setup_mgmt_sockets() # setup the data sockets self._setup_data_servers() # setup the management interface self._mgmt = ZmqMgmt(self._mgmt_sockets['worker_sub'], self._mgmt_sockets['worker_pub'], io_loop=self._io_loop) self._mgmt.start() self._mgmt.add_callback(ZMQ_SPYDER_MGMT_WORKER, self.on_mgmt_end)
def create_worker_management(settings, zmq_context, io_loop): """ Create and return a new instance of the `ZmqMgmt`. """ listening_socket = zmq_context.socket(zmq.SUB) listening_socket.setsockopt(zmq.SUBSCRIBE, "") listening_socket.connect(settings.ZEROMQ_MGMT_MASTER) publishing_socket = zmq_context.socket(zmq.PUB) publishing_socket.connect(settings.ZEROMQ_MGMT_WORKER) return ZmqMgmt(listening_socket, publishing_socket, io_loop=io_loop)
def create_master_management(settings, zmq_context, io_loop): """ Create the management interface for master processes. """ listening_socket = zmq_context.socket(zmq.SUB) listening_socket.setsockopt(zmq.SUBSCRIBE, "") listening_socket.bind(settings.ZEROMQ_MGMT_WORKER) publishing_socket = zmq_context.socket(zmq.PUB) publishing_socket.bind(settings.ZEROMQ_MGMT_MASTER) return ZmqMgmt(listening_socket, publishing_socket, io_loop=io_loop)
def setUp(self): # create the io_loop self._io_loop = IOLoop.instance() # and the context self._ctx = zmq.Context(1) # setup the mgmt sockets self._setup_mgmt_sockets() # setup the data sockets self._setup_data_sockets() # setup the management interface self._mgmt = ZmqMgmt(self._mgmt_sockets['worker_sub'], self._mgmt_sockets['worker_pub'], io_loop=self._io_loop) self._mgmt.start() self._mgmt.add_callback(ZMQ_SPYDER_MGMT_WORKER, self.on_mgmt_end)
def test_simple_mgmt_session(self): mgmt = ZmqMgmt(self._worker_sub, self._worker_pub, io_loop=self._io_loop) mgmt.start() self.assertRaises(ValueError, mgmt.add_callback, "test", "test") mgmt.add_callback(self._topic, self.call_me) mgmt.add_callback(ZMQ_SPYDER_MGMT_WORKER, self.on_end) test_msg = MgmtMessage(topic=self._topic, data='test'.encode()) self._master_pub.send_multipart(test_msg.serialize()) def assert_correct_mgmt_answer(raw_msg): msg = MgmtMessage(raw_msg) self.assertEqual(ZMQ_SPYDER_MGMT_WORKER_QUIT_ACK, msg.data) mgmt.remove_callback(self._topic, self.call_me) mgmt.remove_callback(ZMQ_SPYDER_MGMT_WORKER, self.on_end) self.assertEqual({}, mgmt._callbacks) self._master_sub.on_recv(assert_correct_mgmt_answer) self._io_loop.start()