def test_socket_close(get_by_name): ("SocketManager().close() should unregister, pop it " "from the list of connected sockets and then close") socket = get_by_name.return_value # Given a zmq mock zmq = Mock() # And a context context = Mock() # And a socket manager manager = SocketManager(zmq, context) manager.poller = Mock(name='poller') manager.addresses = {'foobar': 'wooot'} # When I call close manager.close("foobar") # Then it should have unregistered the socket with the poller manager.poller.unregister.assert_called_once_with(socket) # And the socket should have been removed from the internal addresses manager.addresses.should.be.empty # And socket.close should have been called socket.close.assert_called_once_with()
def test_socket_manager_register_socket(): ("SocketManager().register_socket() should register " "a socket only once even if called twice") # Given a zmq mock zmq = Mock() # And a context context = Mock() # And a socket manager with a fake socket in the pool manager = SocketManager(zmq, context) # When I call register_socket result = manager.register_socket("fake-socket", "fake-polling-mechanism") # Then it should return the socket itself result.should.equal("fake-socket") # And it should have been registered with the poller manager.poller.register.assert_called_once_with( "fake-socket", "fake-polling-mechanism", ) # And it should have been added to the internal registry manager.registry.should.have.key("fake-socket").being.equal( "fake-polling-mechanism")
def test_socket_manager_set_topic(get_by_name): ("SocketManager().set_topic() should retrieve the socket by " "name and set its subscription topic") # Background: get_by_name is mocked socket = get_by_name.return_value # Given a zmq mock zmq = Mock() # And a context context = Mock() # And a serializer serializer = Mock(name='serializer') # And a socket manager manager = SocketManager(zmq, context, serialization_backend=serializer) # When I call set topic manager.set_topic('the-socket-name', 'the-topic-name') # Then it should have retrieved the socket by name get_by_name.assert_called_once_with('the-socket-name') # And the topic should have been set in that socket socket.setsockopt.assert_called_once_with(zmq.SUBSCRIBE, b'the-topic-name')