Esempio n. 1
0
    def test_listener_creator_recv_bufsize(self, mock_UDPTendril,
                                           mock_track_tendril, mock_socket):
        acceptor = mock.Mock()
        manager = udp.UDPTendrilManager()
        manager.running = True

        with self.assertRaises(TestException):
            manager.listener(acceptor, None)

        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_DGRAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        self.assertFalse(mock_UDPTendril.called)
        self.assertFalse(acceptor.called)
        self.assertFalse(mock_track_tendril.called)
Esempio n. 2
0
    def test_listener_creator_backlog(self, mock_TCPTendril,
                                      mock_track_tendril, mock_socket,
                                      mock_sleep):
        acceptor = mock.Mock()
        manager = tcp.TCPTendrilManager()
        manager.running = True

        with self.assertRaises(TestException):
            manager.listener(acceptor, None)

        self.assertFalse(mock_sleep.called)
        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_STREAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1),
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
            mock.call.listen(4096),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        self.assertFalse(mock_TCPTendril.called)
        self.assertFalse(acceptor.called)
        self.assertFalse(mock_track_tendril.called)
Esempio n. 3
0
    def test_listener_creator_backlog(self, mock_TCPTendril,
                                      mock_track_tendril, mock_socket,
                                      mock_sleep):
        acceptor = mock.Mock()
        manager = tcp.TCPTendrilManager()
        manager.running = True

        with self.assertRaises(TestException):
            manager.listener(acceptor, None)

        self.assertFalse(mock_sleep.called)
        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_STREAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1),
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
            mock.call.listen(4096),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        self.assertFalse(mock_TCPTendril.called)
        self.assertFalse(acceptor.called)
        self.assertFalse(mock_track_tendril.called)
Esempio n. 4
0
    def test_listener_creator_recv_bufsize(self, mock_UDPTendril,
                                           mock_track_tendril, mock_socket):
        acceptor = mock.Mock()
        manager = udp.UDPTendrilManager()
        manager.running = True

        with self.assertRaises(TestException):
            manager.listener(acceptor, None)

        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_DGRAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.recvfrom(8192),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        self.assertFalse(mock_UDPTendril.called)
        self.assertFalse(acceptor.called)
        self.assertFalse(mock_track_tendril.called)
Esempio n. 5
0
    def test_listener_noacceptor(self, mock_TCPTendril, mock_track_tendril,
                                 mock_socket, mock_sleep):
        manager = tcp.TCPTendrilManager()

        with self.assertRaises(TestException):
            manager.listener(None, None)

        mock_sleep.assert_called_once_with(600)
        self.assertFalse(mock_socket.called)
Esempio n. 6
0
    def test_listener_noacceptor(self, mock_TCPTendril, mock_track_tendril,
                                 mock_socket, mock_sleep):
        manager = tcp.TCPTendrilManager()

        with self.assertRaises(TestException):
            manager.listener(None, None)

        mock_sleep.assert_called_once_with(600)
        self.assertFalse(mock_socket.called)
Esempio n. 7
0
    def test_listener_recv_frameify_error(self, mock_UDPTendril,
                                          mock_track_tendril, mock_socket):
        mock_socket.return_value.recvfrom.side_effect = [
            ('frame', ('127.0.0.3', 8083)),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
        ]
        tend = mock.Mock(**{'_recv_frameify.side_effect': TestException()})
        manager = udp.UDPTendrilManager()
        manager.running = True
        manager.tendrils[(('127.0.0.1', 8080), ('127.0.0.3', 8083))] = tend

        with self.assertRaises(TestException):
            manager.listener(None, None)

        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_DGRAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        self.assertFalse(mock_UDPTendril.called)
        self.assertFalse(mock_track_tendril.called)
        tend._recv_frameify.assert_called_once_with('frame')
        tend.close.assert_called_once_with()
        self.assertEqual(tend.closed.call_count, 1)

        args = tend.closed.call_args[0]
        self.assertEqual(len(args), 1)
        self.assertIsInstance(args[0], TestException)
Esempio n. 8
0
    def test_listener_recv_frameify_error(self, mock_UDPTendril,
                                          mock_track_tendril, mock_socket):
        mock_socket.return_value.recvfrom.side_effect = [
            ('frame', ('127.0.0.3', 8083)),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
        ]
        tend = mock.Mock(**{'_recv_frameify.side_effect': TestException()})
        manager = udp.UDPTendrilManager()
        manager.running = True
        manager.tendrils[(('127.0.0.1', 8080), ('127.0.0.3', 8083))] = tend

        with self.assertRaises(TestException):
            manager.listener(None, None)

        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_DGRAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        self.assertFalse(mock_UDPTendril.called)
        self.assertFalse(mock_track_tendril.called)
        tend._recv_frameify.assert_called_once_with('frame')
        tend.close.assert_called_once_with()
        self.assertEqual(tend.closed.call_count, 1)

        args = tend.closed.call_args[0]
        self.assertEqual(len(args), 1)
        self.assertIsInstance(args[0], TestException)
Esempio n. 9
0
    def test_listener_noacceptor(self, mock_UDPTendril, mock_track_tendril,
                                 mock_socket):
        msgs = ['msg1', 'msg2', 'msg3']
        mock_socket.return_value.recvfrom.side_effect = [
            (msgs[0], ('127.0.0.2', 8082)),
            (msgs[1], ('127.0.0.3', 8083)),
            (msgs[2], ('127.0.0.4', 8084)),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
        ]
        tend = mock.Mock()
        manager = udp.UDPTendrilManager()
        manager.running = True
        manager.tendrils[(('127.0.0.1', 8080), ('127.0.0.3', 8083))] = tend

        with self.assertRaises(TestException):
            manager.listener(None, None)

        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_DGRAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        self.assertFalse(mock_UDPTendril.called)
        self.assertFalse(mock_track_tendril.called)
        tend._recv_frameify.assert_called_once_with('msg2')
Esempio n. 10
0
    def test_listener_noacceptor(self, mock_UDPTendril, mock_track_tendril,
                                 mock_socket):
        msgs = ['msg1', 'msg2', 'msg3']
        mock_socket.return_value.recvfrom.side_effect = [
            (msgs[0], ('127.0.0.2', 8082)),
            (msgs[1], ('127.0.0.3', 8083)),
            (msgs[2], ('127.0.0.4', 8084)),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
        ]
        tend = mock.Mock()
        manager = udp.UDPTendrilManager()
        manager.running = True
        manager.tendrils[(('127.0.0.1', 8080), ('127.0.0.3', 8083))] = tend

        with self.assertRaises(TestException):
            manager.listener(None, None)

        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_DGRAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        self.assertFalse(mock_UDPTendril.called)
        self.assertFalse(mock_track_tendril.called)
        tend._recv_frameify.assert_called_once_with('msg2')
