mirror of
https://github.com/python/cpython.git
synced 2025-07-16 07:45:20 +00:00
Issue #27136: Fix DNS static resolution; don't use it in getaddrinfo
Patch by A. Jesse Jiryu Davis
This commit is contained in:
parent
7d7a11b5d7
commit
f1c6fa9866
6 changed files with 116 additions and 163 deletions
|
@ -343,9 +343,11 @@ class BaseSelectorEventLoopTests(test_utils.TestCase):
|
|||
|
||||
f = self.loop.sock_connect(sock, ('127.0.0.1', 8080))
|
||||
self.assertIsInstance(f, asyncio.Future)
|
||||
self.assertEqual(
|
||||
(f, sock, ('127.0.0.1', 8080)),
|
||||
self.loop._sock_connect.call_args[0])
|
||||
self.loop._run_once()
|
||||
future_in, sock_in, address_in = self.loop._sock_connect.call_args[0]
|
||||
self.assertEqual(future_in, f)
|
||||
self.assertEqual(sock_in, sock)
|
||||
self.assertEqual(address_in, ('127.0.0.1', 8080))
|
||||
|
||||
def test_sock_connect_timeout(self):
|
||||
# asyncio issue #205: sock_connect() must unregister the socket on
|
||||
|
@ -359,6 +361,7 @@ class BaseSelectorEventLoopTests(test_utils.TestCase):
|
|||
|
||||
# first call to sock_connect() registers the socket
|
||||
fut = self.loop.sock_connect(sock, ('127.0.0.1', 80))
|
||||
self.loop._run_once()
|
||||
self.assertTrue(sock.connect.called)
|
||||
self.assertTrue(self.loop.add_writer.called)
|
||||
self.assertEqual(len(fut._callbacks), 1)
|
||||
|
@ -376,7 +379,10 @@ class BaseSelectorEventLoopTests(test_utils.TestCase):
|
|||
sock = mock.Mock()
|
||||
sock.fileno.return_value = 10
|
||||
|
||||
self.loop._sock_connect(f, sock, ('127.0.0.1', 8080))
|
||||
resolved = self.loop.create_future()
|
||||
resolved.set_result([(socket.AF_INET, socket.SOCK_STREAM,
|
||||
socket.IPPROTO_TCP, '', ('127.0.0.1', 8080))])
|
||||
self.loop._sock_connect(f, sock, resolved)
|
||||
self.assertTrue(f.done())
|
||||
self.assertIsNone(f.result())
|
||||
self.assertTrue(sock.connect.called)
|
||||
|
@ -402,9 +408,13 @@ class BaseSelectorEventLoopTests(test_utils.TestCase):
|
|||
sock.connect.side_effect = BlockingIOError
|
||||
sock.getsockopt.return_value = 0
|
||||
address = ('127.0.0.1', 8080)
|
||||
resolved = self.loop.create_future()
|
||||
resolved.set_result([(socket.AF_INET, socket.SOCK_STREAM,
|
||||
socket.IPPROTO_TCP, '', address)])
|
||||
|
||||
f = asyncio.Future(loop=self.loop)
|
||||
self.loop._sock_connect(f, sock, address)
|
||||
self.loop._sock_connect(f, sock, resolved)
|
||||
self.loop._run_once()
|
||||
self.assertTrue(self.loop.add_writer.called)
|
||||
self.assertEqual(10, self.loop.add_writer.call_args[0][0])
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue