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})
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()