Esempio n. 11
0
    def test_listener_wrapper(self, mock_TCPTendril, mock_track_tendril,
                              mock_socket, mock_sleep):
        wrapped_sock = mock.Mock(**{
            'accept.side_effect': TestException(),
        })
        wrapper = mock.Mock(return_value=wrapped_sock)
        acceptor = mock.Mock()
        manager = tcp.TCPTendrilManager()
        manager.running = True

        with self.assertRaises(TestException):
            manager.listener(acceptor, wrapper)

        self.assertFalse(mock_sleep.called)
        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_STREAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1),
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
        ])
        wrapper.assert_called_once_with(mock_socket.return_value)
        wrapped_sock.assert_has_calls([
            mock.call.listen(1024),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        self.assertFalse(mock_TCPTendril.called)
        self.assertFalse(acceptor.called)
        self.assertFalse(mock_track_tendril.called)
Esempio n. 12
0
    def test_listener_wrapper(self, mock_TCPTendril, mock_track_tendril,
                              mock_socket, mock_sleep):
        wrapped_sock = mock.Mock(**{
            'accept.side_effect': TestException(),
        })
        wrapper = mock.Mock(return_value=wrapped_sock)
        acceptor = mock.Mock()
        manager = tcp.TCPTendrilManager()
        manager.running = True

        with self.assertRaises(TestException):
            manager.listener(acceptor, wrapper)

        self.assertFalse(mock_sleep.called)
        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_STREAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1),
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
        ])
        wrapper.assert_called_once_with(mock_socket.return_value)
        wrapped_sock.assert_has_calls([
            mock.call.listen(1024),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        self.assertFalse(mock_TCPTendril.called)
        self.assertFalse(acceptor.called)
        self.assertFalse(mock_track_tendril.called)
Esempio n. 13
0
    def test_listener_wrapper(self, mock_UDPTendril, mock_track_tendril,
                              mock_socket):
        wrapped_sock = mock.Mock(**{
            'recvfrom.side_effect': TestException(),
        })
        wrapper = mock.Mock(return_value=wrapped_sock)
        acceptor = mock.Mock()
        manager = udp.UDPTendrilManager()
        manager.running = True

        with self.assertRaises(TestException):
            manager.listener(acceptor, wrapper)

        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_DGRAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
        ])
        wrapper.assert_called_once_with(mock_socket.return_value)
        wrapped_sock.assert_has_calls([
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        self.assertFalse(mock_UDPTendril.called)
        self.assertFalse(acceptor.called)
        self.assertFalse(mock_track_tendril.called)
Esempio n. 14
0
    def test_listener_wrapper(self, mock_UDPTendril, mock_track_tendril,
                              mock_socket):
        wrapped_sock = mock.Mock(**{
            'recvfrom.side_effect': TestException(),
        })
        wrapper = mock.Mock(return_value=wrapped_sock)
        acceptor = mock.Mock()
        manager = udp.UDPTendrilManager()
        manager.running = True

        with self.assertRaises(TestException):
            manager.listener(acceptor, wrapper)

        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_DGRAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
        ])
        wrapper.assert_called_once_with(mock_socket.return_value)
        wrapped_sock.assert_has_calls([
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        self.assertFalse(mock_UDPTendril.called)
        self.assertFalse(acceptor.called)
        self.assertFalse(mock_track_tendril.called)
Esempio n. 15
0
    def test_listener_rejector(self, mock_UDPTendril, mock_track_tendril,
                               mock_socket):
        mock_socket.return_value.recvfrom.side_effect = [
            ('msg1', ('127.0.0.2', 8082)),
            ('msg2', ('127.0.0.3', 8083)),
            ('msg3', ('127.0.0.4', 8084)),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
        ]
        tendrils = [mock.Mock(), mock.Mock(), mock.Mock()]
        mock_UDPTendril.side_effect = tendrils[:]
        acceptor = mock.Mock(side_effect=application.RejectConnection())
        manager = udp.UDPTendrilManager()
        manager.running = True

        with self.assertRaises(TestException):
            manager.listener(acceptor, None)

        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_DGRAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        mock_UDPTendril.assert_has_calls([
            mock.call(manager, ('127.0.0.1', 8080), ('127.0.0.2', 8082)),
            mock.call(manager, ('127.0.0.1', 8080), ('127.0.0.3', 8083)),
            mock.call(manager, ('127.0.0.1', 8080), ('127.0.0.4', 8084)),
        ])
        acceptor.assert_has_calls([
            mock.call(tendrils[0]),
            mock.call(tendrils[1]),
            mock.call(tendrils[2]),
        ])
        self.assertFalse(mock_track_tendril.called)
        self.assertFalse(tendrils[0]._recv_frameify.called)
        self.assertFalse(tendrils[1]._recv_frameify.called)
        self.assertFalse(tendrils[2]._recv_frameify.called)
Esempio n. 16
0
    def test_listener_acceptor_badclose(self, mock_TCPTendril,
                                        mock_track_tendril, mock_socket,
                                        mock_sleep):
        clis = [
            mock.Mock(**{
                'close.side_effect': socket.error(),
            }),
            mock.Mock(**{
                'close.side_effect': socket.error(),
            }),
            mock.Mock(**{
                'close.side_effect': socket.error(),
            })
        ]
        mock_socket.return_value.accept.side_effect = [
            (clis[0], ('127.0.0.2', 8082)),
            (clis[1], ('127.0.0.3', 8083)),
            (clis[2], ('127.0.0.4', 8084)),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
        ]
        tendrils = [mock.Mock(), mock.Mock(), mock.Mock()]
        mock_TCPTendril.side_effect = tendrils[:]
        acceptor = mock.Mock(side_effect=[
            mock.Mock(),
            TestException(),
            mock.Mock(),
        ])
        manager = tcp.TCPTendrilManager()
        manager.running = True

        with self.assertRaises(TestException):
            manager.listener(acceptor, None)

        self.assertFalse(mock_sleep.called)
        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_STREAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1),
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
            mock.call.listen(1024),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        mock_TCPTendril.assert_has_calls([
            mock.call(manager, clis[0], ('127.0.0.2', 8082)),
            mock.call(manager, clis[1], ('127.0.0.3', 8083)),
            mock.call(manager, clis[2], ('127.0.0.4', 8084)),
        ])
        acceptor.assert_has_calls([
            mock.call(tendrils[0]),
            mock.call(tendrils[1]),
            mock.call(tendrils[2]),
        ])
        self.assertFalse(clis[0].close.called)
        clis[1].close.assert_called_once_with()
        self.assertFalse(clis[2].close.called)
        mock_track_tendril.assert_has_calls([
            mock.call(tendrils[0]),
            mock.call(tendrils[2]),
        ])
        tendrils[0]._start.assert_called_once_with()
        self.assertFalse(tendrils[1]._start.called)
        tendrils[2]._start.assert_called_once_with()
Esempio n. 17
0
    def test_listener_err_thresh(self, mock_TCPTendril, mock_track_tendril,
                                 mock_socket, mock_sleep):
        clis = [mock.Mock(), mock.Mock(), mock.Mock()]
        mock_socket.return_value.accept.side_effect = [
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            (clis[0], ('127.0.0.2', 8082)),
            (clis[1], ('127.0.0.3', 8083)),
            (clis[2], ('127.0.0.4', 8084)),
            TestException(),
            TestException(),
            TestException(),
        ]
        tendrils = [mock.Mock(), mock.Mock(), mock.Mock()]
        mock_TCPTendril.side_effect = tendrils[:]
        acceptor = mock.Mock(side_effect=[
            mock.Mock(),
            TestException(),
            mock.Mock(),
        ])
        manager = tcp.TCPTendrilManager()
        manager.running = True

        with self.assertRaises(TestException):
            manager.listener(acceptor, None)

        self.assertFalse(mock_sleep.called)
        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_STREAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1),
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
            mock.call.listen(1024),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.accept(),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        mock_TCPTendril.assert_has_calls([
            mock.call(manager, clis[0], ('127.0.0.2', 8082)),
            mock.call(manager, clis[1], ('127.0.0.3', 8083)),
            mock.call(manager, clis[2], ('127.0.0.4', 8084)),
        ])
        acceptor.assert_has_calls([
            mock.call(tendrils[0]),
            mock.call(tendrils[1]),
            mock.call(tendrils[2]),
        ])
        self.assertFalse(clis[0].close.called)
        clis[1].close.assert_called_once_with()
        self.assertFalse(clis[2].close.called)
        mock_track_tendril.assert_has_calls([
            mock.call(tendrils[0]),
            mock.call(tendrils[2]),
        ])
        tendrils[0]._start.assert_called_once_with()
        self.assertFalse(tendrils[1]._start.called)
        tendrils[2]._start.assert_called_once_with()
