mirror of
https://github.com/python/cpython.git
synced 2025-11-03 03:22:27 +00:00
asyncio: sync with Tulip
* Tulip issue #183: log socket events in debug mode - Log most important socket events: socket connected, new client, connection reset or closed by peer (EOF), etc. - Log time elapsed in DNS resolution (getaddrinfo) - Log pause/resume reading - Log time of SSL handshake - Log SSL handshake errors - Add a __repr__() method to many classes * Fix ProactorEventLoop() in debug mode. ProactorEventLoop._make_self_pipe() doesn't call call_soon() directly because it checks for the current loop which fails, because the method is called to build the event loop. * Cleanup _ProactorReadPipeTransport constructor. Not need to set again _read_fut attribute to None, it is already done in the base class.
This commit is contained in:
parent
8ebeb03740
commit
e912e652f8
7 changed files with 219 additions and 29 deletions
|
|
@ -358,16 +358,17 @@ class BaseProactorEventLoopTests(test_utils.TestCase):
|
|||
self.loop = EventLoop(self.proactor)
|
||||
self.set_event_loop(self.loop, cleanup=False)
|
||||
|
||||
@mock.patch.object(BaseProactorEventLoop, 'call_soon')
|
||||
@mock.patch.object(BaseProactorEventLoop, '_call_soon')
|
||||
@mock.patch.object(BaseProactorEventLoop, '_socketpair')
|
||||
def test_ctor(self, socketpair, call_soon):
|
||||
def test_ctor(self, socketpair, _call_soon):
|
||||
ssock, csock = socketpair.return_value = (
|
||||
mock.Mock(), mock.Mock())
|
||||
loop = BaseProactorEventLoop(self.proactor)
|
||||
self.assertIs(loop._ssock, ssock)
|
||||
self.assertIs(loop._csock, csock)
|
||||
self.assertEqual(loop._internal_fds, 1)
|
||||
call_soon.assert_called_with(loop._loop_self_reading)
|
||||
_call_soon.assert_called_with(loop._loop_self_reading, (),
|
||||
check_loop=False)
|
||||
|
||||
def test_close_self_pipe(self):
|
||||
self.loop._close_self_pipe()
|
||||
|
|
|
|||
|
|
@ -1092,15 +1092,15 @@ class SelectorSslTransportTests(test_utils.TestCase):
|
|||
self.sslsock.do_handshake.side_effect = ssl.SSLWantReadError
|
||||
transport = _SelectorSslTransport(
|
||||
self.loop, self.sock, self.protocol, self.sslcontext)
|
||||
transport._on_handshake()
|
||||
self.loop.assert_reader(1, transport._on_handshake)
|
||||
transport._on_handshake(None)
|
||||
self.loop.assert_reader(1, transport._on_handshake, None)
|
||||
|
||||
def test_on_handshake_writer_retry(self):
|
||||
self.sslsock.do_handshake.side_effect = ssl.SSLWantWriteError
|
||||
transport = _SelectorSslTransport(
|
||||
self.loop, self.sock, self.protocol, self.sslcontext)
|
||||
transport._on_handshake()
|
||||
self.loop.assert_writer(1, transport._on_handshake)
|
||||
transport._on_handshake(None)
|
||||
self.loop.assert_writer(1, transport._on_handshake, None)
|
||||
|
||||
def test_on_handshake_exc(self):
|
||||
exc = ValueError()
|
||||
|
|
@ -1108,7 +1108,7 @@ class SelectorSslTransportTests(test_utils.TestCase):
|
|||
transport = _SelectorSslTransport(
|
||||
self.loop, self.sock, self.protocol, self.sslcontext)
|
||||
transport._waiter = asyncio.Future(loop=self.loop)
|
||||
transport._on_handshake()
|
||||
transport._on_handshake(None)
|
||||
self.assertTrue(self.sslsock.close.called)
|
||||
self.assertTrue(transport._waiter.done())
|
||||
self.assertIs(exc, transport._waiter.exception())
|
||||
|
|
@ -1119,7 +1119,7 @@ class SelectorSslTransportTests(test_utils.TestCase):
|
|||
transport._waiter = asyncio.Future(loop=self.loop)
|
||||
exc = BaseException()
|
||||
self.sslsock.do_handshake.side_effect = exc
|
||||
self.assertRaises(BaseException, transport._on_handshake)
|
||||
self.assertRaises(BaseException, transport._on_handshake, None)
|
||||
self.assertTrue(self.sslsock.close.called)
|
||||
self.assertTrue(transport._waiter.done())
|
||||
self.assertIs(exc, transport._waiter.exception())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue