def test_zmsg(): m = zmsg.new() foo = zframe.new('foo') zmsg.push(m, foo) assert zmsg.first(m) == foo bar = zframe.new('bar') zmsg.push(m, bar) assert zmsg.first(m) == bar assert zmsg.last(m) == foo zmsg.append(m, zframe.new('ding')) assert zframe.data(zmsg.last(m)) == 'ding' ctx = zctx.new() p = zsocket.new(ctx, zmq.PUB) u = zsocket.new(ctx, zmq.SUB) zsockopt.set_subscribe(u, '') zsocket.bind(p, 'inproc://qer') zsocket.connect(u, 'inproc://qer') zmsg.send(m, p) zsocket.poll(u, 1) n = zmsg.recv(u) assert zmsg.size(n) == 3 assert zframe.data(zmsg.next(n)) == 'bar' assert zframe.data(zmsg.next(n)) == 'foo' assert zframe.data(zmsg.next(n)) == 'ding' assert zmsg.next(n) is None
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_zmsg(): m = zmsg.new() foo = zframe.new('foo') zmsg.push(m, foo) assert zmsg.first(m) == foo bar = zframe.new('bar') zmsg.push(m, bar) assert zmsg.first(m) == bar assert zmsg.last(m) == foo zmsg.append(m, zframe.new('ding')) # dup and mutate the buffer view d = zframe.dup(zmsg.last(m)) assert zframe.data(d)[:] == 'ding' zframe.data(d)[1] = 'o' assert zframe.data(d)[:] == 'dong' assert zframe.size(d) == 4 zmsg.append(m, d) ctx = zctx.new() p = zsocket.new(ctx, zmq.PUB) u = zsocket.new(ctx, zmq.SUB) zsocket.set_subscribe(u, '') zsocket.bind(p, 'inproc://qer') zsocket.connect(u, 'inproc://qer') zmsg.send(m, p) zsocket.poll(u, 1) n = zmsg.recv(u) assert zmsg.size(n) == 4 assert zframe.data(zmsg.next(n))[:] == 'bar' assert zframe.data(zmsg.next(n))[:] == 'foo' assert zframe.data(zmsg.next(n))[:] == 'ding' assert zframe.data(zmsg.next(n))[:] == 'dong' assert zmsg.next(n) is None zmsg.destroy(n)
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 poll(self, timeout=0): return zsocket.poll(self.sock, timeout)