Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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")
Ejemplo n.º 3
0
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')