Example #1
0
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
Example #2
0
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!'
Example #3
0
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'
Example #4
0
 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()
Example #5
0
    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()
Example #6
0
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)
Example #7
0
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
Example #8
0
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
Example #9
0
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)
Example #10
0
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)
Example #11
0
 def timer_handler(loop, item, arg):
     zstr.send(arg, 'PING')
     return 0
Example #12
0
 def on_timer_event(loop, item, arg):
     zstr.send(arg, "PING")
     return 0
Example #13
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
Example #14
0
 def send(self, msg):
     return zstr.send(self.sock, msg)
Example #15
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
Example #16
0
 def on_timer_event(loop, item, arg):
     zstr.send(arg, 'PING')
     return 0
Example #17
0
 def send(self, msg):
     return zstr.send(self.sock, msg)