Exemple #1
0
def test_socket_manager_can_poll_asynchronously():
    ("SocketManager should leverage a non-blocking socket "
     "collection can be used seamlessly in a blocking fashion [TCP SOCKET]")

    # Given a socket manager for a server
    server = SocketManager(zmq, context)
    # And a reply socket listening on a tcp port
    server.ensure_and_bind('reply-server', zmq.REP, 'tcp://0.0.0.0:3458', zmq.POLLIN | zmq.POLLOUT)

    # And a socket manager for a client
    client = SocketManager(zmq, context)

    # And a request client connected to the server
    client.ensure_and_connect('request-client', zmq.REQ, 'tcp://0.0.0.0:3458', zmq.POLLIN | zmq.POLLOUT)

    # And send a request from the client
    requester = client.wait_until_ready('request-client', zmq.POLLOUT, timeout=2)
    requester.send_json({'client': 42})

    # Then I should receive a request from the client
    replier = server.wait_until_ready('reply-server', zmq.POLLIN, timeout=2)
    replier.should_not.be.none
    request = replier.recv_json()

    # And the request should be the one that the client just sent
    request.should.equal({'client': 42})
Exemple #2
0
class GraphClient(object):
    def __init__(self, request_connect_addr='tcp://127.0.0.1:6000'):
        self.context = zmq.Context()
        self.sockets = SocketManager(zmq, self.context)
        self.sockets.ensure_and_connect('query', zmq.REQ, request_connect_addr, zmq.POLLIN | zmq.POLLOUT)
        print 'connected to', request_connect_addr

    def request(self, data):
        self.sockets.send_safe('query', data)
        result = self.sockets.recv_safe('query')
        return result

    def query(self, string):
        return self.request({'query': string})
def test_socket_ensure_and_connect(get_or_create, connect, engage):
    (
        "SocketManager().ensure_and_connect() should ensure the socket existence then "
        "connect to the given address."
    )

    # Given a zmq mock
    zmq = Mock()

    # And a context
    context = Mock()

    # And a socket manager
    manager = SocketManager(zmq, context)

    # When I call ensure_and_connect
    result = manager.ensure_and_connect(
        "foobar", "SOME_TYPE", "inproc://whatevs", "some-mechanism"
    )

    # Then it should have returned a socket from connect
    result.should.equal(connect.return_value)

    # And get_or_create should have been called correctly
    get_or_create.assert_called_once_with(
        "foobar", "SOME_TYPE", "some-mechanism"
    )

    # And connect should have been called with the given address
    connect.assert_called_once_with(
        "foobar", "inproc://whatevs", "some-mechanism"
    )

    # And engage should have been called with the default value
    engage.assert_called_once_with()
def test_socket_ensure_and_connect(get_or_create, connect, engage):
    ("SocketManager().ensure_and_connect() should ensure the socket existence then "
     "connect to the given address.")

    # Given a zmq mock
    zmq = Mock()

    # And a context
    context = Mock()

    # And a socket manager
    manager = SocketManager(zmq, context)

    # When I call ensure_and_connect
    result = manager.ensure_and_connect("foobar", "SOME_TYPE",
                                        'inproc://whatevs', 'some-mechanism')

    # Then it should have returned a socket from connect
    result.should.equal(connect.return_value)

    # And get_or_create should have been called correctly
    get_or_create.assert_called_once_with('foobar', 'SOME_TYPE',
                                          'some-mechanism')

    # And connect should have been called with the given address
    connect.assert_called_once_with('foobar', 'inproc://whatevs',
                                    'some-mechanism')

    # And engage should have been called with the default value
    engage.assert_called_once_with()