def test_single_socket_forwarder_bind(self): if zmq.zmq_version() in ('4.1.1', '4.0.6'): raise SkipTest("libzmq-%s broke single-socket devices" % zmq.zmq_version()) dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) port = dev.bind_in_to_random_port('tcp://10.0.0.7') req = self.context.socket(zmq.REQ) req.connect('tcp://10.0.0.7:%i' % port) dev.start() time.sleep(.25) msg = b'hello' req.send(msg) self.assertEqual(msg, self.recv(req)) del dev req.close() dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) port = dev.bind_in_to_random_port('tcp://10.0.0.7') req = self.context.socket(zmq.REQ) req.connect('tcp://10.0.0.7:%i' % port) dev.start() time.sleep(.25) msg = b'hello again' req.send(msg) self.assertEqual(msg, self.recv(req)) del dev req.close()
def test_single_socket_forwarder_bind(self): dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) # select random port: binder = self.context.socket(zmq.REQ) port = binder.bind_to_random_port('tcp://127.0.0.1') binder.close() time.sleep(0.1) req = self.context.socket(zmq.REQ) req.connect('tcp://127.0.0.1:%i' % port) dev.bind_in('tcp://127.0.0.1:%i' % port) dev.start() time.sleep(.25) msg = b'hello' req.send(msg) self.assertEqual(msg, self.recv(req)) del dev req.close() dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) # select random port: binder = self.context.socket(zmq.REQ) port = binder.bind_to_random_port('tcp://127.0.0.1') binder.close() time.sleep(0.1) req = self.context.socket(zmq.REQ) req.connect('tcp://127.0.0.1:%i' % port) dev.bind_in('tcp://127.0.0.1:%i' % port) dev.start() time.sleep(.25) msg = b'hello again' req.send(msg) self.assertEqual(msg, self.recv(req)) del dev req.close()
def test_single_socket_forwarder_bind(self): dev = devices.ThreadDevice(zmq.FORWARDER, zmq.REP, -1) req = self.context.socket(zmq.REQ) port = 12345 req.connect('tcp://127.0.0.1:%i'%port) dev.bind_in('tcp://127.0.0.1:%i'%port) dev.start() time.sleep(.25) msg = asbytes('hello') req.send(msg) self.assertEquals(msg, req.recv()) del dev del req dev = devices.ThreadDevice(zmq.FORWARDER, zmq.REP, -1) req = self.context.socket(zmq.REQ) port = 12346 req.connect('tcp://127.0.0.1:%i'%port) dev.bind_in('tcp://127.0.0.1:%i'%port) dev.start() time.sleep(.25) msg = asbytes('hello again') req.send(msg) self.assertEquals(msg, req.recv()) del dev del req
def test_labels(self): """test device support for SNDLABEL""" if zmq.zmq_version() < '3.0.0': raise SkipTest("Only for libzmq 3") dev = devices.ThreadDevice(zmq.QUEUE, zmq.XREP, -1) # select random port: binder = self.context.socket(zmq.XREQ) port = binder.bind_to_random_port('tcp://127.0.0.1') binder.close() time.sleep(0.1) req = self.context.socket(zmq.REQ) req.connect('tcp://127.0.0.1:%i'%port) dev.bind_in('tcp://127.0.0.1:%i'%port) dev.start() time.sleep(.25) msg = asbytes('hello') req.send(msg, zmq.SNDLABEL) req.send(msg, zmq.SNDMORE) req.send(msg) self.assertEquals(msg, self.recv(req)) self.assertTrue(req.rcvlabel) self.assertEquals(msg, self.recv(req)) self.assertTrue(req.rcvmore) self.assertEquals(msg, self.recv(req)) del dev req.close()
def test_device_bind_to_random_binderror(self): dev = devices.ThreadDevice(zmq.PULL, zmq.PUSH, -1) iface = 'tcp://10.0.0.7' try: for i in range(11): dev.bind_in_to_random_port(iface, min_port=10000, max_port=10010) except zmq.ZMQBindError as e: return else: self.fail('Should have failed')
def test_device_bind_to_random_with_args(self): dev = devices.ThreadDevice(zmq.PULL, zmq.PUSH, -1) iface = 'tcp://10.0.0.7' ports = [] min, max = 5000, 5050 ports.extend([ dev.bind_in_to_random_port(iface, min_port=min, max_port=max), dev.bind_out_to_random_port(iface, min_port=min, max_port=max) ]) for port in ports: if port < min or port > max: self.fail('Unexpected port number: %i' % port)
def test_single_socket_forwarder_connect(self): dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) req = self.context.socket(zmq.REQ) port = req.bind_to_random_port('tcp://127.0.0.1') dev.connect_in('tcp://127.0.0.1:%i' % port) dev.start() time.sleep(.25) msg = asbytes('hello') req.send(msg) self.assertEquals(msg, req.recv()) del dev req.close() dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) req = self.context.socket(zmq.REQ) port = req.bind_to_random_port('tcp://127.0.0.1') dev.connect_out('tcp://127.0.0.1:%i' % port) dev.start() time.sleep(.25) msg = asbytes('hello again') req.send(msg) self.assertEquals(msg, req.recv()) del dev req.close()
def start_heartbeat(id, connection_in='tcp://127.0.0.1:5555', connection_out='tcp://127.0.0.1:5556'): ctx = zmq.Context() ID = id # if len(sys.argv) > 1: # ID = sys.argv[1].encode('UTF-8') # str(ID).encode('UTF-8') dev = devices.ThreadDevice(zmq.FORWARDER, zmq.SUB, zmq.DEALER) dev.setsockopt_in(zmq.SUBSCRIBE, b"") dev.setsockopt_out(zmq.IDENTITY, ID) dev.connect_in(connection_in) dev.connect_out(connection_out) dev.start()
def heart(name=None, heart_server_add=None): dev = devices.ThreadDevice(zmq.FORWARDER, zmq.SUB, zmq.DEALER) dev.setsockopt_in(zmq.SUBSCRIBE, b"") dev.connect_in('tcp://{0}:15555'.format(heart_server_add)) dev.connect_out('tcp://{0}:15556'.format(heart_server_add)) dev.setsockopt_out(zmq.IDENTITY, bytes(name, encoding='utf-8')) dev.start() time.sleep(1) A = numpy.random.random((2**11, 2**11)) while True: tic = time.time() numpy.dot(A, A.transpose()) print("blocked for %.3f s"%(time.time()-tic))
Use ping.py to see how responsive it is. Authors ------- * MinRK """ from __future__ import print_function import time import numpy import zmq from zmq import devices ctx = zmq.Context() dev = devices.ThreadDevice(zmq.FORWARDER, zmq.REP, -1) dev.bind_in('tcp://127.0.0.1:10111') dev.setsockopt_in(zmq.IDENTITY, b"whoda") dev.start() # wait for connections time.sleep(1) A = numpy.random.random((2**11, 2**12)) print("starting blocking loop") while True: tic = time.time() numpy.dot(A, A.transpose()) print("blocked for %.3f s" % (time.time() - tic))
remain responsive to pings during this time. Use heartbeater.py to ping this heart, and see the responsiveness. Authors ------- * MinRK """ import time import numpy import zmq from zmq import devices ctx = zmq.Context() dev = devices.ThreadDevice(zmq.FORWARDER, zmq.SUB, zmq.XREQ) dev.setsockopt_in(zmq.SUBSCRIBE, "") dev.connect_in('tcp://127.0.0.1:5555') dev.connect_out('tcp://127.0.0.1:5556') dev.start() #wait for connections time.sleep(1) A = numpy.random.random((2**11, 2**11)) print "starting blocking loop" while True: tic = time.time() numpy.dot(A, A.transpose()) print "blocked for %.3f s" % (time.time() - tic)
sys.path = ['../toollib/', './', '../../'] + sys.path import time import zmq from zmq.asyncio import Context, Poller import asyncio import sys import zmq from zmq import devices import zlib import pickle from datetime import datetime, timedelta dev = devices.ThreadDevice(device_type=zmq.QUEUE, in_type=zmq.ROUTER, out_type=zmq.DEALER) dev.bind_in('tcp://127.0.0.1:8096') dev.bind_out('tcp://*:8092') dev.start() #wait for connections time.sleep(1) url = 'tcp://127.0.0.1:8096' ctx = Context.instance() def send_zipped_pickle(obj, flags=0, protocol=-1): pobj = pickle.dumps(obj, protocol)
remain responsive to pings during this time. Use heartbeater.py to ping this heart, and see the responsiveness. Authors ------- * MinRK """ import time import numpy import zmq from zmq import devices ctx = zmq.Context() dev = devices.ThreadDevice(zmq.FORWARDER, zmq.SUB, zmq.DEALER) dev.setsockopt_in(zmq.SUBSCRIBE, "") dev.connect_in('tcp://127.0.0.1:5555') dev.connect_out('tcp://127.0.0.1:5556') dev.start() #wait for connections time.sleep(1) A = numpy.random.random((2**11, 2**11)) print("starting blocking loop") while True: tic = time.time() numpy.dot(A, A.transpose()) print("blocked for %.3f s" % (time.time() - tic))