Esempio n. 18
0
    def test_listener_rejector(self, mock_UDPTendril, mock_track_tendril,
                               mock_socket):
        mock_socket.return_value.recvfrom.side_effect = [
            ('msg1', ('127.0.0.2', 8082)),
            ('msg2', ('127.0.0.3', 8083)),
            ('msg3', ('127.0.0.4', 8084)),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
            TestException(),
        ]
        tendrils = [mock.Mock(), mock.Mock(), mock.Mock()]
        mock_UDPTendril.side_effect = tendrils[:]
        acceptor = mock.Mock(side_effect=application.RejectConnection())
        manager = udp.UDPTendrilManager()
        manager.running = True

        with self.assertRaises(TestException):
            manager.listener(acceptor, None)

        mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_DGRAM)
        mock_socket.return_value.assert_has_calls([
            mock.call.bind(('', 0)),
            mock.call.getsockname(),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.recvfrom(4096),
            mock.call.close(),
        ])
        self.assertEqual(manager.local_addr, ('127.0.0.1', 8080))
        mock_UDPTendril.assert_has_calls([
            mock.call(manager, ('127.0.0.1', 8080), ('127.0.0.2', 8082)),
            mock.call(manager, ('127.0.0.1', 8080), ('127.0.0.3', 8083)),
            mock.call(manager, ('127.0.0.1', 8080), ('127.0.0.4', 8084)),
        ])
        acceptor.assert_has_calls([
            mock.call(tendrils[0]),
            mock.call(tendrils[1]),
            mock.call(tendrils[2]),
        ])
        self.assertFalse(mock_track_tendril.called)
        self.assertFalse(tendrils[0]._recv_frameify.called)
        self.assertFalse(tendrils[1]._recv_frameify.called)
        self.assertFalse(tendrils[2]._recv_frameify.called)