def test_zpoller(verbose=False): ctx = zctx.new() # Create a few sockets vent = zsocket.new(ctx, zmq.PUSH); rc = zsocket.bind(vent, "tcp://*:9000") assert rc != -1, "vent bind error" sink = zsocket.new(ctx, zmq.PULL) rc = zsocket.connect(sink, "tcp://localhost:9000"); assert rc != -1, "sink connect error" bowl = zsocket.new(ctx, zmq.PULL) dish = zsocket.new(ctx, zmq.PULL) # Set-up poller poller = zpoller.new(bowl, sink, dish) assert poller, "poller create error" zstr.send(vent, "Hello, World") # We expect a message only on the sink which = zpoller.wait(poller, 1000) assert which == sink, "expected message on sink only" assert not zpoller.expired(poller), "unexpected poll timer exipiry" assert not zpoller.terminated(poller), "unexpected poller termination (interrupted)" message = zstr.recv(which) assert message == "Hello, World", "unexpected message recevied" # Destroy poller and context del poller del ctx
def test_zsock(verbose=False): writer = zsock.new(zmq.PUSH) reader = zsock.new(zmq.PULL) assert zsock.type_str(writer) == 'PUSH' assert zsock.type_str(reader) == 'PULL' zsock.bind(writer, 'inproc://foo') zsock.connect(reader, 'inproc://foo') zstr.send(writer, "hello!") assert zstr.recv(reader) == 'hello!'
def test_zsocket(): ctx = zctx.new() push = zsocket.new(ctx, zmq.PUSH) pull = zsocket.new(ctx, zmq.PULL) zsocket.bind(push, 'inproc://test') zsocket.connect(pull, 'inproc://test') zstr.send(push, 'foo') assert zstr.recv(pull) == 'foo' zstr.send(push, 'foo') zsocket.poll(pull, 1) assert zstr.recv_nowait(pull) == 'foo'
def test_shadow_pyczmq(self): try: from pyczmq import zctx, zsocket, zstr except Exception: raise SkipTest("Requires pyczmq") ctx = zctx.new() a = zsocket.new(ctx, zmq.PUSH) zsocket.bind(a, "inproc://a") ctx2 = self.Context.shadow_pyczmq(ctx) b = ctx2.socket(zmq.PULL) b.connect("inproc://a") zstr.send(a, b'hi') rcvd = self.recv(b) self.assertEqual(rcvd, b'hi') b.close()
def test_zpoller(): ctx = zctx.new() p = zsocket.new(ctx, zmq.PUB) zsocket.bind(p, 'inproc://sdf') s = zsocket.new(ctx, zmq.SUB) zsockopt.set_subscribe(s, '') zsocket.connect(s, 'inproc://sdf') s2 = zsocket.new(ctx, zmq.SUB) zsockopt.set_subscribe(s2, '') zsocket.connect(s2, 'inproc://sdf') zstr.send(p, 'foo') z = zpoller.new(s)
def s_can_connect(server, client): global PORT_NBR rc = zsocket.bind(server, "tcp://*:{}".format(PORT_NBR)) assert rc == PORT_NBR rc = zsocket.connect(client, "tcp://127.0.0.1:{}".format(PORT_NBR)) assert rc == 0 zstr.send(server, "Hello World") poller = zpoller.new(client) success = zpoller.wait(poller, 100) == client del poller rc = zsocket.unbind(server, "tcp://*:{}".format(PORT_NBR)) assert rc != -1 rc = zsocket.disconnect(client, "tcp://127.0.0.1:{}".format(PORT_NBR)) assert rc != -1 PORT_NBR += 1 return success
def s_can_connect(server, client): global PORT_NBR rc = zsocket.bind(server, "tcp://*:{0}".format(PORT_NBR)) assert rc == PORT_NBR rc = zsocket.connect(client, "tcp://127.0.0.1:{0}".format(PORT_NBR)) assert rc == 0 zstr.send(server, "Hello World") poller = zpoller.new(client) success = zpoller.wait(poller, 100) == client del poller rc = zsocket.unbind(server, "tcp://*:{0}".format(PORT_NBR)) assert rc != -1 rc = zsocket.disconnect(client, "tcp://127.0.0.1:{0}".format(PORT_NBR)) assert rc != -1 PORT_NBR += 1 return success
def test_zstr(): ctx = zctx.new() test_endpoint = 'inproc://zstr.test' output_s = zsocket.new(ctx, zmq.PAIR) zsocket.bind(output_s, test_endpoint) input_s = zsocket.new(ctx, zmq.PAIR) zsocket.connect(input_s, test_endpoint) # Send ten strings, five strings with MORE flag and then END for i in range(0, 10): rc = zstr.send(output_s, "this is string {0}".format(i)) assert (rc == 0) zstr.sendx(output_s, "This", "is", "almost", "the", "very", "END") # Read and count until we receive END string_nbr = 0 while True: string = zstr.recv(input_s) if string == "END": break string_nbr += 1 assert (string_nbr == 15)
def test_zstr(): ctx = zctx.new() test_endpoint = 'inproc://zstr.test' output_s = zsocket.new(ctx, zmq.PAIR) zsocket.bind(output_s, test_endpoint) input_s = zsocket.new(ctx, zmq.PAIR) zsocket.connect(input_s, test_endpoint) # Send ten strings, five strings with MORE flag and then END for i in range(0, 10): rc = zstr.send(output_s, "this is string {}".format(i)) assert(rc == 0) zstr.sendx(output_s, "This", "is", "almost", "the", "very", "END") # Read and count until we receive END string_nbr = 0 while True: string = zstr.recv(input_s) if string == "END": break string_nbr += 1 assert(string_nbr == 15)
def timer_handler(loop, item, arg): zstr.send(arg, 'PING') return 0
def on_timer_event(loop, item, arg): zstr.send(arg, "PING") return 0
def test_zsocket(): ctx = zctx.new() # Create a detached thread, let it run interf = "*" domain = "localhost" service = 5560 writer = zsocket.new(ctx, zmq.PUSH) assert (writer) reader = zsocket.new(ctx, zmq.PULL) assert (reader) assert zsocket.type_str(writer) == "PUSH" assert zsocket.type_str(reader) == "PULL" rc = zsocket.bind(writer, "tcp://{0}:{1}".format(interf, service)) assert rc == service # Check unbind rc = zsocket.unbind(writer, "tcp://{0}:{1}".format(interf, service)) assert rc == 0 # In some cases and especially when running under Valgrind, doing # a bind immediately after an unbind causes an EADDRINUSE error. # Even a short sleep allows the OS to release the port for reuse. time.sleep(0.1) # Bind again rc = zsocket.bind(writer, "tcp://{0}:{1}".format(interf, service)) assert rc == service rc = zsocket.connect(reader, "tcp://{0}:{1}".format(domain, service)) assert rc == 0 zstr.send(writer, "HELLO") message = zstr.recv(reader) assert message assert message == "HELLO" # Test binding to ports port = zsocket.bind(writer, "tcp://{0}:*".format(interf)) assert (port >= zsocket.DYNFROM and port <= zsocket.DYNTO) assert zsocket.poll(writer, 100) == False rc = zsocket.connect(reader, "txp://{0}:{1}".format(domain, service)) assert rc == -1 # Test sending frames to socket frame = zframe.new("ABC") rc = zframe.send(frame, writer, zframe.MORE) assert rc == 0 frame = zframe.new("DEFG") rc = zframe.send(frame, writer, 0) assert rc == 0 frame = zframe.recv(reader) assert zframe.streq(frame, "ABC") assert zframe.more(frame) zframe.destroy(frame) frame = zframe.recv(reader) assert zframe.streq(frame, "DEFG") assert not zframe.more(frame) zframe.destroy(frame) del writer del ctx
def send(self, msg): return zstr.send(self.sock, msg)
def on_timer_event(loop, item, arg): zstr.send(arg, 'PING') return 0