Beispiel #1
0
    def test_broadcast_data(self):
        server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server_socket.setblocking(0)
        server_socket.bind(('localhost', 8001))
        server_socket.listen(1)

        test_message = 'test_message'

        # Verify that broadcast data is sent via socket
        CommunicationsInterface.broadcast_data(test_message, [('localhost', 8001)])

        readable, writable, exceptional = select.select(
            [server_socket], [], [], 1)
        
        self.assertEqual(len(readable), 1)
        
        (client_socket, address) = readable[0].accept()
        received_data = ''
        while True:
            data = client_socket.recv(1024)
            received_data += data
            if not data:
                break

        self.assertEqual(received_data, test_message)
Beispiel #2
0
    def broadcast_event(self, event):
        """
        Broadcast an Event to all peers. If this EventManager is listening,
        the Event will be broadcast to itself as well.

        Keyword arguments:
        event -- Event to broadcast

        """

        data = self.serialize_event(event)
        CommunicationsInterface.broadcast_data(data, self.peers)
Beispiel #3
0
    def __init__(self, peers, listen_port=None):
        self.peers = peers

        self.in_event_queue = Queue.Queue()
        self.subscriptions = {}

        # Start thread to listen for incoming events    
        if listen_port:
            self.peers.append(('localhost', listen_port))
            self.listener_thread = CommunicationsInterface.listen(self, listen_port)
            self.listener_thread.daemon = True
            self.listener_thread.start()
Beispiel #4
0
    def __init__(self, peers, listen_port=None):
        """
        EventManager constructor.

        Keyword arguments:
        peers -- list of peers to connect to when broadcasting events.
                 Each peer is a tuple of the form (hostname, port).
        listen_port -- Port to listen for incoming events on. If this is not
                       specified, no listener thread will be created and no
                       events will be received.
        
        """

        self.peers = peers

        self.in_event_queue = Queue.Queue()
        self.subscriptions = {}

        # Start thread to listen for incoming events    
        if listen_port:
            self.peers.append(('localhost', listen_port))
            self.listener_thread = CommunicationsInterface.listen(self, listen_port)
            self.listener_thread.daemon = True
            self.listener_thread.start()
Beispiel #5
0
 def test_broadcast_data_error(self):
     # No exception should be raised here
     CommunicationsInterface.broadcast_data('test_message',
                                            [('localhost', 8001)])
Beispiel #6
0
    def test_listen(self):

        # listen should return a ListenerThread instance
        thread = CommunicationsInterface.listen(None, None)
        self.assertIsInstance(thread, ListenerThread)
Beispiel #7
0
 def broadcast_event(self, event):
     data = self.serialize_event(event)
     CommunicationsInterface.broadcast_data(data, self.peers)